1

我正在尝试在触摸屏幕时开始一个新活动。背景是一个调整大小的位图。但未检测到触摸。这是我的代码:

公共类 DispCover 扩展 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

        }
    }
}

};

提前致谢。

4

2 回答 2

4

在下面写下代码setContentView(bg);

bg.setOnTouchListener(this);

或者

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;
    }
});

OnTouchListener在 Activity 中实现。

于 2012-07-19T09:06:47.700 回答
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
    }
}
于 2012-07-19T09:30:37.833 回答