• 画廊视图(Gallery)的功能和用法


    Gallery与Spinner组件有共同的父类:AbsSpinner,表明Gallery和Spinner都是一个列表框。它们之间的区别在于Spinner显示的是一个垂直的列表选择框吗,而Gallery显示的是一个水平的列表选择框。

    下面以一个例子来说明:

    activity_main.xml

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
    	<ImageView 
    	    android:id="@+id/imageView"
    	    android:layout_width="match_parent"
    	    android:layout_height="0dip"
    	    android:layout_weight="1"/>
    	<Gallery 
    	    android:id="@+id/gallery"
    	    android:layout_width="match_parent"
    	    android:layout_height="wrap_content"
    	    android:layout_marginTop="25dip"
    	    android:unselectedAlpha="0.6"
    	    android:spacing="2pt"/>
    </LinearLayout>


    MainActivity.java

    package com.example.testgallary;
    
    import android.app.Activity;
    import android.content.res.TypedArray;
    import android.os.Bundle;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.AdapterView;
    import android.widget.AdapterView.OnItemSelectedListener;
    import android.widget.BaseAdapter;
    import android.widget.Gallery;
    import android.widget.ImageView;
    
    public class MainActivity extends Activity {
    
    	private int[] imageIds = new int[]{
    			R.drawable.img1, R.drawable.img2,
    			R.drawable.img3, R.drawable.img4,
    			R.drawable.img5, R.drawable.img6,
    	};
    	
    	private Gallery gallery;
    	private ImageView imageView;
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		gallery = (Gallery) findViewById(R.id.gallery);
    		imageView = (ImageView) findViewById(R.id.imageView);
    		
    		BaseAdapter adapter = new BaseAdapter() {
    			
    			@Override
    			public View getView(int position, View convertView, ViewGroup parent) {
    				// 创建一个ImageView
    				ImageView imageView = new ImageView(MainActivity.this);
    				imageView.setImageResource(imageIds[position]);
    				// 设置ImageView的缩放类型
    				imageView.setScaleType(ImageView.ScaleType.FIT_XY);
    				// 为imageView设置布局参数
    				imageView.setLayoutParams(new Gallery.LayoutParams(75, 100));
    				TypedArray typedArray = obtainStyledAttributes(
    						R.styleable.Gallery);
    				imageView.setBackgroundResource(typedArray.getResourceId(
    						R.styleable.Gallery_android_galleryItemBackground, 0));
    				return imageView;
    			}
    			
    			@Override
    			public long getItemId(int position) {
    				// TODO Auto-generated method stub
    				return position;
    			}
    			
    			@Override
    			public Object getItem(int item) {
    				// TODO Auto-generated method stub
    				return item;
    			}
    			
    			@Override
    			public int getCount() {
    				// TODO Auto-generated method stub
    				return imageIds.length;
    			}
    		};
    		
    		gallery.setAdapter(adapter);
    		gallery.setOnItemSelectedListener(new OnItemSelectedListener() {
    
    			@Override
    			public void onItemSelected(AdapterView<?> parent, View view,
    					int position, long id) {
    				imageView.setImageResource(imageIds[position]);
    				
    			}
    
    			@Override
    			public void onNothingSelected(AdapterView<?> view) {
    				
    				
    			}
    		});
    	}
    
    }
    

    运行结果:





  • 相关阅读:
    12月2号
    11月30号
    11月25号
    本周总结
    每日日报
    每日日报
    每日日报
    JAVA日报
    JAVA日报
    JAVA日报
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6469650.html
Copyright © 2020-2023  润新知