Я прихожу с Java, это не будет «Перерисовать», я имею в виду, что он не будет перемещать мой растровый рисунок туда, где кто-то нажимает на экран. В моем коде нет ничего плохого, logcat ничего мне не говорит, странно, что вчера он работал нормально, но теперь по какой-то причине это не сработает.Моя программа не будет «Перерисовать()»
Activity.class
package com.example.alex.something;
import android.app.Activity;
import android.os.Bundle;
public class Animation extends Activity {
private AnimationThread a;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
a = new AnimationThread(this);
setContentView(a);
}
@Override
protected void onPause() {
super.onPause();
a.pause();
}
@Override
protected void onResume() {
super.onResume();
a.resume();
}
}
AnimationThread.class
package com.example.alex.something;
import android.content.Context;
import android.view.*;
import android.graphics.*;
public class AnimationThread extends SurfaceView implements Runnable{
private Thread thread = null;
private SurfaceHolder holder;
private Boolean runnable = false;
private Bitmap ball;
private float x,y;
public AnimationThread(Context context) {
super(context);
ball = BitmapFactory.decodeResource(getResources(),R.drawable.redball);
x=0; y=0;
holder = getHolder();
}
@Override
public void run() {
while(runnable==true){
if(!holder.getSurface().isValid()){
continue;
}
Canvas c = holder.lockCanvas();
c.drawBitmap(ball,x-ball.getWidth()/2,y-ball.getHeight()/2,null);
holder.unlockCanvasAndPost(c);
}
}
public void pause(){
runnable=false;
while(true){
try{
thread.join();
}
catch(InterruptedException e){
e.getStackTrace();
}
}
}
public void resume(){
runnable=true;
thread = new Thread(this);
thread.start();
}
public MotionListener getListener(){MotionListener a = new MotionListener(); return a;}
private class MotionListener implements OnTouchListener{
@Override
public boolean onTouch(View v, MotionEvent event) {
x= event.getX();
y= event.getY();
return false;
}
}
}
Опять же, насколько я знаю, что нет ничего плохого в мой код, может быть, кто-то более опытный могуществе быть в состоянии увидеть что-то, также возможно, что-то может быть неправильно с моим эмулятор, он работал хорошо вчера?
@Tom Это запущено в 'onResume()' в действии. – alenz316
@Tom Yea, я сделал это так, чтобы он мог «перекрасить» его в новое место, когда кто-то нажимает на экран, так как я не уверен, что у андроида есть метод перерисовки. –
@ alenz316 Да, уже замечен. Действительно скрыт. @AlexSmith Ваш метод 'AnimationThread # pause' выглядит действительно подозрительным ... почему существует бесконечный цикл? – Tom