Android 高级UI设计笔记11:Gallery(画廊控件)之Gallery基本使用

1. 这里要向大家介绍Android控件Gallery(画廊控件)

  Gallery控件主要用于横向显示图像列表,不过按常规做法。Gallery组件只能有限地显示指定的图像。也就是说,如果为Gallery组件指定了10张图像,那么当Gallery组件显示到第10张时,就不会再继续显示了。

2. Gallery基本用法:

步骤如下:

(1)首先我们新建一个Android工程,工程目录如下:

(2)activity_main.xml(主布局文件),如下:

activity_main.xml添加ImageView、Gallery控件

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="vertical"
 6     tools:context="com.himi.gallerydemo.MainActivity" >
 7
 8     <TextView
 9         android:layout_width="fill_parent"
10         android:layout_height="wrap_content"
11         android:layout_marginBottom="5dp"
12         android:gravity="center_horizontal"
13         android:text="战斗机美图:"
14         android:textSize="40sp"
15         android:textStyle="bold" />
16
17     <ImageView
18         android:id="@+id/imageView"
19         android:layout_width="match_parent"
20         android:layout_height="400dp"
21         android:scaleType="fitCenter"
22         android:src="@drawable/ic_launcher" />
23
24     <!-- android:spacing 设置图片之间的间距 -->
25
26     <Gallery
27         android:id="@+id/gallery"
28         android:layout_width="match_parent"
29         android:layout_height="wrap_content"
30         android:layout_marginBottom="5dp"
31         android:spacing="2dp" />
32
33 </LinearLayout>

(3)如果我们想要加载的图片数据到Gallery,我们需要适配器,但是Android没有匹配Gallery的适配器,这里需要自定义适配器,如下:

 1 package com.himi.gallerydemo;
 2
 3 import android.content.Context;
 4 import android.view.View;
 5 import android.view.ViewGroup;
 6 import android.widget.BaseAdapter;
 7 import android.widget.Gallery;
 8 import android.widget.ImageView;
 9 import android.widget.LinearLayout;
10
11 /**
12  *
13  * 自定义ImageAdapter适配器
14  * 要实现Gallery画廊控件功能,需要一个容器来存放Gallery显示的图片。
15  * 我们可以使用一个继承自BaseAdapter类的派生类ImageAdapter来装这些图片。
16  * @author hebao
17  *
18  */
19 public class ImageAdapter extends BaseAdapter {
20     //上下文对象,提供给外界实例化ImageAdapter
21     private Context mContext;
22
23     //待加载到Gallery之中的图片id数组
24     public static int images[] = {
25             R.drawable.img1,
26             R.drawable.img2,
27             R.drawable.img3,
28             R.drawable.img4,
29             R.drawable.img5,
30             R.drawable.img6,
31             R.drawable.img7,
32             R.drawable.img8
33     };
34
35     //ImageAdapter构造方法
36     public ImageAdapter(Context mContext) {
37         this.mContext = mContext;
38     }
39
40     //获得图片的个数
41     @Override
42     public int getCount() {
43
44         return images.length;
45     }
46
47
48     //获取对应索引上的图片
49     @Override
50     public Object getItem(int position) {
51         // TODO Auto-generated method stub
52         return images[position];
53     }
54     //获取对应图片的索引id
55     @Override
56     public long getItemId(int position) {
57         // TODO Auto-generated method stub
58         return position;
59     }
60
61     //获取适配器中指定位置的视图对象
62     @Override
63     public View getView(int position, View convertView, ViewGroup parent) {
64         ImageView iv = new ImageView(mContext);
65         iv.setImageResource(images[position % images.length]);
66         iv.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
67         iv.setLayoutParams(new Gallery.LayoutParams(77, 77));
68         return iv;
69     }
70
71 }

(4)若想要实现Gallery图片选中,显示详细图片,触发的事件setOnItemSelectedListener,核心代码如下:

来到MainActivity,如下:

 1 package com.himi.gallerydemo;
 2
 3 import android.app.Activity;
 4 import android.os.Bundle;
 5 import android.view.View;
 6 import android.view.Window;
 7 import android.widget.AdapterView;
 8 import android.widget.AdapterView.OnItemClickListener;
 9 import android.widget.Gallery;
10 import android.widget.ImageView;
11 import android.widget.Toast;
12
13 public class MainActivity extends Activity {
14     private Gallery gallery;
15     private ImageView iv;
16
17     @Override
18     protected void onCreate(Bundle savedInstanceState) {
19         super.onCreate(savedInstanceState);
20         requestWindowFeature(Window.FEATURE_NO_TITLE);
21         setContentView(R.layout.activity_main);
22
23         iv = (ImageView) findViewById(R.id.imageView);
24         iv.setImageResource(ImageAdapter.images[0]);
25
26         gallery = (Gallery) findViewById(R.id.gallery);
27         gallery.setAdapter(new ImageAdapter(this));
28         gallery.setOnItemClickListener(new OnItemClickListener() {
29
30             @Override
31             public void onItemClick(AdapterView<?> parent,
32                     View view, int position, long id) {
33                 iv.setImageResource(ImageAdapter.images[position]);
34                 Toast.makeText(MainActivity.this, "点击是图片"+(position+1), 0).show();
35
36             }
37         });
38     }
39
40
41 }

运行效果如下:

  • 刚刚打开应用程序效果如下:

  • 点击第6张图片效果,如下:

时间: 2024-07-30 20:32:13

Android 高级UI设计笔记11:Gallery(画廊控件)之Gallery基本使用的相关文章

Android 高级UI设计笔记12:ImageSwitcher图片切换器

1. ImageSwitcher ImageSwitcher是Android中控制图片展示效果的一个控件,如:幻灯片效果...,颇有感觉啊.做相册一绝 2. 重要方法 setImageURI(Uri uri):设置图片地址 setImageResource(int resid):设置图片资源库 setImageDrawable(Drawable drawable):绘制图片 3. 设置动画效果 imageSwitcher.setInAnimation(AnimationUtils.loadAni

Android 高级UI设计笔记06:仿微信图片选择器

仿微信图片选择器: 一.项目整体分析: 1. Android加载图片的3个目标: (1)尽可能的去避免内存溢出. a. 根据图片的显示大小去压缩图片 b. 使用缓存对我们图片进行管理(LruCache) (2)用户操作UI控件必须充分的流畅. a. getView里面尽可能不去做耗时的操作(异步加载 + 回调显示) (3)用户预期显示的图片尽可能的快(图片的加载策略的选择,一般选择是LIFO). a. LIFO 2. 定义一个Imageloader完成上面1中的3个目标: Imageloader

Android 高级UI设计笔记19:PopupWindow使用详解

1. PopupWindow使用 PopupWindow这个类用来实现一个弹出框,可以使用任意布局的View作为其内容,这个弹出框是悬浮在当前activity之上的. 2. PopupWindow使用的案例: (1)首先是我们弹出框的布局设计,如下: 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.

Android 高级UI设计笔记08:Android开发者常用的7款Android UI组件(转载)

Android开发是目前最热门的移动开发技术之一,随着开发者的不断努力和Android社区的进步,Android开发技术已经日趋成熟,当然,在Android开源社区中也涌现了很多不错的开源UI项目,它们可以帮助Android开发者更方便快捷地完成想要的功能.本文是Android系列的第一篇,主要是向大家推荐一些常用的Android UI组件,它们都是开源的. 1.图表引擎 -  AChartEngine AChartEngine是一款基于Android的图表绘制引擎,它为Android开发者提供

Android 高级UI设计笔记22:Android 指示引导页(带圆点)

1. 引导页: 我们在安装某个软件首次运行时,大部分都会有一个引导页的提示,介绍软件新功能的加入或者使用说明等,支持滑动且下面会有几个圆点,显示共有多少页和当前图片的位置,类似如下效果: 2. 引导页具体实现功能如下: 可以左右滑动图片. 图片的索引圆点显示,看出当前图片所在的位置和图片的数量. 可任意左右滑动. 图片的索引圆点带有动画效果. 最后一页显示按钮,点击进入应用. 3. 引导页实现逻辑过程: 利用ViewPager实现用户引导界面. 在这里,我们需要用到google提到的一个支持包—

Android 高级UI设计笔记20:RecyclerView 的详解之RecyclerView添加Item点击事件

1. 引言: RecyclerView侧重的是布局的灵活性,虽说可以替代ListView但是连基本的点击事件都没有,这篇文章就来详细讲解如何为RecyclerView的item添加点击事件,顺便复习一下观察者模式. 2. 最终目的 模拟ListView的setOnItemClickListener()方法,调用者只须调用类似于setOnItemClickListener的东西就能获得被点击item的相关数据.   3. 原理 为RecyclerView的每个子item设置setOnClickLi

Android 高级UI设计笔记07:RecyclerView 的使用(ListView的扩展)

1. 使用RecyclerView       在 Android 应用程序中列表是一个非常重要的控件,适用场合非常多,如新闻列表.应用列表.消息列表等等,但是从Android 一出生到现在并没有非常好用的列表控件,早期的 ListView 用法非常复杂,尤其是自定义列表,简直就是地狱,因为其中还涉及到很多效率优化的问题,新手很难写出高效率的基于列表应用,而且 ListView 只能垂直方向呈现内容,使用很不灵活,为了解决这个缺陷,Android 官方推出了 RecyclerView 控件,用来

Android 高级UI设计笔记09:Android如何实现无限滚动列表

ListView和GridView已经成为原生的Android应用实现中两个最流行的设计模式.目前,这些模式被大量的开发者使用,主要是因为他们是简单而直接的实现,同时他们提供了一个良好,整洁的用户体验. 对于ListView和GridView一个共同基本要求是:当用户向下滚动时可以动态加载数据支持无限滚动.下面教你如何在自己的应用中实现这个特性. 具体流程如下: (1)我们需要的一个主要组件是InfiniteScrollListener类,它实现了OnScrollListener接口.让我们直接

Android 高级UI设计笔记24:Android 夜间模式之 WebView 实现白天 / 夜间阅读模式 (使用JavaScript)

1. 问题引入: 前面我们是使用方法 降低屏幕亮度(不常用) 和 替换theme,两者都是针对Activity的背景进行白天.夜间模式的交换,但是如果我们显示的是Html的内容,这个时候改怎么办? 分析:首先加载Html页面肯定是要用到WebView的,通过loadUrl的方法可以把html页面显示到webView,我们知道Android可以与JavaScript进行交互,就是说可以在JavaScript中调用Android的代码,也可以在Android中调用JavaScript代码. 所以就有