android-->图像旋转遇到的问题
来源:互联网 发布:知乎引流 编辑:程序博客网 时间:2024/04/29 06:34
先上代码:
package Android.App.chapter05;import android.content.Context;import android.graphics.Bitmap;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Matrix;import android.graphics.Paint;import android.graphics.drawable.BitmapDrawable;import android.view.KeyEvent;import android.view.SurfaceHolder;import android.view.SurfaceHolder.Callback;import android.view.SurfaceView;public class MySurfaceView extends SurfaceView implements Callback, Runnable { private Bitmap pic ;private Matrix matrix = null ;public SurfaceHolder sfh = null ;public Paint paint = null ;public Canvas canvas = null ;public int pic_w ,pic_h ;public float angle = 0.0f;public Context context ;public MySurfaceView(Context context) {super(context);this.context =context ;//这里先前一直得到的是一个空值。解决办法是将默认的drawable去掉了后改成了一个drawable或者新建一个raw文件存放图片资源 pic = ((BitmapDrawable) context.getResources().getDrawable(R.drawable.qq)).getBitmap(); matrix = new Matrix() ;sfh = getHolder() ;sfh.addCallback(this);paint = new Paint(); //paint.setStyle(Style.STROKE); //这里表面设置的是空心在清屏的时候要去掉pic_w = pic.getWidth() ;pic_h = pic.getHeight() ;}public void paint() {super.onDraw(canvas);canvas = sfh.lockCanvas() ;paint.setColor(Color.RED);canvas.drawRect(0, 0, getWidth(),getHeight(), paint);matrix.reset() ;matrix.setRotate(angle);Bitmap pic2 = Bitmap.createBitmap(pic, 0, 0, pic_w, pic_h,matrix , true);canvas.drawBitmap(pic2,(320-pic_w)/2, 10 , paint);pic2 = null ;sfh.unlockCanvasAndPost(canvas);}public boolean onKeyDown(int keyCode, KeyEvent event) {if (keyCode == KeyEvent.KEYCODE_DPAD_LEFT) {angle --;}if (keyCode == KeyEvent.KEYCODE_DPAD_RIGHT) {angle ++;}return true;}@SuppressWarnings("static-access")public void run() { while(!Thread.currentThread().interrupted()) { paint(); try {Thread.sleep(100);} catch (InterruptedException e) {e.printStackTrace();} }}public void surfaceCreated(SurfaceHolder holder) { new Thread(this).start() ;}public void surfaceChanged(SurfaceHolder holder, int format, int width,int height) {}public void surfaceDestroyed(SurfaceHolder holder) {}}
问题就在注释的地方了!
然后在activity中调用这个类显示,并给出按键处理!
package Android.App.chapter05;import android.app.Activity;import android.os.Bundle;import android.view.KeyEvent;public class AndroidApp extends Activity {MySurfaceView view ; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); view = new MySurfaceView(this) ; setContentView(view); } @Override public boolean onKeyUp(int keyCode, KeyEvent event) { return false ; } public boolean onKeyDown(int keyCode, KeyEvent event) { if (view == null) {return false ;} else {view.onKeyDown(keyCode, event) ;} return true; }}
图片就不上了,就是一个点击左右键然后图片旋转案例!
- android-->图像旋转遇到的问题
- android图像像素提取中遇到的算法问题
- 1055:图像旋转问题
- 1001: 图像旋转问题
- android照相机竖屏显示的图像出现旋转的问题,但成像被拉伸了
- android调用系统相机的方法,并且解决三星手机遇到的问题,图片旋转、压缩
- android旋转图像Matrix
- Android OpenCV 旋转图像
- 问题 B: 图像旋转问题
- 问题 B: 图像旋转问题
- NDK 图像处理遇到的相关问题
- caffe处理医学图像遇到的问题
- Android遇到的问题
- android遇到的问题
- android遇到的问题
- 图像UIVIEW的旋转
- 图像的旋转 OpenCV
- 图像旋转的实现
- RED HAT linux认证课程大全
- 修复关于使用MyEclipse JSP Editor编辑JSP时光标乱跳的问题
- 关于android scroll滚动的问题
- OpenGL Basic Transformations - OpenGL 基础变换原理(1)
- sql语句获得时间的年月日
- android-->图像旋转遇到的问题
- 现在的天朝人纳!!.....
- ArcSDE和Geodatabase10.1抢先版谍照介绍(2)——ArcSDE10.1安装
- RQNOJ 能量项链
- 中文ubuntu里用户目录里的路径改成英文
- Templates(C++模板类)
- js的倒计时时钟代码
- Java中final的用法
- 使用Raphael 画图 之 路径