Android开发学习之Gallery画廊的使用

分享到:

        从今天起,我将为大家带来Android开发学习系列文章,与大家一起来学习Android应用开发的相关知识。首先,我们来学习一个简单的例子Gallery。Gallery是一个被称之为画廊的控件,主要用于在应用中显示一组图片,是开发相册或者图片浏览器时十分重要的一个控件。下面,我们正式开始这个例子的学习。

       首先构建布局页面,布局代码如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="#000000"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >
    <Gallery
        android:id="@+id/gallery"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
</LinearLayout>
        在这个布局中,我们使用了LineLayout线性布局,布局方向为垂直方向,在整个页面中只有一个Gallery控件。

        与之对应的后台文件代码如下:

package com.android.gallery;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.Window;
import android.widget.Gallery;

public class MainActivity extends Activity {

	int[] Images={R.drawable.image1,R.drawable.image2,R.drawable.image3,
			R.drawable.image5,R.drawable.image6,R.drawable.image7,R.drawable.image10,
			R.drawable.image13,R.drawable.image16,R.drawable.image17,
			R.drawable.image18,R.drawable.image19,R.drawable.image21,
			R.drawable.image22,R.drawable.image23,R.drawable.image24,
			R.drawable.image25,R.drawable.image28,R.drawable.image27,R.drawable.image29};
	Gallery g;	
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);
        g=(Gallery)findViewById(R.id.gallery);
		ImageAdapter adapter=new ImageAdapter(this,Images);
		g.setAdapter(adapter);
        }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    
}
         在上面这段代码中,我们定义了一个继承于BaseAdapter的类,这个类主要的作用是为Gallery控件提供一个显示数据的适配器,在Android中BaseAdapter是所有数据适配器的父类,当我们要为一个控件提供自定义适配器时,首先就要继承BaseAdapter类并实现其中的getItem()、getItemId()、GetView()方法,其中getView()是最为重要的方法,用于向一个View对象提供数据,在Android,所有的控件都继承于View类。我们将这个类定义为ImageAdapter,代码如下:

        

package com.android.gallery;

import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.Gallery.LayoutParams;
import android.widget.ImageView;
import android.content.Context;

public class ImageAdapter extends BaseAdapter
{
    
	private int[] Images;
	private Context Context;
	
	public ImageAdapter(Context c,int[] images)
    {
      this.Images=images;
      this.Context=c;
    }
    
	@Override
	public int getCount() 
	{
		return Images.length;
	}

	@Override
	public Object getItem(int position) 
	{
		ImageView i=new ImageView(this.Context);
		i.setBackgroundResource(Images[position]);
		return position;
	}

	@Override
	public long getItemId(int position) 
	{
		return position;
	}

	@Override
	public View getView(int position, View view, ViewGroup parent) 
	{
              ImageView Image=new ImageView(this.Context);
              Image.setImageResource(Images[position]);
              Image.setScaleType(ImageView.ScaleType.FIT_XY);
	      Image.setLayoutParams(new Gallery.LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT));
              Image.setAdjustViewBounds(true);
	      return Image;
	}
}
         本程序最终真机运行情况如下图:


         


   

昵    称:
验证码:

相关文档: