gpt4 book ai didi

android - 在android中触摸和拖动图像

转载 作者:IT老高 更新时间:2023-10-28 23:18:37 26 4
gpt4 key购买 nike

我正在研究一些示例,其中我想在 Android 中拖动与触摸对应的图像。有人知道我该怎么做吗?

最佳答案

public class TouchBall extends Activity {


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

int w=getWindowManager().getDefaultDisplay().getWidth()-25;
int h=getWindowManager().getDefaultDisplay().getHeight()-25;

BallView ballView=new BallView(this,w,h);
setContentView(ballView);
}


}
public class BallView extends SurfaceView implements SurfaceHolder.Callback {

private Bitmap bitmap ;
private MyThread thread;
private int x=20,y=20;int width,height;

public BallView(Context context,int w,int h) {
super(context);

width=w;
height=h;
thread=new MyThread(getHolder(),this);
getHolder().addCallback(this);
setFocusable(true);
}

@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);

bitmap =BitmapFactory.decodeResource(getResources(), R.drawable.ball_green);
canvas.drawColor(Color.BLUE);//To make background
canvas.drawBitmap(bitmap,x-(bitmap.getWidth()/2),y-(bitmap.getHeight()/2),null);


}

@Override
public boolean onTouchEvent(MotionEvent event) {

x=(int)event.getX();
y=(int)event.getY();

if(x<25)
x=25;
if(x> width)
x=width;
if(y <25)
y=25;
if(y > 405)
y=405;
return true;
}

@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,int height) {
// TODO Auto-generated method stub

}

@Override
public void surfaceCreated(SurfaceHolder holder) {

thread.startrun(true);
thread.start();

}

@Override
public void surfaceDestroyed(SurfaceHolder holder) {


thread.startrun(false);
thread.stop();

}
}

线程:

public class MyThread extends Thread {

private SurfaceHolder msurfaceHolder;
private BallView mballView;
private boolean mrun =false;

public MyThread(SurfaceHolder holder, BallView ballView) {

msurfaceHolder = holder;
mballView=ballView;
}

public void startrun(boolean run) {

mrun=run;
}

@Override
public void run() {

super.run();
Canvas canvas;
while (mrun) {
canvas=null;
try {
canvas = msurfaceHolder.lockCanvas(null);
synchronized (msurfaceHolder) {
mballView.onDraw(canvas);
}
} finally {
if (canvas != null) {
msurfaceHolder.unlockCanvasAndPost(canvas);
}
}
}
}

}

关于android - 在android中触摸和拖动图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4255859/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com