1    在 xml 布局中添加 Gallery

activity_main.xml
  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. android:layout_width="match_parent"
  3. android:layout_height="match_parent">
  4. <Gallery
  5. android:id="@+id/gallery"
  6. android:layout_width="match_parent"
  7. android:layout_height="match_parent"/>
  8. </LinearLayout>

2    自定义 ImageAdapter

ImageAdapter.java
  1. package com.example.gallery;
  2. import java.util.List;
  3. import android.content.Context;
  4. import android.content.res.TypedArray;
  5. import android.view.View;
  6. import android.view.ViewGroup;
  7. import android.widget.BaseAdapter;
  8. import android.widget.Gallery;
  9. import android.widget.ImageView;
  10. @SuppressWarnings("deprecation")
  11. public class ImageAdapter extends BaseAdapter {
  12.  
  13. private Context context;
  14. private List<Integer> list;
  15. private TypedArray typedArray;
  16. private int item_background;
  17.  
  18. public ImageAdapter(Context context ,List<Integer> list)
  19. {
  20. this.context=context;
  21. this.list=list;
  22. this.typedArray = context.obtainStyledAttributes(R.styleable.gallery_style);
  23. item_background=typedArray.getResourceId(R.styleable.gallery_style_android_galleryItemBackground, 0);
  24. typedArray.recycle();
  25. }
  26. @Override
  27. public int getCount() {
  28. return list.size();
  29. }
  30. @Override
  31. public Object getItem(int position) {
  32. return position;
  33. }
  34. @Override
  35. public long getItemId(int position) {
  36. return position;
  37. }
  38. @Override
  39. public View getView(int position, View convertView, ViewGroup parent) {
  40. ImageView imageView = new ImageView(context);
  41. //设置显示的图片
  42. imageView.setImageResource(list.get(position));
  43.  
  44. //设置伸缩规格
  45. imageView.setScaleType(ImageView.ScaleType.FIT_XY);
  46.  
  47. //设置布局参数
  48. imageView.setLayoutParams(new Gallery.LayoutParams(150,100));
  49.  
  50. //设置背景边框
  51. imageView.setBackgroundResource(item_background);
  52.  
  53. return imageView;
  54. }
  55. }


3    每个 ImageView 的背景参数

res/values/attrs.xml
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <resources>
  3. <declare-styleable name="gallery_style">
  4. <attr name="android:galleryItemBackground" />
  5. </declare-styleable>
  6. </resources>

4    在 MainActivity 中绑定数据与设置监听

MainActivity.java
  1. package com.example.gallery;
  2. import java.util.ArrayList;
  3. import android.app.Activity;
  4. import android.os.Bundle;
  5. import android.view.View;
  6. import android.widget.AdapterView;
  7. import android.widget.Gallery;
  8. import android.widget.Toast;
  9. @SuppressWarnings("deprecation")
  10. public class MainActivity extends Activity {
  11. @Override
  12. protected void onCreate(Bundle savedInstanceState) {
  13. super.onCreate(savedInstanceState);
  14. setContentView(R.layout.activity_main);
  15. Gallery gallery=(Gallery)findViewById(R.id.gallery);
  16.  
  17. ArrayList<Integer>list=new ArrayList<Integer>();
  18. list.add(R.drawable.img1);
  19. list.add(R.drawable.img2);
  20. list.add(R.drawable.img3);
  21. list.add(R.drawable.img4);
  22. list.add(R.drawable.img5);
  23. list.add(R.drawable.img6);
  24. list.add(R.drawable.img7);
  25.  
  26. ImageAdapter adapter=new ImageAdapter(this,list);
  27. gallery.setAdapter(adapter);
  28.  
  29. gallery.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
  30. @Override
  31. public void onItemSelected(AdapterView<?> parent, View v,int position, long id) {
  32. Toast.makeText(getApplicationContext(), "选择了: "+
  33. String.valueOf(position), Toast.LENGTH_SHORT).show();
  34. }
  35.  
  36. @Override
  37. public void onNothingSelected(AdapterView<?> arg0) {
  38. //这里不做响应
  39. }
  40. });
  41. }
  42. }

5    图片资源

注:图片最好为 png 格式的图片,由于jpg是压缩后的图片,在android 中解压缩有可能导致内存溢出错误。
 

6    结果展示

 




注:转载请注明出处 :)   毕竟代码是一个一个敲出来的啊,O(∩_∩)O~




Android 之 Gallery的更多相关文章

  1. android 32 Gallery:横着滚动的列表

    Gallery:横着滚动的列表 mainActivity.java package com.sxt.day05_01; import java.util.ArrayList; import java. ...

  2. Android 解决Gallery下ScrollView滑动事件冲突

    在Gallery下,里面内容过长超出屏幕,这时我们可以用ScrollView来滚动,但是这样做了以后,会发现一个问题,Gallery的滑动事件和ScrollView的滑动事件起冲突,这时我们可以自定义 ...

  3. android学习Gallery和ImageSwitch的使用

    Gallery组件被称之为画廊,是一种横向浏览图片的列表,在使用android API 19 Platform 时会发现Gallery被画上了横线,表明谷歌已经不推荐使用该组件了, * @deprec ...

  4. Android之Gallery和Spinner-Android学习之旅(二十九)

    Spinner简介 spinner是竖直方向展开一个列表供选择.和gallery都是继承了AbsSpinner,AbsSpinner继承了AdapterView,因此AdaptyerView的属性都可 ...

  5. android学习---Gallery画廊视图

    Gallery与Spinner有共同父类:AbsPinner.说明Gallery与Spinner都是一个列表框. 它们之间的差别在于Spinner显示的是一个垂直的列表选择框,而Gallery显示的是 ...

  6. Android在Gallery中每次滑动只显示一页

    import android.content.Context; import android.util.AttributeSet; import android.view.KeyEvent; impo ...

  7. android:使用gallery和imageSwitch制作可左右循环滑动的图片浏览器

    为了使图片浏览器左右无限循环滑动 我们要自己定义gallery的adapter 假设要想自己定义adapter首先要了解这几个方法 @Override public int getCount() { ...

  8. Android 使用Gallery组件实现图片播放预览

    Gallery(画廊)扩展了LayoutParams,以此提供可以容纳当前的转换信息和先前的位置转换信息的场所. Activity package com.app.test01; import com ...

  9. Android 从Gallery获取图片

    本文主要介绍Android中从Gallery获取图片 设计项目布局 <LinearLayout xmlns:android="http://schemas.android.com/ap ...

随机推荐

  1. 5. openCV中常用函数学习

    一.前言 经过两个星期的努力,一边学习,一边写代码,初步完成了毕业论文系统的界面和一些基本功能,主要包括:1 数据的读写和显示,及相关的基本操作(放大.缩小和移动):2 样本数据的选择:3 数据归一化 ...

  2. C#使用DirectoryEntry操作IIS创建网站和虚拟路径

    原文:http://www.cnblogs.com/Aiooioo/archive/2011/05/30/cs-iis.html 在.Net中我们可以使用内置的类DirectoryEntry来承载II ...

  3. ios 异步多线程 获取数据

    简介 iOS有三种多线程编程的技术,分别是: (一)NSThread  (二)Cocoa NSOperation (三)GCD(全称:Grand Central Dispatch)   这三种编程方式 ...

  4. OpenSSl编译

    1.下载openssl代码,下载地址:http://www.openssl.org/source/ ,如果使用winrar解压失败的话(提示不能创建符号链接),可以关闭UAC.2.下载安装Active ...

  5. 安卓tabhost和子Activity通信方法

    发现很多同学在问这个问题 1个tabhost对应的类假设是T,假设包含2个子tab,每个是1个activity,假设叫a,b,对应的类假设是A和B 那么有这几个问题 1.a如何调用b的方法,或者说发送 ...

  6. 利用ICommand和ITool重写Arcengine中控件的事件

    Arcengine窗体开发中,不同命令或者工具可能会触发同一控件的同一事件,这样会造成该事件中代码的混乱.以主窗体的AxMapcontrol控件为例,当开始画图时因为有很多种类型的Feature,所以 ...

  7. What is an http upgrade?

    HTTP Upgrade is used to indicate a preference or requirement to switch to a different version of HTT ...

  8. TreeSet与HashSet的区别

    Set是java中一个不包含重复元素的collection.更正式地说,set 不包含满足 e1.equals(e2) 的元素对 e1 和 e2,并且最多包含一个 null 元素.正如其名称所暗示的, ...

  9. C++ Primer day 01

    1.标准输入与输出 #include<iostream> int main(){ int v1,v2; std::cout<<"Enter two numbers:& ...

  10. DataTable类

    DataTable是一个使用非常多的类,记得我在刚刚开始学习.Net的时候就已经了解并用过这个类,但如今再来看看,才发现这个类非常之复杂,复杂表现在哪些地方呢?主要是这个类与其他很多类都有关联,也就是 ...