Android 如何在程序中使用线程?
我想用我尝试过的线程在屏幕上移动图像,但由于线程的代码不正确,它不能正常工作。我能够得到图像,我想在屏幕上移动图像 在这段代码中,我想移动卵形图像,我不想它一定会影响jerry图像,但问题是线程也在它上面实现 margenMaxX和margenxy是最大宽度和高度Android 如何在程序中使用线程?,android,multithreading,shapedrawable,Android,Multithreading,Shapedrawable,我想用我尝试过的线程在屏幕上移动图像,但由于线程的代码不正确,它不能正常工作。我能够得到图像,我想在屏幕上移动图像 在这段代码中,我想移动卵形图像,我不想它一定会影响jerry图像,但问题是线程也在它上面实现 margenMaxX和margenxy是最大宽度和高度 public class AnimatedView extends ImageView { public AnimatedView(Context context) {
public class AnimatedView extends ImageView {
public AnimatedView(Context context) {
super(context);
Resources res = context.getResources();
drawable = res.getDrawable(R.drawable.jerry);
mDrawable = new ShapeDrawable(new OvalShape());
mDrawable.getPaint().setColor(0xffffAC23);
}
protected void onDraw(final Canvas cc) {
final Context context = null;
drawable.setBounds(x , y , x + width, y + height);
drawable.draw(cc);
invalidate();
Thread thread = new Thread()
{
@Override
public void run() {
try {
while(i<=margenMaxX && j<=margenmaxy) {
sleep(100);
// context.runOnUiThread(new Runnable() {
//handler.post(r);
runOnUiThread(new Runnable() {
@Override
public void run() {
mDrawable.setBounds(i, j ,i+ width, i+ height);
mDrawable.draw(cc);
}
});
//invalidate();
i=i+10;
j=j+10;
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
thread.start();
}
public类AnimatedView扩展了ImageView{
公共动画视图(上下文){
超级(上下文);
Resources res=context.getResources();
可提取=res.getDrawable(R.drawable.jerry);
mDrawable=新的ShapeDrawable(新的椭圆形());
mDrawable.getPaint().setColor(0xffffAC23);
}
受保护的空白onDraw(最终画布cc){
final-Context=null;
可拉伸立根(x,y,x+宽度,y+高度);
可抽取。抽取(cc);
使无效();
线程线程=新线程()
{
@凌驾
公开募捐{
试一试{
虽然(i你必须在UI线程中更新UI。试试这个,它没有经过测试,但应该可以工作
protected void onDraw(final Canvas cc) {
Thread thread = new Thread()
{
@Override
public void run() {
try {
while(i<=margenMaxX && j<=margenmaxy) {
sleep(100);
//handler.post(r);
context.runOnUiThread(new Runnable() {
@Override
public void run() {
mDrawable.setBounds(i, j ,i+ width, i+ height);
mDrawable.draw(cc);
}
});
//invalidate();
i=i+10;
j=j+10;
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
thread.start();
}}
protectedvoid onDraw(最终画布抄送){
线程线程=新线程()
{
@凌驾
公开募捐{
试一试{
while(iIs)你想画一个新线程有什么特别的原因吗?UI处理必须在一个UI线程(主线程)上完成。我正在开发一个游戏,所以我希望这项工作能够被单独执行,这要感谢它在行上下文中给出了错误。rununuithread(new Runnable()protected void onDraw(final Canvas cc){final Context Context=null;Thread Thread=new Thread(){@Override public void run(){try{while(它说的是将强制转换添加到上下文中,而不是我做的这个((活动)上下文).runOnUiThread(new Runnable(),但它在这里显示异常…..03-24 13:16:27.070:E/AndroidRuntime(10277):位于com.game2.MainActivity$AnimatedView$1.run(MainActivity.java:218)@Abhi MainActivity.java中第219行有什么内容?感谢您的帮助球在屏幕上移动,但它也使另一个图像进入睡眠状态,我希望球移动缓慢我增加了时间,但它不工作