无法观察我的视图动画

时间:2016-03-17 14:49:54

标签: java android multithreading android-animation thread-sleep

我想要做的是,将一个对象从一个位置移动(转换)到另一个位置,但具体使用以下方法。并且,它在某种程度上需要工作,但正在发生的是,我无法看到实时的变化。

屏幕显示为空白一段时间,然后显示对象,当它到达Android屏幕上的最终坐标时。

我希望看到实时的变化。请你告诉我,我哪里出错了?

Java文件

package com.example.actualanimation;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ImageView;

public class MainActivity extends Activity{

    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ImageView im=(ImageView)findViewById(R.id.img_id);

        for(int i=0;i<100;i++)
        {
            im.setY(im.getY()+1);
            try
            {
                Thread.sleep(10);
            }
            catch(Exception e)
            {
                System.out.print("Done");
            }
        }
    }


}

我的假设是,当&#34; Thread.sleep(10)&#34;调用它,它将主线程进入睡眠模式,这发生在下一个100循环中。然后,最后当循环执行结束时,对象显示在最终状态。

XML文件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.actualanimation.MainActivity" >

   <ImageView 
       android:layout_height="wrap_content"
       android:layout_width="wrap_content"
       android:id="@+id/img_id"
       android:src="@drawable/ic_launcher"/>

</RelativeLayout>

1 个答案:

答案 0 :(得分:0)

请勿使用视图位置为您的观看设置动画。在Android中为视图设置动画所需的只是一个定义的xml文件,然后在startAnimation视图方法中使用它,如下所述:https://developer.android.com/guide/topics/graphics/view-animation.html