首页 > 代码库 > Gallery画廊视图

Gallery画廊视图

画廊视图使用Gallery表示,能够按水平方向显示内容,并且可以手指直接拖动图片和移动,一般用
来浏览图片,,被选中的选项位于中间,并且可以响应事件显示信息.在使用画廊视图时,首先在屏幕
上添加Gallery组件,通常使用标记在XML而布局文件中添加.

  

画廊视图在4.0后已经过期,但是我们仍然可以使用,不过后面我们将用水平的ListView
自定义组件来实现这个效果,在自定义视图中讲解。

 

常用属性:
1. android:animationDuration 用于设置列表项切换时的动画持续时间
2. android:gravity 用于设置对齐方式
3. android:spacing 用于设置列表项之间的间距
4. android:unselectedAlpha 用于设置没有选中的列表项的透明度

 

1、搭建布局

技术分享
 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 2     android:layout_width="match_parent" 3     android:layout_height="match_parent" > 4  5     <ImageView 6         android:id="@+id/img" 7         android:layout_width="match_parent" 8         android:layout_height="wrap_content" 9         android:layout_centerHorizontal="true"10         android:adjustViewBounds="true"11         android:scaleType="fitXY"12         android:layout_margin="30dp"13         android:src="@drawable/ic_launcher" />14 15     <Gallery16         android:id="@+id/gallery"17         android:layout_below="@id/img"18         android:layout_margin="20dp"19         android:spacing="10dp"20         android:layout_width="match_parent"21         android:layout_height="wrap_content" />22 23 </RelativeLayout>
activity_main.xml

2、MainActivity.java中将所有组件找到,并设置监听

技术分享
 1 public class MainActivity extends Activity implements OnItemSelectedListener { 2  3     Gallery gallery; 4     ImageView img; 5     int[] imgId = new int[6]; 6      7     @Override 8     protected void onCreate(Bundle savedInstanceState) { 9         super.onCreate(savedInstanceState);10         setContentView(R.layout.activity_main);11         initView();12         MyBaseAdapter adapter = new MyBaseAdapter();13         gallery.setAdapter(adapter);14         gallery.setOnItemSelectedListener(this);15         16         17     }18 19     private void initView() {20         for (int i = 0; i < imgId.length; i++) {21             try {22                 imgId[i] = R.drawable.class.getField("img0"+(i+1)).getInt(null);23             } catch (Exception e) {24                 e.printStackTrace();25             } 26         }27         28         gallery = (Gallery) findViewById(R.id.gallery);29         img = (ImageView) findViewById(R.id.img);30     }31     32     class MyBaseAdapter extends BaseAdapter{33 34         @Override35         public int getCount() {36             return imgId.length;37         }38 39         @Override40         public Object getItem(int position) {41             return null;42         }43 44         @Override45         public long getItemId(int position) {46             // TODO Auto-generated method stub47             return 0;48         }49 50         @Override51         public View getView(int position, View convertView, ViewGroup parent) {52             if(convertView == null){53                 convertView = new ImageView(MainActivity.this);54             }55             ImageView iv = (ImageView) convertView;56             57             //设置数据58             iv.setImageResource(imgId[position]);59             60             return convertView;61         }62         63     }64 65     @Override66     public void onItemSelected(AdapterView<?> parent, View view, int position,67             long id) {68         69         img.setImageResource(imgId[position]);70         71     }72 73     @Override74     public void onNothingSelected(AdapterView<?> parent) {75         // TODO Auto-generated method stub76         77     }78 79     80 }
MainActivity.java

 

Gallery画廊视图