麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

安卓開(kāi)發(fā)筆記——Gallery組件+ImageSwitcher組件

2019-11-14 21:05:51
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
安卓開(kāi)發(fā)筆記——Gallery組件+ImageSwitcher組件

什么是Gallery?

Gallery是一個(gè)水平的列表選擇框,它允許用戶(hù)通過(guò)拖動(dòng)來(lái)查看上一個(gè)、下一個(gè)列表選項(xiàng)。

下圖是今天要實(shí)現(xiàn)的最終效果:

利用Gallery組件實(shí)現(xiàn)的一個(gè)橫向顯示圖像列表,可以通過(guò)左、右滑動(dòng)屏幕來(lái)切換圖像,并加上ImageSwitcher實(shí)現(xiàn)一個(gè)大圖片預(yù)覽功能。

1、一步一步來(lái)吧,首先先解決下上半部分(圖像導(dǎo)航)

先來(lái)看下效果圖,下圖是利用Gallery組件實(shí)現(xiàn)的一個(gè)橫向顯示圖像列表,可以通過(guò)左、右滑動(dòng)屏幕來(lái)切換圖像。

直接上代碼,注釋很全。

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、獲取數(shù)據(jù)源11  * 2、配置適配器12  * 3、綁定適配器13  */14 public class MainActivity extends Activity {15 16     PRivate Gallery gallery;// 聲明gallery對(duì)象17     private ImageAdapter adapter;//聲明自定義adapter對(duì)象18 19     // 1、定義數(shù)據(jù)源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);//取得對(duì)象32         33         //2、設(shè)置適配器34         adapter=new ImageAdapter(images, this);//實(shí)例化自定義適配器對(duì)象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復(fù)寫(xiě)方法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     //獲取資源總長(zhǎng)度22     public int getCount() {23         return images.length;24     }25 26     @Override27     //根據(jù)下標(biāo)id獲取資源對(duì)象28     public Object getItem(int position) {29         return images[position];30     }31 32     @Override33     //根據(jù)返回下標(biāo)id34     public long getItemId(int position) {35         return position;36     }37 38     @Override39     //根據(jù)下標(biāo)id返回對(duì)象的視圖view40     public View getView(int position, View convertView, ViewGroup parent) {41         //利用ImageView返回圖像展示42         ImageView imageView=new ImageView(context);43         //設(shè)置ImageView背景圖44         imageView.setBackgroundResource(images[position]);    45         //setLayoutParams()這個(gè)函數(shù)用于代碼自定義布局,為創(chuàng)建的view(ImageView)對(duì)象設(shè)置位置,大小,顏色等一系列的屬性46         imageView.setLayoutParams(new Gallery.LayoutParams(200, 150));47         //設(shè)置展示縮放風(fēng)格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>

執(zhí)行完上面代碼我們會(huì)發(fā)現(xiàn),當(dāng)圖片滾動(dòng)到第一張或者最后一張,就自動(dòng)停止, 我們可以把它設(shè)置成無(wú)限循環(huán)重復(fù)的去展示這些圖片。

這里我們只需要去改動(dòng)自定義ImageAdapter適配器里2個(gè)位置就可以實(shí)現(xiàn)這個(gè)無(wú)限循環(huán)的效果

其一:返回圖片資源長(zhǎng)度,我們返回的長(zhǎng)度不再是數(shù)組長(zhǎng)度,而是一個(gè)巨大數(shù)

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

其二:為ImageView設(shè)置圖片顯示資源,我們用取余的方法,讓它實(shí)現(xiàn)無(wú)限循環(huán)

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

無(wú)限循環(huán)輕松搞定,再試試看效果吧~

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

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

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、獲取數(shù)據(jù)源18  * 2、配置適配器19  * 3、綁定適配器20  * 21  * 為Grallery設(shè)置監(jiān)聽(tīng),因要結(jié)合ImageSwitcher,這里需要額外的實(shí)現(xiàn)一個(gè)圖像制造工廠(chǎng)ViewFactory22  */23 public class MainActivity extends Activity implements android.widget.AdapterView.OnItemSelectedListener,ViewFactory{24 25     private Gallery gallery;// 聲明gallery對(duì)象26     private ImageSwitcher imageSwitcher;//聲明一個(gè)ImageSwitcher對(duì)象27     private ImageAdapter adapter;//聲明自定義adapter對(duì)象28 29     // 1、定義數(shù)據(jù)源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);//取得對(duì)象42         imageSwitcher=(ImageSwitcher) findViewById(R.id.imageSwitcher);//取得對(duì)象43         44         //添加監(jiān)聽(tīng)45         gallery.setOnItemSelectedListener(this);46         imageSwitcher.setFactory(this);47         //設(shè)置動(dòng)畫(huà)效果,圖片在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、設(shè)置適配器53         adapter=new ImageAdapter(images, this);//實(shí)例化自定義適配器對(duì)象54         55         //3、綁定適配器56         gallery.setAdapter(adapter);57         58     }59 60     @Override61     //實(shí)現(xiàn)ViewFactory里的制造圖像方法,這里需要返回一個(gè)view對(duì)象,同樣的我們可以采用返回ImageView62     public View makeView() {63         ImageView imageView=new ImageView(this);64         imageView.setScaleType(ScaleType.FIT_CENTER);//展示效果65         return imageView;66     }67 68     //Gallery組件的監(jiān)聽(tīng)器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復(fù)寫(xiě)方法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     //獲取資源總長(zhǎng)度22     public int getCount() {23         //return images.length;24         return Integer.MAX_VALUE;//返回一個(gè)巨大數(shù)25     }26 27     @Override28     //根據(jù)下標(biāo)id獲取資源對(duì)象29     public Object getItem(int position) {30         return images[position];31     }32 33     @Override34     //根據(jù)返回下標(biāo)id35     public long getItemId(int position) {36         return position;37     }38 39     @Override40     //根據(jù)下標(biāo)id返回對(duì)象的視圖view41     public View getView(int position, View convertView, ViewGroup parent) {42         //利用ImageView返回圖像展示43         ImageView imageView=new ImageView(context);44         //設(shè)置ImageView背景圖45         imageView.setBackgroundResource(images[position%images.length]);    //用取余的方法,讓它實(shí)現(xiàn)無(wú)限循環(huán)46         //setLayoutParams()這個(gè)函數(shù)用于代碼自定義布局,為創(chuàng)建的view(ImageView)對(duì)象設(shè)置位置,大小,顏色等一系列的屬性47         imageView.setLayoutParams(new Gallery.LayoutParams(200, 150));48         //設(shè)置展示縮放風(fēng)格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>


發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 国内免费视频成人精品 | 99影视在线视频免费观看 | 羞羞视频免费网站男男 | 日本a∨精品中文字幕在线 狠狠干精品视频 | 亚洲xxx视频 | 蜜桃传媒视频麻豆第一区免费观看 | 国产成人精品一区二区视频免费 | 国产精品久久久久久久久久电影 | 一区二区三区视频播放 | 国产精品视频在线观看免费 | 成人男女啪啪免费观看网站四虎 | 欧美在线一级 | 欧美成人精品 | 亚洲精品成人在线视频 | 日本娇小videos高潮 | 亚洲成人福利在线观看 | 毛片大全免费 | 国产一级一级片 | 欧美精品免费一区二区三区 | 丁香天堂网 | 久久视频精品 | 一区二区三区视频在线观看 | 欧美wwwwww | 女人叉开腿让男人桶 | 最近日本电影hd免费观看 | 最新91在线视频 | 久久午夜神器 | 国产精品成人亚洲一区二区 | 久久草在线观看视频 | 久久久久久亚洲综合影院红桃 | 久久久久国产成人精品亚洲午夜 | 免费网址黄 | 午夜精品久久久久久毛片 | 免费国产不卡午夜福在线 | 亚洲精品a级 | 久久久一区二区三区四区 | 国产免费v片 | 美女在线视频一区二区 | 久久久噜噜噜久久熟有声小说 | 中国美女一级黄色大片 | 99精品无人区乱码在线观看 |