有時(shí)候,不希望圖片突然出現(xiàn)在屏幕上,而要應(yīng)用某種形式的動(dòng)畫顯示圖片時(shí),從一個(gè)圖像轉(zhuǎn)換到另一個(gè)。這是在Android中支持的ImageSwitcher
圖像切換器允許通過它們出現(xiàn)在屏幕上的方式上的圖像添加一些過渡。為了使用圖像切換,需要先定義它的XML組件。它的語法如下:
<ImageSwitcher android:id="@+id/imageSwitcher1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" > </ImageSwitcher>
現(xiàn)在創(chuàng)建ImageSwitcher的Java實(shí)例,并得到這個(gè)XML組件的引用。它的語法如下:
private ImageSwitcher imageSwitcher; imageSwitcher = (ImageSwitcher)findViewById(R.id.imageSwitcher1);
我們需要做的下一件事是實(shí)現(xiàn)的ViewFactory接口,并實(shí)現(xiàn)返回一個(gè)ImageView的未實(shí)現(xiàn)的方法。它的語法如下:
imageSwitcher.setImageResource(R.drawable.ic_launcher); imageSwitcher.setFactory(new ViewFactory() { public View makeView() { ImageView myView = new ImageView(getApplicationContext()); return myView; } }
需要做的最后一件事是添加動(dòng)畫到ImageSwitcher。需要通過調(diào)用AnimationUtilities類的對(duì)象一個(gè)靜態(tài)方法loadAnimation定義動(dòng)畫類。它的語法如下:
Animation in = AnimationUtils.loadAnimation(this,android.R.anim.slide_in_left); imageSwitcher.setInAnimation(in); imageSwitcher.setOutAnimation(out);
setInAnimaton設(shè)置對(duì)象的外觀的動(dòng)畫在畫面上,而setOutAnimation則正好是相反的方法。該loadAnimation()方法創(chuàng)建一個(gè)動(dòng)畫對(duì)象。
除了這些方法,也有在ImageSwitcher類中定義的其他方法。它們被定義如下:
Sr.No | Method & description |
---|---|
1 |
setImageDrawable(Drawable drawable) 設(shè)置使用圖像切換圖像。圖像以位圖的形式被傳遞 |
2 |
setImageResource(int resid) 設(shè)置使用圖像切換圖像。圖像被傳遞整數(shù)標(biāo)識(shí)符的形式 |
3 |
setImageURI(Uri uri) 設(shè)置使用圖像切換圖像。該圖像是通過URI的形式 |
4 |
ImageSwitcher(Context context, AttributeSet attrs) 返回圖像切換對(duì)象已經(jīng)設(shè)置一些屬性的方法傳遞 |
5 |
onInitializeAccessibilityEvent (AccessibilityEvent event) 初始化一個(gè)AccessibilityEvent與此有關(guān)查看信息是事件源 |
6 |
onInitializeAccessibilityNodeInfo (AccessibilityNodeInfo info) 初始化一個(gè)AccessibilityNodeInfo提供有關(guān)該視圖的信息 |
下面的例子演示了一些對(duì)位圖圖像轉(zhuǎn)換器的效果。它創(chuàng)建了一個(gè)基本的應(yīng)用程序,它允許查看的影像的動(dòng)畫效果。
為了試驗(yàn)這個(gè)例子,需要在實(shí)際設(shè)備上運(yùn)行此程序。
Steps | 描述 |
---|---|
1 | 使用Android Studio創(chuàng)建Android應(yīng)用程序,并將其命名為ImageSwitcher。在創(chuàng)建這個(gè)項(xiàng)目時(shí)確保目標(biāo)SDK編譯在Android SDK的最新版本或使用更高級(jí)別的API |
2 | 修改src/MainActivity.java 文件中添加必要的代碼 |
3 | 修改res/layout/activity_main添加相應(yīng)的XML組件 |
4 | 運(yùn)行應(yīng)用程序并選擇運(yùn)行Android的設(shè)備,并在其上安裝的應(yīng)用和驗(yàn)證結(jié)果 |
以下是修改主活動(dòng)文件的內(nèi)容 src/com.yiibai.imageswithcer/MainActivity.java.
package com.example.imageswitcher; import android.app.ActionBar.LayoutParams; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.ImageButton; import android.widget.ImageSwitcher; import android.widget.ImageView; import android.widget.Toast; import android.widget.ViewSwitcher.ViewFactory; public class MainActivity extends Activity { private ImageButton img; private ImageSwitcher imageSwitcher; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); img = (ImageButton)findViewById(R.id.imageButton1); imageSwitcher = (ImageSwitcher)findViewById(R.id.imageSwitcher1); imageSwitcher.setFactory<