`
weihe6666
  • 浏览: 430940 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Bitmap and DrawPoint

阅读更多
Bitmap and DrawPoint

  Android UI 中有时需要画Bitmap,那么如何画Bitmap?
  • 利用已有资源初始化Bitmap。

 public void fillPointArrays(int color,Drawable drawable) {
        Bitmap bitmap = Bitmap.createBitmap(pointSize, pointSize, Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(bitmap);
        drawable.setBounds(0, 0, pointSize, pointSize);
        drawable.draw(canvas);
        pointArray[color] = bitmap;
    }

 Resources r = this.getContext().getResources();
 fillPointArrays(GREEN,r.getDrawable(R.drawable.green_point));



  • 屏幕触摸画点,利用已经初始化的Bitmap画点。


@Override
	public boolean onTouchEvent(MotionEvent event) {
		//获得触摸点的坐标
		point = newPoint(event.getX(), event.getY());
		
		refressCanvas();
		return true;
	}

onTouchEvent(MotionEvent event) 重载了View()的函数,用来监听屏幕的触摸,从event事件中可以获得触摸点的坐标。

  • 根据触摸点的坐标,画出触摸的点。

    //画点
    private void drawPoint(Canvas canvas){
    	canvas.drawBitmap(pointArray[0],point.x*pointSize+xOffset,point.y*pointSize+yOffset,paint);	
    }

//根据触摸点坐标找到对应点
	private Point newPoint(Float x, Float y){
		Point p = new Point(0, 0);
		for (int i = 0; i < maxX; i++) {
			if ((i * pointSize + xOffset) <= x
					&& x < ((i + 1) * pointSize + xOffset)) {
				p.setX(i);
			}
		}
		for (int i = 0; i < maxY; i++) {
			if ((i * pointSize + yOffset) <= y
					&& y < ((i + 1) * pointSize + yOffset)) {
				p.setY(i);
			}
		}
		return p;
		
		
	}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics