希望这是完成我的应用程序的最后一步。我需要在画布中制作一个可点击的位图,该位图将调用一个将播放视频的新活动(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
}