Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android Matrix工具的使用

android Matrix工具的使用

編輯:關於Android編程

Matrix工具類是對圖形進行特效處理。

Matrix 是一個矩陣工具類,本身不能對圖形進行變換,可以與其他API來結合使用。

獲取Matrix對象,可以直接創建,可以從其他封裝了Matrix類中獲取,Transformation裡面就封裝了Matrix對象。

調用Matrix對象的方法可以對圖形圖像進行平移,縮放,旋轉,傾斜等。

需要將程序對Matrix所做的變換應用到指定圖像或組件上面。

下面是一個Matrix使用方法的例子,利用按鍵來控制Bitmap的傾斜和縮放。

class MyView extends View {
	/**源圖*/
	private Bitmap bitmap;
	/**Matrix對象*/
	private Matrix matrix = new Matrix();
	/**傾斜度*/
	public float ox = 0.0f;
	/**縮放度*/
	public float scale = 1.0f;
	/**源圖尺寸*/
	private int width, height;
	/**縮放還是傾斜*/
	private boolean isScale = false;

	public MyView(Context context, AttributeSet attrs) {
		super(context, attrs);
		//得到位圖
		bitmap = ((BitmapDrawable) this.getResources().getDrawable(
				R.drawable.ic_launcher)).getBitmap();
		width = bitmap.getWidth();
		height = bitmap.getHeight();
		//按鍵控制,首先要獲取到焦點
		this.setFocusable(true);
	}

	@SuppressLint("DrawAllocation")
	@Override
	protected void onDraw(Canvas canvas) {
		super.onDraw(canvas);
		//重置Matrix、傾斜狀態時恢復到源圖再進行縮放
		matrix.reset();
		if(isScale){
			//x/y軸同比放大縮小
			matrix.setScale(scale, scale);
		}else{
			
			matrix.setSkew(ox,ox);
		}
		//得到新圖
		Bitmap b = Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, true);
		//將程序對Matrix所做的變換應用到指定圖像或組件上面
		canvas.drawBitmap(b, matrix, null);
	}

	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		switch (keyCode) {
		case KeyEvent.KEYCODE_DPAD_LEFT://傾斜
			isScale=false;
			ox+=0.1;
			//刷新界面,view類也有該方法
			postInvalidate();
			break;
		case KeyEvent.KEYCODE_DPAD_RIGHT://傾斜
			isScale=false;
			ox-=0.1;
			postInvalidate();
			break;
		case KeyEvent.KEYCODE_DPAD_UP://放大
			isScale=true;
			if(scale<2.0){
				scale+=0.1;
			}
			postInvalidate();
			break;
		case KeyEvent.KEYCODE_DPAD_DOWN://縮小
			isScale=true;
			if(scale>0.5){
				scale-=0.1;
			}
			postInvalidate();
			break;

		default:
			break;
		}
		return super.onKeyDown(keyCode, event);
	}
}



  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved