Android画廊控件之Gallery
Gallery:用来显示图片列表。可以左右拖动。
如图:
图片取自http://www.cnblogs.com/menlsh/archive/2013/02/26/2934434.html
在Gallery属性标签中,android:spacing="2dp"属性用于指定Gallery列表图片之间的间隔为2dp。
Gallery只是作为一个画廊,放上图片还需有图片框。即需要一个容器。
ImageAdapter适配器
我们自己写一个名为ImageAdapter的类继承BaseAdapter
并重写以下四个方法:
(1)public int getCount();//获取图片的个数
(2)public Object getItem(int arg0);//获取arg0位置的图片
(3)public long getItemId(int arg0);//获取图片位置
(4)public View getView(int arg0, View arg1, ViewGroup arg2);//获取适配器中指定位置的视图对象
代码如下:
package com.example.hualang; import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView; public class ImageAdapter extends BaseAdapter { private Context mcontext;
public ImageAdapter(Context c)
{
this.mcontext=c;
}
private int[] imageIds={R.drawable.doupo,R.drawable.grzx,R.drawable.gwc,R.drawable.haizeiwang,R.drawable.huoying};
@Override
public int getCount() {
// TODO Auto-generated method stub
return imageIds.length;
} @Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return arg0;
} @Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return arg0;
} @Override
public View getView(int arg0, View arg1, ViewGroup arg2) {
// TODO Auto-generated method stub
ImageView i=new ImageView(this.mcontext);
i.setImageResource(this.imageIds[arg0]);//用于将ImageAdapter中的指定位置图片资源加载到
i.setLayoutParams(new Gallery.LayoutParams(180,180));
i.setScaleType(ImageView.ScaleType.FIT_CENTER);//用于设置imageView中图片的缩放显示格式。
return i;
} }
MainActivity只需在onCreate()方法加上((Gallery)findViewById(R.id.gallery)).setAdapter(new ImageAdapter(this));
ImageView的scaletype属性
ImageView.ScaleType|android:scaleType值的意义:
ImageView.ScaleType.CENTER|android:scaleType="center" 按图片的原来size居中显示,当图片长/宽超过View的长/宽,则截取图片的居中部分显示
ImageView.ScaleType.CENTER_CROP|android:scaleType="centerCrop" 按比例扩大图片的size居中显示,使得图片长 (宽)等于或大于View的长(宽)
ImageView.ScaleType.CENTER_INSIDE|android:scaleType="centerInside" 将图片的内容完整居中显示,通过按比例缩小或原来的size使得图片长(宽)等于或小于View的长(宽)
ImageView.ScaleType.FIT_CENTER|android:scaleType="fitCenter" 把图片按比例扩大(缩小)到View的宽度,居中显示
ImageView.ScaleType.FIT_END|android:scaleType="fitEnd" 把图片按比例扩大(缩小)到View的宽度,显示在View的下部分位置
ImageView.ScaleType.FIT_START|android:scaleType="fitStart" 把图片按比例扩大(缩小)到View的宽度,显示在View的上部分位置
ImageView.ScaleType.FIT_XY|android:scaleType="fitXY" 把图片按照指定的大小在View中显示
ImageView.ScaleType.MATRIX|android:scaleType="matrix" 用matrix来绘制
若想实现这种效果:
只需为Gallery加上监听器
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {
// TODO Auto-generated method stub
mimageview.setBackgroundResource(i.imageIds[arg2]);
}
以为个人将ImageView单独开一个文件导致下面的问题,若存放在同一个文件下则可直接使用。
使用监听器要获得图片id时,若直接使用mimageview.setBackgroundResource(imageIds[arg2]);imageIds无法被识别。则采取ImageAdapter i=new ImageAdapter(this);用i来得到ImageView类里面的图片资源id。以下是源码:
package com.example.hualang;
import com.example.hualang.ImageAdapter;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Gallery;
import android.widget.ImageView;
import android.widget.TextView;
public class MainActivity extends Activity { private ImageView mimageview=null;
ImageAdapter i=new ImageAdapter(this);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); Gallery mgallery=((Gallery)findViewById(R.id.gallery));
mimageview=(ImageView)findViewById(R.id.mimageView);
mgallery.setAdapter(i);
mgallery.setOnItemClickListener(new OnItemClickListener() { @Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
mimageview.setBackgroundResource(i.imageIds[arg2]);
}
}); }
}
当然也可采取将图片资源id数组配置到xml文件中,再获得。
Android画廊控件之Gallery的更多相关文章
- 第31讲 UI组件之 Gallery画廊控件
第31讲 UI组件之 Gallery画廊控件 1.Gallery的简介 Gallery(画廊)是一个锁定中心条目并且拥有水平滚动列表的视图,一般用来浏览图片,并且可以响应事件显示信息.Gallery只 ...
- Android 高级UI设计笔记11:Gallery(画廊控件)之Gallery基本使用
1. 这里要向大家介绍Android控件Gallery(画廊控件) Gallery控件主要用于横向显示图像列表,不过按常规做法.Gallery组件只能有限地显示指定的图像.也就是说,如果为Galler ...
- Android 开源控件与常用开发框架开发工具类
Android的加载动画AVLoadingIndicatorView 项目地址: https://github.com/81813780/AVLoadingIndicatorView 首先,在 bui ...
- android 基础控件(EditView、SeekBar等)的属性及使用方法
android提供了大量的UI控件,本文将介绍TextView.ImageView.Button.EditView.ProgressBar.SeekBar.ScrollView.WebView ...
- Android基本控件之Menus
在我们的手机中有很多样式的菜单,比如:我们的短信界面,每条短信,我们长按都会出现一个菜单,还有很多的种类.那么现在,我们就来详细的讨论一下安卓中的菜单 Android的控件中就有这么一个,叫做Menu ...
- Android:控件布局(相对布局)RelativeLayout
RelativeLayout是相对布局控件:以控件之间相对位置或相对父容器位置进行排列. 相对布局常用属性: 子类控件相对子类控件:值是另外一个控件的id android:layout_above-- ...
- Android:控件布局(线性布局)LinearLayout
LinearLayout是线性布局控件:要么横向排布,要么竖向排布 决定性属性:必须有的! android:orientation:vertical (垂直方向) .horizontal(水平方向) ...
- 矩阵, 矩阵 , Android基础控件之ImageView
天下文章大家抄,以下所有内容,有来自copy,有来自查询,亦有自己的总结(目的是总结出自己的东西),所以说原创,不合适,说是转载也不恰当,所以我称之为笔记,可惜没有此分类选项,姑且不要脸一点,选择为原 ...
- Android给控件添加触摸回调
Android给控件添加触摸回调 脑补一个场景,一个页面点击某个按钮会弹出PopupWindow,然后点击PopupWindow以外的任意位置关闭 效果图 实现方法 可以在布局的最外层容器监听触摸事件 ...
随机推荐
- IIS里面网站停止了,不能启动
IIS里面网站文件夹显示红色的叉叉,停止了,不能启动,所有站点都停止了: 原来是Word wide web publish service 服务停止了,启动就好了
- 【获取图像处理源码以及编译过程】在window下make。
google 找算法 发现一片不错论文,google作者的主页 找到了相关代码: http://cs.nyu.edu/~ccouprie/code.html code部分--------------- ...
- nyoj 56 阶乘中素数的个数
给定两个数m,n,其中m是一个素数. 将n(0<=n<=10000)的阶乘分解质因数,求其中有多少个m. 输入 第一行是一个整数s(0<s<=100),表示测试数据的组数随后的 ...
- 使用Visual Studio 2013编写可维护的本地可视化(natvis)
在Visual Studio 2012中,我们介绍了创建可视化使用原生类型的能力natvis文件. Visual Studio 2013中包含了一些改进,使其更容易编写可视化的类,在内部利用收集来存储 ...
- sunlime操作
ctrl+p 查找文件 @进行符号查找ctrl+h 替换文件 选中字符以后多次按 ctrl+D 跳过则按 ctrl+Kctrl+shift+d 复制多行alt+f3 多选 ctrl+shift+p ...
- 《算法:C语言实现》阅读笔记
//从今天起准备认真看完这本书.本渣虽然笨,但是窝懒啊.... //今天开始看第一章.希望坚持下去. 第一章 引言 通过讨论连通问题的几种算法,来引出算法的重要性. 1.1 连通问题的快速查找算法 感 ...
- PC-ADSL开机自动拨号方法
方法一:把adsl拨号的快捷方式放到“开始”菜单中“所有程序”中的“启动”中. 再到“控制面板”中的“网络连接”中找到你用的拨号连接,鼠标右键点击选择“属性”.然后,在窗口上部选择“选项”,把“拨号选 ...
- mongodb在java驱动包下的操作(转)
推荐几章很有用的文章 java操作参考文档 http://www.cnblogs.com/hoojo/archive/2011/06/02/2068665.html http://blog.csdn. ...
- Ubuntu 14.10安装SecureCRT 7.3
Ubuntu 14.10下安装SecureCRT 7.3 1.软件准备 Ubuntu14.10 x64 SecureCRT7.3的版本:scrt-7.3.0-657.ubuntu13-64.x86_6 ...
- HBase中的备份和故障恢复方法
本文将对Apache HBase可用的数据备份机制和大量数据的故障恢复/容灾机制做简要介绍. 随着HBase在重要的商业系统中应用的大量添加,很多企业须要通过对它们的HBase集群建立健壮的备份和故障 ...