用画布使位图可单击。

| 希望这是完成我的应用程序的最后一步。我需要在可单击的画布内创建一个位图,该位图将调用将要播放视频(mp4)的新活动,或者在当前活动中将其播放视频。 显示画布和位图的类是我反复使用的类,用于显示缩略图的完整图像。图片ID是通过Intent传递的。这是完整图像活动的代码(我是一个菜鸟,使用此站点和其他站点一次将我的代码拼凑在一起,因此如果不干净,我深表歉意):
public class full_image extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(new BitmapView(this));
    getWindow().setBackgroundDrawableResource(R.drawable.bground);
    getWindow().setWindowAnimations(0);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,                           WindowManager.LayoutParams.FLAG_FULLSCREEN);
    }

class BitmapView extends View {
    public BitmapView(Context context) {
        super(context);
    }

    @Override
    public void onDraw(Canvas canvas) {
        int imgid = getIntent().getIntExtra(\"Full\",0);
        Bitmap fullimage = BitmapFactory.decodeResource(getResources(),imgid);
        Bitmap playButton = BitmapFactory.decodeResource(getResources(), R.drawable.bt_play); //Added for Video
        Display display = getWindowManager().getDefaultDisplay();
        int fpWidth = fullimage.getWidth();
        int fpHeight = fullimage.getHeight();
        int playWidth = playButton.getWidth(); 
        int playHeight = playButton.getHeight(); 
        int screenWidth = display.getWidth();
        int screenHeight = display.getHeight();
        int leftPoint = screenWidth/2 - fpWidth/2;
        int topPoint = screenHeight/2 - fpHeight/2;
        int leftPlayPoint = screenWidth/2 - playWidth/2; 
        int topPlayPoint = screenHeight/2 - playHeight/2; 
        canvas.drawBitmap(fullimage,leftPoint,topPoint,null);
        canvas.drawBitmap(playButton,leftPlayPoint,topPlayPoint,null); 

    }
}  
}
如果可能的话,我只想要playButton来容纳onClickListener,但是如果更简单,我可以使整个画布都可点击(如果可能的话)。 我读了另一个建议使用TouchEvent的问题。我尝试过那条路线,但无法正常工作。这是正确的道路吗,我只需要更多地尝试它才能使其正常工作? 谢谢,J 其他内容: 这是我在另一个问题中发现的一段代码。我将把这些代码放在上面提供的代码中的什么位置。
public boolean onTouchEvent(MotionEvent event){
int action = event.getAction();
int x = event.getX()  // or getRawX();
int y = event.getY();

switch(action){
case MotionEvent.ACTION_DOWN:
    if (x >= xOfYourBitmap && x < (xOfYourBitmap + yourBitmap.getWidth())
            && y >= yOfYourBitmap && y < (yOfYourBitmap + yourBitmap.getHeight())) {
        //tada, if this is true, you\'ve started your click inside your bitmap
    }
    break;
}
}     
已邀请:
我认为我们无法在画布上的位图上设置onClick。 但是我们可以使用onTouch方法。并检查位图上的触摸或不使用触摸的x-y位置。 尝试在onTouch方法中使用此代码以获取位图...
if (x >= xOfYourBitmap && x < (xOfYourBitmap + yourBitmap.getWidth())
                && y >= yOfYourBitmap && y < (yOfYourBitmap + yourBitmap.getHeight())) {
            //tada, if this is true, you\'ve started your click inside your bitmap
        }
    

要回复问题请先登录注册