- FrameLayout(用红色标记)
- 源ImageView(黑色)
- 带有OnTouchListener的对象(橙色)
通过带有OnTouchListener的对象,我想显示在图片视图(源ImageView)上填充的位图部分。
所以这不是问题,我像这样做:
Bitmap bt = Bitmap.createBitmap(sourceBitmap,event.getX(),event.getY(),250,250);
其中:
- sourceBitmap - 是添加到源ImageView的图像
- event.getX() / event.getY()是我开始绘制位图部分的坐标
- 250,250 - 是位图(部分)的大小。
结果是:
那么当我的带触摸监听器的对象到达边界时(我为橙色对象创建了这种可能性,可以使用Object.width()/2越界),问题就出现了。
所以在这种情况下:
我该如何实现这个结果:
其中部分的结果将是:
- 位图的一部分
- 第二部分是FrameLayout背景的颜色。
我目前尝试过的是:
public boolean onTouch(View view, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_MOVE:
//i want to draw bigger portion then corrds
int CurrentX = (int)view.getX() - (view.getWidth());
int CurrentY = (int)view.getY() - (view.getHeight());
//case,when object is going out of border
if(CurrentX <= 0)
{
Paint paint = new Paint();
paint.setStyle( Style.FILL );
paint.setColor( Color.RED );
mBitmap = Bitmap.CreateBitmap(sourceBitmap,(int)view.getX() + Math.abs(CurrentX),(int)view.getY(),250,250);
Canvas canvas = new Canvas(mBitmap);
canvas.drawBitmap(mBitmap,new Rect((int)view.getX()+Math.abs(CurrentX), (int)view.getY(),250-Math.abs(CurrentX),250),new RectF(Math.abs(CurrentX), 0, 250,250),paint);
}
break;
}
return true;
}
}
有什么建议吗?谢谢!