[英]Where do I put the onTouchListener method in an android project?
[英]OnTouch doesnt work where do I have to put the onTouchlistener
您好,所以我有一個主類,它設置了一個新的View,它是我制作的繪畫類,並且其中有一個ondraw方法,該方法從另一個類中繪制一個Rectangle。 我希望能夠通過觸摸屏幕來移動矩形,所以我會使用ontouchlistener,但是無論我單擊屏幕還是在模擬器上拖動鼠標,矩形都不會移動,該方法似乎無法正常工作我該如何糾正呢?
// Painting class
public class Painting extends View implements OnTouchListener{
myRectangle player = new myRectangle();
public Painting(Context context) {
super(context);
// TODO Auto-generated constructor stub
DisplayMetrics dm = new DisplayMetrics();
((Activity) getContext()).getWindowManager().getDefaultDisplay().getMetrics(dm);
player.size = (int) (dm.widthPixels / 7.5);
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
player.drawBlock(canvas);
}
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
player.xpos = (int) event.getX();
player.ypos = (int) event.getY();
return false;
}
}
我的主班:
public class Main extends Activity {
Painting v;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
v = new Painting(Main.this);
v.setOnTouchListener((OnTouchListener) Main.this);
setContentView(v);
}
這是我的Rectangle類:
public class myRectangle{
public int size;
public int xpos;
public double ypos;
public int instrY;
private Paint paint = new Paint();
public myRectangle(){
paint.setStyle(Paint.Style.FILL);
paint.setColor(Color.parseColor("#34495E"));
}
public void drawBlock(Canvas c){
c.drawRect(xpos, (float) ypos, size, size, paint);
}
}
您沒有關聯要在onCreate()中實現的OnTouchListener。 您指的是Main的一些OnTouchListener。 因此,您不執行在繪畫中實現的onTouch方法。
添加“ setOnTouchListener(this);” 內部繪畫課。
像下面的代碼一樣,
// Painting class
public class Painting extends View implements OnTouchListener{
myRectangle player = new Rectangle();
public Painting(Context context) {
super(context);
// TODO Auto-generated constructor stub
DisplayMetrics dm = new DisplayMetrics();
((Activity) getContext()).getWindowManager().getDefaultDisplay().getMetrics(dm);
player.size = (int) (dm.widthPixels / 7.5);
setOnTouchListener(this);
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
player.drawBlock(canvas);
}
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
player.xpos = (int) event.getX();
player.ypos = (int) event.getY();
return false;
}
並刪除行“ v.setOnTouchListener((OnTouchListener)Main.this);” 從活動類。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.