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" ?>< RelativeLayoutxmlns: 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" >< ImageViewandroid :background= "@drawable/xj1"android :layout_width= "match_parent"android :layout_height= "match_parent"android :id= "@+id/imageView" />< Galleryandroid :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
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]; } //获取当前item的ID @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 版权协议,转载请附上原文出处链接和本声明。