Android Gallery画廊

Android  Gallery画廊
一.AndroidGallery画廊

在智能手机上有许多可以滑动操作的图片集,在Android开发中用Gallery实现这种图片滑动效果的。Gallery是一个内部元素可以水平滚动,并且可以把当前选择的子元素定位在它中心的布局组件。Gallery组件可以横向显示一个图像列表,当单击当前图像的后一个图像时,这个图像列表会向左移动一格,当单击当前图像的前一个图像时,这个图像列表会向右移动一样。也可以通过拖动的方式来向左和向右移动图像列表。本就重点讲解Gallery的使用方法。

下面先给出一张图让大家直观的看看本文Gallery例子的运行界面效果。

二.AndroidGallery
1.新建一个项目Gallery_text
2.在xml文件中添加一个ImageView作为背景和一个Gallery画廊
(将ImageView放在Gallery上面避免覆盖)
  
<? xml version= "1.0" encoding= "utf-8" ?>
< RelativeLayout
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"
tools :context= "com.example.cxy.gallery_text.MainActivity" >
< ImageView
android :background= "@drawable/xj1"
android :layout_width= "match_parent"
android :layout_height= "match_parent"
android :id= "@+id/imageView" />
< Gallery
android :spacing= "15dp"
android :layout_width= "200dp"
android :layout_height= "150dp"
android :id= "@+id/gallery"
android :layout_gravity= "center_horizontal"
android :layout_alignParentBottom= "true"
android :layout_centerHorizontal= "true" />
</ RelativeLayout >


3.新建一个adapter包在新建一个ImageAdapter类

4.在测试类MainActivity中添加私有画廊控件
5.将图片存储在int数组中(加载的全部是图片)
6.添加一个ImageView用于整个app背景,声明一个inintent方法
7.实例化Gallery和ImageView控件
8.实例化ImageAdapter适配器
9.将适配器的数据存储到Gallery组件中(设置Gallery组件的Adapter对象)
10.给Gallery添加监听
11.将int数组中的图片放到ImageView中
package com.example.cxy.gallery_text;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Gallery;
import android.widget.ImageView;

import com.example.cxy.gallery_text.adapder.ImageAdapter;

public class MainActivity extends AppCompatActivity {
    //画廊控件
    private Gallery mGallery;
    //将图片存储在int数组中(加载的全部是图片)
    private int[] image={R.drawable.xj1,R.drawable.xj2,R.drawable.xj3,
			R.drawable.xj4,R.drawable.xj5,R.drawable.xj6};
    //整个app的背景图
    private ImageView img;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //声明一个inintent方法
        inintent();
    }

    private void inintent() {
        //实例化控件
        mGallery= (Gallery) findViewById(R.id.gallery);
        img= (ImageView) findViewById(R.id.imageView);
        //实例化ImageAdapter适配器
        ImageAdapter adapter=new ImageAdapter(image,this);
        //将适配器的数据存储到Gallery组件中(设置Gallery组件的Adapter对象)
        mGallery.setAdapter(adapter);
        //Gallery添加监听
        mGallery.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                //int数组中的图片放到ImageView                img.setBackgroundResource(image[position]);
            }
        });
    }
} 

12.在 ImageAdapter类中添加私有int数组(image)和上下文对象Context
13.构造私有int数组(image)和上下文对象Context的有参构造方法

14.继承
BaseAdapter
15.实例化imageView控件
16.将image中的图片放到ImageView中
17.返回当前imageView视图给用户看
package com.example.cxy.gallery_text.adapder;

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

/**
 * Created by admin on 2017/2/14.
 */
public class ImageAdapter extends BaseAdapter{
    private int[] image;
    private Context context;

    public ImageAdapter(int[] image, Context context) {
        //有参构造方法
        this.image = image;
        this.context = context;
    }
    //获取列表总长度
    @Override
    public int getCount() {
        //返回一个全局的列表的总长度
        return image.length;
    }
    //获取当前整个item(一整行)返回一个当前视图中的所有数据
    @Override
    public Object getItem(int position) {
        //返回下标
        return image[position];
    }
    //获取当前itemID
    @Override
    public long getItemId(int position) {
        //返回下标
        return position;
    }
    //获取视图              当前视图下标     指当前视图           上级父容器
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        //实例化imageView控件
        ImageView imageView=new ImageView(context);
        //image中的图片放到ImageView        imageView.setImageResource(image[position]);
        //返回当前imageView视图给用户看
        return imageView;
    }
}

三.最后就可以运行程序了


版权声明:本文为CodeFarmerCXY原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
THE END
< <上一篇
下一篇>>