標籤:gallery imageswitch 縮圖 放大 畫廊
1.回顧
上篇學習 SrcollView 和 ViewFlipper 的實現 圖片輪播效果
2.重點
(1)Gallery 實現
(2)ImageSwitch實現
(3)Gallery 的 OnItemSelectedListener 實現
(4)ImageSwitch 的 ViewFactory 實現
(5)實現執行個體——Gallery實現縮圖,ImageSwitch實現 放大效果
3.實現 3.1 說明
Gallery 在 安卓4.0版本已經 過時了,建議使用 ScrollView水平視圖實現或者 GridView實現;
雖說過時了,但是 還是可以使用的,使用起來比較簡單;
3.2
還是挺不錯的;
3.3 布局實現
<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:orientation="vertical" tools:context="${relativePackage}.${activityClass}" > <Gallery android:id="@+id/gallery1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1.02" /> <ImageSwitcher android:id="@+id/imgswitch" android:layout_width="match_parent" android:layout_height="400dp" > </ImageSwitcher></LinearLayout>
3.4 適配器實現
前面已經學過了 6 個 常用的適配器 :SimapleAdapter , ArrayAdapter ,BaseAdapter , PagerAdapter ,
FragmentPagerAdapter 和 FragmentStatePagerAdapter ;
其中 BaseAdapter 十分的靈活 ,易於 擴充;在此使用 BaseAdapter ; 這裡就不解釋了;
package com.example.adpater;import android.content.Context;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.Gallery;import android.widget.ImageView;import android.widget.ImageView.ScaleType;public class ImageAdapter extends BaseAdapter{private int [] pics;private Context context;public ImageAdapter(int [] pics,Context context) {//初始化 資料來源this.pics=pics;this.context=context;}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn Integer.MAX_VALUE;}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn pics[position];}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {// Item 產生ImageView imageView=new ImageView(context);//設定資源imageView.setBackgroundResource(pics[position%pics.length]);//展開圖片 imageView.setScaleType(ScaleType.FIT_XY);//設定大小imageView.setLayoutParams(new Gallery.LayoutParams(200,100));return imageView;}}
3.5 業務實現
(1)初始化 Gallary 和 imageswitch 控制項
(2)準備資料來源,在Drawable 中 粘貼 12張 圖片,不要太大,否則報 記憶體溢出 錯誤
(3)綁定適配器
(4)設定Gallary OnItemSelectedListener 監聽
(5)為 ImageSwitch 實現ViewFactory
package com.example.studydemo3;import com.example.adpater.ImageAdapter;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.AdapterView;import android.widget.AdapterView.OnItemSelectedListener;import android.widget.Gallery;import android.widget.ImageSwitcher;import android.widget.ImageView;import android.widget.ImageView.ScaleType;import android.widget.ViewSwitcher.ViewFactory;public class MainActivity extends Activity {private Gallery gallery1;private ImageSwitcher imgswitch;// 準備資料來源private int[] pics = { R.drawable.pic1, R.drawable.pic2, R.drawable.pic3,R.drawable.pic4, R.drawable.pic5, R.drawable.pic6, R.drawable.pic7,R.drawable.pic8, R.drawable.pic9, R.drawable.pic10, R.drawable.pic11,R.drawable.pic12};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);gallery1 = (Gallery) findViewById(R.id.gallery1);imgswitch = (ImageSwitcher) findViewById(R.id.imgswitch);//綁定 適配器ImageAdapter imageAdapter=new ImageAdapter(pics, this);gallery1.setAdapter(imageAdapter);// 設定 viewFactoryimgswitch.setFactory(new imgSwitchListener());// 設定監聽事件gallery1.setOnItemSelectedListener(new galleryItemListener());}/** * Gallery item 選擇事件 * * @author yuan * */class galleryItemListener implements OnItemSelectedListener {@Overridepublic void onItemSelected(AdapterView<?> parent, View view,int position, long id) {// 使用這個 imgswitch.setBackgroundResource(pics[position%pics.length]);}@Overridepublic void onNothingSelected(AdapterView<?> parent) {// 沒有使用}}// ImageSwitch 圖片生產工廠class imgSwitchListener implements ViewFactory {@Overridepublic View makeView() {// 返回 imageImageView imageView = new ImageView(MainActivity.this);// 使圖片保持 原始比例大小 ,且中 顯示imageView.setScaleType(ScaleType.FIT_CENTER);return imageView;}}}
4. demo下載
http://download.csdn.net/detail/lablenet/9046019
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
Android-畫廊實現 (Gallery , ImageSwitch)