Android 为什么显示位图会有初始延迟
我正试图翻译一个Android 为什么显示位图会有初始延迟,android,handler,Android,Handler,我正试图翻译一个位图,所以我只是更新它的x和y,使它沿对角线移动以了解线程,但问题是当应用程序启动时,位图没有显示,我注意到延迟与我在处理程序的postDelayed方法中设置的时间有关,但我认为postDelayed方法应该只控制位图在屏幕上移动的速度,而不是我打开应用程序时位图显示的延迟 public class MainActivity extends Activity { Canvas canvas; InnerView innerView; Handler mHandler; Bit
位图
,所以我只是更新它的x和y,使它沿对角线移动以了解线程,但问题是当应用程序启动时,位图没有显示,我注意到延迟与我在处理程序的postDelayed方法中设置的时间有关,但我认为postDelayed方法应该只控制位图在屏幕上移动的速度,而不是我打开应用程序时位图显示的延迟
public class MainActivity extends Activity {
Canvas canvas;
InnerView innerView;
Handler mHandler;
Bitmap thisBitmap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
thisBitmap =
BitmapFactory.decodeResource(getResources(), R.drawable.my_image);
mHandler = new Handler();
innerView = new InnerView(this);
setContentView( innerView);
}
class InnerView extends SurfaceView implements Runnable {
Thread ourThread = null;
SurfaceHolder ourHolder;
Paint paint;
int posX = 100;
int posY = 100;
public InnerView (Context context) {
super(context);
ourHolder = getHolder();
paint = new Paint();
}
@Override
public void run() {
update
draw();
mHandler.postDelayed(this, 2000);
}
public void update() {
posX += 10;
posY += 10;
}
public void draw() {
if (ourHolder.getSurface().isValid()) {
canvas = ourHolder.lockCanvas();
canvas.drawColor(Color.BLACK);//the background
paint.setColor(Color.argb(255, 255, 255, 255));
canvas.drawBitmap( goodDotList[0], posX, posY, paint);
ourHolder.unlockCanvasAndPost(canvas);
}
}
}//END inner class: InnerView
}//END MainActivity class
最初,您不会在屏幕上绘制位图。你只能在handler上画。因此,在调用处理程序之前,不会绘制位图。我在onCreate的末尾添加了innerView.draw(),但仍然存在延迟…我不知道它仍然不能工作,因为在
onCreate
期间,ourHolder.getSurface().isValid()
仍然返回false。将其添加到surfaceCreated事件中。我如何再次制作一个大帖子,就像我点击“提问”按钮时的第一篇帖子一样,因为当我按下“输入”按钮时很烦人。它发布评论有一个标记为“提问”的按钮