0
我有两种颜色的ImageView源代码。我想触摸一个颜色并显示一条消息。我也做了以下但事情并不顺利,因为也许我用getDrawingCache它具有上显示正确的消息延迟的方法..如何使用Android中的触摸事件从像素获取ImageView的颜色
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ImageView img = (ImageView) findViewById(R.id.imageView);
img.setOnTouchListener(this);
ViewTreeObserver vto = img.getViewTreeObserver();
vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
public boolean onPreDraw() {
finalHeight = img.getMeasuredHeight();
finalWidth = img.getMeasuredWidth();
r = (finalHeight*0.2973)*0.8109;
centerx = finalWidth/2;
centery = finalHeight;
Log.e("hilength","Height: " + finalHeight + " Width: " + finalWidth);
img.buildDrawingCache();
bitmap = img.getDrawingCache();
return true;
}
});
我的触摸事件
@Override
public boolean onTouch(View v, MotionEvent event)
{
switch (v.getId())
{
case R.id.imageView:
Log.d("Tag", "X,Y : " + event.getX() + "," + event.getY());
int x = (int) event.getX();
int y = (int) event.getY();
int pixel = bitmap.getPixel(x,y);
if(pixel == Color.parseColor("#94e3f9"))
{
Toast.makeText(MainActivity.this, "Blue Color", Toast.LENGTH_SHORT).show();
}
if(pixel == Color.parseColor("#f0c828"))
{
Toast.makeText(MainActivity.this, "Yellow Color", Toast.LENGTH_SHORT).show();
}
break;
}
return true;
}
除以上我不确定是否需要ViewTreeObserver
事件x/Y的投影是什么意思? –
更新了答案 – TWiStErRob