gpt4 book ai didi

android - 图像未在 "onTouch"方法中显示

转载 作者:行者123 更新时间:2023-11-30 02:57:47 24 4
gpt4 key购买 nike

我想举一个例子,用户触摸屏幕时应该显示可绘制的图像。

我用过 Canvas ,但屏幕总是显示空白。下面是我的代码:

    public class MainActivity extends Activity implements OnTouchListener {

MySurfaceView mySurfaceView;
float x, y;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mySurfaceView = new MySurfaceView(MainActivity.this);
mySurfaceView.setOnTouchListener(this);
x = 0;
y = 0;
setContentView(mySurfaceView);
}

@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
x = event.getX();
y = event.getY();
return false;
}

@Override
protected void onResume() {
mySurfaceView.resume();
super.onResume();
}

@Override
protected void onPause() {
mySurfaceView.pause();
super.onPause();
}

class MySurfaceView extends SurfaceView implements Runnable {

SurfaceHolder mSurfaceHolder;
Thread mThread;
boolean isRunning = true;

public MySurfaceView(Context context) {
super(context);
mSurfaceHolder = getHolder();
}

@Override
public void run() {
while (isRunning) {
if (!mSurfaceHolder.getSurface().isValid()) {
continue;
}
Canvas canvas = mSurfaceHolder.lockCanvas();
canvas.drawRGB(02, 02, 150);
if (x != 0 || y != 0) {
Bitmap test = BitmapFactory.decodeResource(getResources(),
R.drawable.ic_launcher);
canvas.drawBitmap(test, x, y, null);
}
mSurfaceHolder.unlockCanvasAndPost(canvas);
}
}

public void pause() {
isRunning = false;
while (true) {
try {
mThread.join();
} catch (Exception e) {
e.printStackTrace();
}
break;
}
mThread = null;
}

public void resume() {
isRunning = true;
mThread = new Thread();
mThread.start();
}

}

}

最佳答案

将可运行对象添加到 mThread。

public void resume() {
isRunning = true;
mThread = new Thread(this);
mThread.start();
}

关于android - 图像未在 "onTouch"方法中显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23011815/

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