亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

安卓開發筆記——Gallery組件+ImageSwitcher組件

2019-11-14 21:05:51
字體:
來源:轉載
供稿:網友
安卓開發筆記——Gallery組件+ImageSwitcher組件

什么是Gallery?

Gallery是一個水平的列表選擇框,它允許用戶通過拖動來查看上一個、下一個列表選項。

下圖是今天要實現的最終效果:

利用Gallery組件實現的一個橫向顯示圖像列表,可以通過左、右滑動屏幕來切換圖像,并加上ImageSwitcher實現一個大圖片預覽功能。

1、一步一步來吧,首先先解決下上半部分(圖像導航)

先來看下效果圖,下圖是利用Gallery組件實現的一個橫向顯示圖像列表,可以通過左、右滑動屏幕來切換圖像。

直接上代碼,注釋很全。

MainActivity.java

 1 package com.example.galleytest; 2  3 import android.app.Activity; 4 import android.os.Bundle; 5 import android.widget.Gallery; 6 /** 7  *  8  * @author Balla_兔子 9  * 和往??刂剖褂梅椒ù笸‘?0  * 1、獲取數據源11  * 2、配置適配器12  * 3、綁定適配器13  */14 public class MainActivity extends Activity {15 16     PRivate Gallery gallery;// 聲明gallery對象17     private ImageAdapter adapter;//聲明自定義adapter對象18 19     // 1、定義數據源20     private int[] images = { R.drawable.item1, R.drawable.item2,21             R.drawable.item3, R.drawable.item4, R.drawable.item5,22             R.drawable.item6, R.drawable.item7, R.drawable.item8,23             R.drawable.item9, R.drawable.item10, R.drawable.item11,24             R.drawable.item12 };25 26     @Override27     protected void onCreate(Bundle savedInstanceState) {28         super.onCreate(savedInstanceState);29         setContentView(R.layout.activity_main);30 31         gallery=(Gallery) findViewById(R.id.gallery);//取得對象32         33         //2、設置適配器34         adapter=new ImageAdapter(images, this);//實例化自定義適配器對象35         36         //3、綁定適配器37         gallery.setAdapter(adapter);38         39     }40 41 }

ImageAdapter.java

 1 package com.example.galleytest; 2  3 import android.content.Context; 4 import android.view.View; 5 import android.view.ViewGroup; 6 import android.widget.BaseAdapter; 7 import android.widget.Gallery; 8 import android.widget.ImageView; 9 import android.widget.ImageView.ScaleType;10 11 //自定義適配器,繼承BaseAdapter復寫方法12 public class ImageAdapter extends BaseAdapter {13 14     private int images[];15     private Context context;16     public ImageAdapter(int res[],Context context){17         this.images=res;18         this.context=context;19     }20     @Override21     //獲取資源總長度22     public int getCount() {23         return images.length;24     }25 26     @Override27     //根據下標id獲取資源對象28     public Object getItem(int position) {29         return images[position];30     }31 32     @Override33     //根據返回下標id34     public long getItemId(int position) {35         return position;36     }37 38     @Override39     //根據下標id返回對象的視圖view40     public View getView(int position, View convertView, ViewGroup parent) {41         //利用ImageView返回圖像展示42         ImageView imageView=new ImageView(context);43         //設置ImageView背景圖44         imageView.setBackgroundResource(images[position]);    45         //setLayoutParams()這個函數用于代碼自定義布局,為創建的view(ImageView)對象設置位置,大小,顏色等一系列的屬性46         imageView.setLayoutParams(new Gallery.LayoutParams(200, 150));47         //設置展示縮放風格48         imageView.setScaleType(ScaleType.FIT_XY);49         return imageView;50     }51 52 }

activity_main.xml

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2     xmlns:tools="http://schemas.android.com/tools" 3     android:layout_width="match_parent" 4     android:layout_height="match_parent" 5     android:paddingBottom="@dimen/activity_vertical_margin" 6     android:paddingLeft="@dimen/activity_horizontal_margin" 7     android:paddingRight="@dimen/activity_horizontal_margin" 8     android:paddingTop="@dimen/activity_vertical_margin" 9     android:orientation="vertical"10     tools:context="com.example.galleytest.MainActivity" >11     <Gallery 12             android:id="@+id/gallery"13             android:layout_width="fill_parent"14             android:layout_height="wrap_content"15         />16 17 </LinearLayout>

執行完上面代碼我們會發現,當圖片滾動到第一張或者最后一張,就自動停止, 我們可以把它設置成無限循環重復的去展示這些圖片。

這里我們只需要去改動自定義ImageAdapter適配器里2個位置就可以實現這個無限循環的效果

其一:返回圖片資源長度,我們返回的長度不再是數組長度,而是一個巨大數

1     //獲取資源總長度2     public int getCount() {3         //return images.length;4         return Integer.MAX_VALUE;//返回一個巨大數5     }

其二:為ImageView設置圖片顯示資源,我們用取余的方法,讓它實現無限循環

 1     public View getView(int position, View convertView, ViewGroup parent) { 2         //利用ImageView返回圖像展示 3         ImageView imageView=new ImageView(context); 4         //設置ImageView背景圖 5         imageView.setBackgroundResource(images[position%images.length]);    //用取余的方法,讓它實現無限循環 6         //setLayoutParams()這個函數用于代碼自定義布局,為創建的view(ImageView)對象設置位置,大小,顏色等一系列的屬性 7         imageView.setLayoutParams(new Gallery.LayoutParams(200, 150)); 8         //設置展示縮放風格 9         imageView.setScaleType(ScaleType.FIT_XY);10         return imageView;11     }

無限循環輕松搞定,再試試看效果吧~

2、結合ImageSwitcher組件,使得圖片瀏覽效果更為流暢(可以把ImageSwitcher粗略的想象成ImageView的加強版,它可以帶來很多效果,比如圖片動畫)

直接上代碼,依舊人性化注釋全面~

MainActivity.java

 1 package com.example.galleytest; 2  3 import android.app.Activity; 4 import android.os.Bundle; 5 import android.view.View; 6 import android.view.animation.AnimationUtils; 7 import android.widget.AdapterView; 8 import android.widget.Gallery; 9 import android.widget.ImageSwitcher;10 import android.widget.ImageView;11 import android.widget.ImageView.ScaleType;12 import android.widget.ViewSwitcher.ViewFactory;13 /**14  * 15  * @author Balla_兔子16  * 和往??刂剖褂梅椒ù笸‘?7  * 1、獲取數據源18  * 2、配置適配器19  * 3、綁定適配器20  * 21  * 為Grallery設置監聽,因要結合ImageSwitcher,這里需要額外的實現一個圖像制造工廠ViewFactory22  */23 public class MainActivity extends Activity implements android.widget.AdapterView.OnItemSelectedListener,ViewFactory{24 25     private Gallery gallery;// 聲明gallery對象26     private ImageSwitcher imageSwitcher;//聲明一個ImageSwitcher對象27     private ImageAdapter adapter;//聲明自定義adapter對象28 29     // 1、定義數據源30     private int[] images = { R.drawable.item1, R.drawable.item2,31             R.drawable.item3, R.drawable.item4, R.drawable.item5,32             R.drawable.item6, R.drawable.item7, R.drawable.item8,33             R.drawable.item9, R.drawable.item10, R.drawable.item11,34             R.drawable.item12 };35 36     @Override37     protected void onCreate(Bundle savedInstanceState) {38         super.onCreate(savedInstanceState);39         setContentView(R.layout.activity_main);40 41         gallery=(Gallery) findViewById(R.id.gallery);//取得對象42         imageSwitcher=(ImageSwitcher) findViewById(R.id.imageSwitcher);//取得對象43         44         //添加監聽45         gallery.setOnItemSelectedListener(this);46         imageSwitcher.setFactory(this);47         //設置動畫效果,圖片在imageSwitch的漸入漸出效果48         imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in));49         imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_out));50         51         52         //2、設置適配器53         adapter=new ImageAdapter(images, this);//實例化自定義適配器對象54         55         //3、綁定適配器56         gallery.setAdapter(adapter);57         58     }59 60     @Override61     //實現ViewFactory里的制造圖像方法,這里需要返回一個view對象,同樣的我們可以采用返回ImageView62     public View makeView() {63         ImageView imageView=new ImageView(this);64         imageView.setScaleType(ScaleType.FIT_CENTER);//展示效果65         return imageView;66     }67 68     //Gallery組件的監聽器69     @Override70     public void onItemSelected(AdapterView<?> parent, View view, int position,71             long id) {72             imageSwitcher.setBackgroundResource(images[position%images.length]);73     }74 75     @Override76     public void onNothingSelected(AdapterView<?> parent) {77         78     }79 80 }

ImageAdapter.java

 1 package com.example.galleytest; 2  3 import android.content.Context; 4 import android.view.View; 5 import android.view.ViewGroup; 6 import android.widget.BaseAdapter; 7 import android.widget.Gallery; 8 import android.widget.ImageView; 9 import android.widget.ImageView.ScaleType;10 11 //自定義適配器,繼承BaseAdapter復寫方法12 public class ImageAdapter extends BaseAdapter {13 14     private int images[];15     private Context context;16     public ImageAdapter(int res[],Context context){17         this.images=res;18         this.context=context;19     }20     @Override21     //獲取資源總長度22     public int getCount() {23         //return images.length;24         return Integer.MAX_VALUE;//返回一個巨大數25     }26 27     @Override28     //根據下標id獲取資源對象29     public Object getItem(int position) {30         return images[position];31     }32 33     @Override34     //根據返回下標id35     public long getItemId(int position) {36         return position;37     }38 39     @Override40     //根據下標id返回對象的視圖view41     public View getView(int position, View convertView, ViewGroup parent) {42         //利用ImageView返回圖像展示43         ImageView imageView=new ImageView(context);44         //設置ImageView背景圖45         imageView.setBackgroundResource(images[position%images.length]);    //用取余的方法,讓它實現無限循環46         //setLayoutParams()這個函數用于代碼自定義布局,為創建的view(ImageView)對象設置位置,大小,顏色等一系列的屬性47         imageView.setLayoutParams(new Gallery.LayoutParams(200, 150));48         //設置展示縮放風格49         imageView.setScaleType(ScaleType.FIT_XY);50         return imageView;51     }52 53 }

activity_main.xml

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2     xmlns:tools="http://schemas.android.com/tools" 3     android:layout_width="match_parent" 4     android:layout_height="match_parent" 5     android:paddingBottom="@dimen/activity_vertical_margin" 6     android:paddingLeft="@dimen/activity_horizontal_margin" 7     android:paddingRight="@dimen/activity_horizontal_margin" 8     android:paddingTop="@dimen/activity_vertical_margin" 9     android:orientation="vertical"10     tools:context="com.example.galleytest.MainActivity" >11     <Gallery 12             android:id="@+id/gallery"13             android:layout_width="fill_parent"14             android:layout_height="wrap_content"15         />16 17     <ImageSwitcher 18         android:id="@+id/imageSwitcher"19         android:layout_height="wrap_content"20         android:layout_width="fill_parent"21         android:layout_marginTop="20dp"22         ></ImageSwitcher>23 </LinearLayout>


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美性猛交xxxx富婆弯腰| 精品久久久国产| 欧美日韩精品中文字幕| 欧美日韩视频在线| www国产亚洲精品久久网站| 国产一区在线播放| 国产精品视频免费在线| 国产精品视频xxx| 国产成人av在线播放| 国产精品h片在线播放| 91精品国产高清久久久久久91| 国产精品海角社区在线观看| 日韩在线视频一区| 国产精品亚洲аv天堂网| 久久香蕉精品香蕉| 成人在线精品视频| 日韩av电影在线免费播放| 亚洲天堂av在线免费| 国产成人精品午夜| 亚洲最大的免费| 国产精品96久久久久久| 国产精品视频不卡| 懂色av一区二区三区| 日韩美女免费视频| 国产成人一区二区三区小说| 国产一区二区三区在线看| 久久99精品国产99久久6尤物| 亚洲电影免费观看高清完整版在线观看| 亚洲 日韩 国产第一| 97久久精品人人澡人人爽缅北| 久久久久久久久久久人体| 亚洲综合社区网| 中文字幕日韩精品在线观看| 亚洲精品欧美一区二区三区| 国产成人亚洲精品| 国产91色在线免费| www.99久久热国产日韩欧美.com| 欧美日本高清一区| 久久久电影免费观看完整版| 97碰在线观看| 欧美放荡办公室videos4k| 亚洲电影成人av99爱色| 日本欧美一级片| 亚洲精品福利在线观看| 欧美丰满片xxx777| 亚洲欧美中文字幕| 在线观看日韩www视频免费| 国产成人精品电影久久久| 亚洲女同精品视频| 欧美日韩亚洲激情| 668精品在线视频| 欧美有码在线视频| 欧美日韩电影在线观看| 国产在线久久久| 国产91精品黑色丝袜高跟鞋| 91国产精品视频在线| 国产精品视频最多的网站| 精品少妇一区二区30p| 久久不射电影网| 欧美亚洲另类制服自拍| 成人激情视频在线观看| 国产精品视频公开费视频| 亚洲一区二区三区在线视频| 久久久久久伊人| 国外色69视频在线观看| 欧美视频在线观看免费| 国产亚洲人成网站在线观看| 日韩国产高清污视频在线观看| 久久九九国产精品怡红院| 欧美激情一级精品国产| 亚洲欧美日韩区| 国产亚洲成av人片在线观看桃| 一个色综合导航| 成人av色在线观看| 久久深夜福利免费观看| 中文字幕欧美精品在线| 亚洲免费视频在线观看| 日韩免费电影在线观看| 成人国产精品色哟哟| 亚洲欧美日韩另类| 在线观看精品自拍私拍| 伊人久久大香线蕉av一区二区| 国产精品女视频| 欧美日韩亚洲一区二| 亚洲精品在线观看www| 国产在线精品一区免费香蕉| 国产精品a久久久久久| 久久成人一区二区| 国产偷亚洲偷欧美偷精品| 国产精品久久久久7777婷婷| 国产精品久久一区主播| 亚洲美女又黄又爽在线观看| 久久av在线播放| 91精品视频在线免费观看| 精品久久久久久久久久久久| 亚洲精品日韩丝袜精品| 欧美视频精品一区| 日韩高清免费在线| 78色国产精品| 亚洲精品国产精品久久清纯直播| 久久天天躁狠狠躁夜夜爽蜜月| 性欧美办公室18xxxxhd| 欧美性xxxx在线播放| 在线观看精品自拍私拍| 日韩中文字幕在线看| 久久久久久久久久久久久久久久久久av| 亚洲欧美另类自拍| 国产日韩精品在线播放| 97精品国产97久久久久久免费| 欧美裸体xxxx极品少妇软件| 性亚洲最疯狂xxxx高清| 欧美疯狂做受xxxx高潮| 91精品国产乱码久久久久久蜜臀| 亚洲精品视频中文字幕| 亚洲成人av在线| 日本亚洲欧美三级| 国自产精品手机在线观看视频| 亚洲精品国偷自产在线99热| 欧美极品少妇xxxxⅹ裸体艺术| 久久精品99久久久久久久久| 国产精品视频免费观看www| 色综合天天综合网国产成人网| 欧美中文在线免费| 国产精品丝袜一区二区三区| 国产精品美女免费视频| 久久久久久久久久久久久久久久久久av| 欧美亚洲成人免费| 992tv成人免费影院| 岛国av一区二区在线在线观看| 久久伊人91精品综合网站| 日韩国产精品亚洲а∨天堂免| 一区二区在线视频| 欧美在线影院在线视频| 精品久久久久久中文字幕大豆网| 欧美高清不卡在线| 九九精品在线播放| 国产女人精品视频| 91在线观看免费高清完整版在线观看| 一区二区三区黄色| 久久九九国产精品怡红院| 精品久久久999| 成人性教育视频在线观看| 成人黄色av网| 欧美日韩国产精品一区二区三区四区| 69久久夜色精品国产69乱青草| 在线观看日韩av| 国产亚洲视频在线观看| 国产精品极品尤物在线观看| 亚洲图片制服诱惑| 中文字幕日韩av综合精品| 另类天堂视频在线观看| 久久久久久久成人| 久久不射电影网| 一区国产精品视频| 亚洲国产一区二区三区四区| 久久久视频精品| 92版电视剧仙鹤神针在线观看| 91免费欧美精品| 97在线观看免费高清| 欧美在线精品免播放器视频| 日韩av大片免费看| 日韩欧美在线视频| 最近中文字幕mv在线一区二区三区四区| 久久久亚洲欧洲日产国码aⅴ|