android基礎入門ImageSwitcher視圖(11)

來源:互聯網
上載者:User

一.ImageSwitcher(圖片切換器):

當我們想點擊一張圖片時,想讓它出現的不太突然,想要緩慢顯示,這時Gallery視圖就需要ImageSwitcher來配合使用。

其中我們還需要用到ViewFactory介面,這是一個視圖轉換器,我們要重寫makeView()方法,來建立一個用於添加到視圖轉換器(ViewSwitcher)中的新視圖。

動畫效果:

由左向右滑入的效果:

android.R.anim.slide_in_left

android.R.anim.slide_out_right

淡入淡出:

android.R.anim.fade_in

android.R.anim.fade_out

示範執行個體:

布局檔案:

            

自訂屬性(attrs.xml):

                

主要代碼:

public class MainActivity extends Activity implements ViewFactory {Integer[]  imgId = {R.drawable.img1,R.drawable.img2,R.drawable.img3,R.drawable.img4,R.drawable.img5,R.drawable.img8,R.drawable.img9,};private ImageSwitcher is ; @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);is = (ImageSwitcher)findViewById(R.id.imageSwitcher1);is.setFactory(this);//設定動畫效果。由左向右滑入is.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.slide_in_left));is.setOutAnimation(AnimationUtils.loadAnimation(this, android.R.anim.slide_out_right));Gallery gallery = (Gallery)findViewById(R.id.gallery1);gallery.setAdapter(new ImageAdapter(this));gallery.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView arg0, View arg1, int arg2,long arg3) {                   is.setImageResource(imgId[arg2]);}});}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.main, menu);return true;}    //建立一個新的View來添加到ImageView中。@Overridepublic View makeView() {                      ImageView imageView = new ImageView(this);   //設定背景顏色   imageView.setBackgroundColor(0xffffff00);   imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);   //填充控制項。   imageView.setLayoutParams(new ImageSwitcher.LayoutParams(LayoutParams.FILL_PARENT,   LayoutParams.FILL_PARENT));             return imageView;}    //Image適配器類,綁定Gallery。private class ImageAdapter extends BaseAdapter{private Context context;private int item;public ImageAdapter(Context context) {this.context = context;TypedArray ta = context.obtainStyledAttributes(R.styleable.Gallery1);item = ta.getResourceId(R.styleable.Gallery1_android_galleryItemBackground, 0);ta.recycle();}@Overridepublic int getCount() {return imgId.length;}@Overridepublic Object getItem(int arg0) {// TODO Auto-generated method stubreturn arg0;}@Overridepublic long getItemId(int arg0) {// TODO Auto-generated method stubreturn arg0;}@Overridepublic View getView(int arg0, View arg1, ViewGroup arg2) {// TODO Auto-generated method stubImageView image = new ImageView(context);image.setImageResource(imgId[arg0]);image.setScaleType(ImageView.ScaleType.FIT_XY);image.setLayoutParams(new Gallery.LayoutParams(160,130));image.setBackgroundResource(item);return image;}}}


運行圖片:

當我們點擊第二章圖片時:

當點擊後面圖片時:







聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.