簡體   English   中英

在ImageView中圖像未更改

[英]Image is not changing in ImageView

我想將一些動畫后的圖像更改為第一張圖像。 我正在嘗試使用此代碼,但是只有第二張圖像正在動畫化。 第一張圖像未顯示。

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);      
        anim(); 


    }



    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

   public void anim() {
        Animation animfadein =AnimationUtils.loadAnimation(this,R.anim.fadein);
        Animation animfadeout =AnimationUtils.loadAnimation(this,R.anim.fadeout);
        findViewById(R.id.imageView1).startAnimation(animfadein);
        findViewById(R.id.imageView1).startAnimation(animfadeout);
        Context myActivity =getApplicationContext();
        Toast.makeText(myActivity, "Please wait", Toast.LENGTH_SHORT).show();
        button();
       }

    public void button() {
        ImageView imgView1 = (ImageView)findViewById(R.id.imageView1);          
        Drawable myDrawable = getResources().getDrawable(R.drawable.start);
        imgView1.setImageDrawable(myDrawable);
    }

}    

我的xml文件是這樣的

<LinearLayout 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:background="@drawable/background"
    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=".MainActivity" >

   <ImageView

        android:id="@+id/imageView1"
        android:contentDescription="@string/description"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"    
        android:src="@drawable/ic_logo"/>



</LinearLayout>

我嘗試使用setImageresource仍未顯示第一張圖片。 請讓我知道我犯了什么錯誤。

您將需要使用動畫偵聽器來實現此目的:

animFadeIn.setAnimationListener(new AnimationListener() {

    @Override
    public void onAnimationStart(Animation animation) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onAnimationRepeat(Animation animation) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onAnimationEnd(Animation animation) {
        //start animFadeOut Here
    }
});

希望這可以幫助。

您正在onCreate中運行所有操作,這是在用戶甚至無法看到任何UI之前完成的。 直到onStart,用戶才能看到UI。 即使這樣,更改幾乎是立即完成的,因此您可能需要等待幾秒鍾。 嘗試這個:

@Override
protected void onStart() {
    super.onStart();
    new Thread(new Runnable() {

        @Override
        public void run() {
            try {
                Thread.sleep(5000);
                runOnUiThread(new Runnable() {

                    @Override
                    public void run() {
                        anim();
                    }
                });
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }).start();
}

通常,您要讓一個線程等待5秒鍾,然后執行動畫。 我將不討論執行此操作的最佳方法,但是您肯定需要在UI線程上進行修改,因此我將其包含在代碼段中。
有關線程的更多信息,請轉到此處:
http://www.vogella.com/tutorials/AndroidBackgroundProcessing/article.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM