android 图形图像常用方法
1、// 获取屏的宽度和高度
WindowManager windowManager = getWindowManager();
Display display = windowManager.getDefaultDisplay();
screenWidth = display.getWidth();
screenHeight = display.getHeight();
2、 // 获取到这个图片的原始宽度和高度
int picWidth = opt.outWidth;
int picHeight = opt.outHeight;
3、缩放图片 防止内存溢出
BitmapFactory.Options opt = new BitmapFactory.Options();
// 这个isjustdecodebounds很重要
opt.inJustDecodeBounds = true;
bm = BitmapFactory.decodeFile(
"/mnt/sdcard/wandoujia/image/city_jiujiang.jpg", opt);
// 获取到这个图片的原始宽度和高度
int picWidth = opt.outWidth;
int picHeight = opt.outHeight;
// 获取屏的宽度和高度
WindowManager windowManager = getWindowManager();
Display display = windowManager.getDefaultDisplay();
screenWidth = display.getWidth();
screenHeight = display.getHeight();
float width = (screenWidth - picWidth) / 2;
float height = (screenHeight - picHeight) / 2;
// isSampleSize是表示对图片的缩放程度,比如值为2图片的宽度和高度都变为以前的1/2
opt.inSampleSize = 1;
// 根据屏的大小和图片大小计算出缩放比例
if (picHeight > screenHeight) {
if (picWidth > screenWidth)
opt.inSampleSize = picWidth / screenWidth;
} else {
if (picHeight > screenHeight)
opt.inSampleSize = picHeight / screenHeight;
}
// 这次再真正地生成一个有像素的,经过缩放了的bitmap
opt.inJustDecodeBounds = false;
bm = BitmapFactory.decodeFile(
"/mnt/sdcard/wandoujia/image/city_jiujiang.jpg", opt);
Bitmap adapt = Bitmap.createBitmap(bm);
4、根据颜色取值
// colorNumber = adapt.getPixel((int)eventgetX(), (int)eventgetY());
颜色判断区域 if(colorNumber== -72223) { showDialog(DIALOG_COORDINATE_ID);
* }else if( colorNumber == -1510660){ showDialog(DIALOG_COORDINATE_ID);
* }
5、构建不规则图片区域
// 坐标区域
Region area = new Region();
p.moveTo(x,y)//起点
p.lineTo(x,y)//直线
p.close();//完成
RectF r2 = new RectF();
p.computeBounds(r2, true);
// 构建多边形区域
area.setPath(p, new Region((int) r2.left, (int) r2.top,
(int) r2.right, (int) r2.bottom));
area.contains((int) event.getX(), (int) eventgetY()));//判断是否在此区域
6、OnTouchEvent事件
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:.//按下
beginX = (int) event.getX() + scrollX;// 图片坐标
beginY = (int) event.getY() + scrollY;
beginX = (int) event.getX() 手触屏幕坐标
beginY = (int) event.getY()
case MotionEvent.ACTION_MOVE://移动
case MotionEvent.ACTION_UP://抬起
/**
* 图片滑动
*
* */
public void handleScroll(float distX, float distY) {
if (distX > 6.0) {
if (scrollX < 450) {
scrollX += 15;
}
} else if (distX < -6.0) {
if (scrollX >= 15) {
scrollX -= 15;
}
}
if (distY > 6.0) {
if (scrollY < 600) {
scrollY += 15;
}
} else if (distY < -6.0) {
if (scrollY >= 15) {
scrollY -= 15;
}
}
invalidate();// 调用重绘
}
}