1

画面がタッチされたときに新しいアクティビティを開始しようとしています。背景はサイズ変更されたビットマップです。しかし、タッチは検出されません。これが私のコードです:

public class DispCover extends Activity implements 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アクティビティで実装します。

于 2012-07-19T09:06:47.700 に答える
0

もう 1 つの方法は、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 に答える