1

就像我的代码一样,但这有线程折旧方法的错误

class x implements Threads{
public void run()
{
 someButton.layout(10,k,40,40);

 k+=10;
}}
4

2 回答 2

0

为什么不试试 Android 的内置动画

如果您只想移动对象,请使用TranslateAnimation

别忘了放object.setFillAfter(true);

否则对象将再次回到原来的位置。

下面的代码片段将为您提供帮助。

package org.sample;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.TranslateAnimation;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.TextView;

public class AnimationActivity extends Activity
{

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        LinearLayout ll = new LinearLayout(this);
        ll.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
                LayoutParams.MATCH_PARENT));
        ll.setOrientation(LinearLayout.VERTICAL);

        final TextView tv = new TextView(this);
        tv.setText("Animation");

        final TranslateAnimation moveLefttoRight = new TranslateAnimation(0,
                200, 0, 0);
        moveLefttoRight.setDuration(1000);
        moveLefttoRight.setFillAfter(true);

        Button button = new Button(this);
        button.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
                LayoutParams.WRAP_CONTENT));
        button.setText("PressMe");
        button.setOnClickListener(new OnClickListener()
        {

            public void onClick(View v)
            {
                tv.startAnimation(moveLefttoRight);
            }

        });

        ll.addView(tv);
        ll.addView(button);
        setContentView(ll);

    }
}
于 2012-06-07T08:50:32.167 回答
0

是的,我们可以,但这个原因你必须使用用户界面线程

runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            // do your stuff here
                        }
                 });
于 2015-05-24T12:54:55.720 回答