我正在尝试在触摸屏幕时启动新活动。背景是一个已调整大小的位图。但是没有检测到触摸。这是我的代码:
public class DispCover extends Activity实现OnTouchListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
bg = new DispCoverG(this);
setContentView(bg);
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
bg.pause();
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
bg.resume();
}
float dtp(float dp,Context context){
Resources resources = context.getResources();
DisplayMetrics metrics = resources.getDisplayMetrics();
float px = dp * (metrics.densityDpi/160f);
return px;
}
@Override
public boolean onTouch(View v, MotionEvent e) {
int action = e.getAction();
int xd = (int) e.getX();
int yd = (int) e.getY();
int x = (int) dtp(xd,this);
int y = (int) dtp(yd,this);
switch(action){
case MotionEvent.ACTION_DOWN:
startActivity(new Intent(//));
break;
}
return true;
}
public class DispCoverG extends SurfaceView implements Runnable{
public DispCoverG(Context context) {
//code
}
public Bitmap getResizedBitmap(Bitmap bm, int newHeight, int newWidth)
{
//code
}
public void pause(){
//code
}
public void resume(){
//code
}
@Override
public void run() {
//code
}
}
}
};
提前致谢。
答案 0 :(得分:4)
在setContentView(bg);
bg.setOnTouchListener(this);
OR
bg.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
int action = event.getAction();
switch(action){
case MotionEvent.ACTION_DOWN:
startActivity(new Intent(YourActivity.this,NewActivity.class));
break;
}
return true;
}
});
在Activity中实施OnTouchListener
。
答案 1 :(得分:0)
另一种方法是直接在视图中捕获MotionEvents:
public class DispCoverG extends SurfaceView implements Runnable{
....
@Override
public boolean onTouchEvent(MotionEvent event){
// to dispatch click / long click event,
// you must pass the event to it's default callback View.onTouchEvent
boolean defaultResult = super.onTouchEvent(event);
...
switch (event.getAction()){
case MotionEvent.ACTION_DOWN:
Intent intent = new Intent(DispCover.this, XActivity.class);
startActivity(intent);
break;
}
return defaultResult;
//return true; //this should work if you need just ACTION_DOWN
}
}