`
liveHappy
  • 浏览: 82510 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

android 拖动效果 Gallery 实例

阅读更多
大多数手机上都会有类似的动态效果,因为这样的动画会让人耳目一新。苹果曾经因此吸引了不少手机粉丝。那么在android上同样也可以实现此效果。
Gallery的功能就是用来显示这样的效果。简单说明一下Gallery是什么样的:
假设你放入了10个图片,那么你用Gallery的时候,用此容器来存放你的图片,在手机界面上会把图片显示出来(android的系统中带有自己的Gallery的风格)。那么你在点击后一张图片的时候前一张图片就会往前移动,而你点击的图片就会突出显示。你也可以触摸拖动图片,任意选择你想要的那张图片突出显示。
  不过,通常的Gallery在你指定了10张或者更多的图片时,到了最后一张就不在循环显示了。也就是说,它只能限定显示图片。
  通过一个实例来完成Gallery的用法。
  首先:我们要知道Gallery是显示图片用的,那么就需要指定他的显示布局。
我们需要一个ImageView来完成此布局,而此布局需要继承BaseAdapter,来实现其中的方法来为Gallery实现效果。
我们所有要用到的图片要放在一个int型数组中,然后通过ImageView的setImageResource方法来设置需要显示的图片,然后在把此图片通过ImageView对象显示在手机屏幕上。
ImageAdapter类:

public class ImageAdapter extends BaseAdapter {
        // 用来设置ImageView的风格
	int mGalleryItemBackground;
	private Context context;  
	//图片的资源ID
	private Integer[] mImageIds = {
		R.drawable.img1,	
		R.drawable.img2,	
		R.drawable.img3,	
		R.drawable.img4,	
		R.drawable.img5,	
		R.drawable.img6,	
		R.drawable.img7,	
		R.drawable.img8	
	};
        //构造函数
	public ImageAdapter(Context context) {
		// TODO Auto-generated constructor stub
		this.context = context;
	}
	//返回所有图片的个数
	@Override
	public int getCount() {
		// TODO Auto-generated method stub
		return mImageIds.length;
	}
        //返回图片在资源的位置
	@Override
	public Object getItem(int position) {
		// TODO Auto-generated method stub
		return position;
	}
        //返回图片在资源的位置
	@Override
	public long getItemId(int position) {
		// TODO Auto-generated method stub
		return position;
	}
        //此方法是最主要的,他设置好的ImageView对象返回给Gallery
	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		// TODO Auto-generated method stub
		ImageView imageView = new ImageView(context);
                //通过索引获得图片并设置给ImageView
		imageView.setImageResource(mImageIds[position]);
                //设置ImageView的伸缩规格,用了自带的属性值
		imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
                //设置布局参数
		imageView.setLayoutParams(new Gallery.LayoutParams(120, 120));
                //设置风格,此风格的配置是在xml中
		imageView.setBackgroundResource(mGalleryItemBackground);
		return imageView;
	}

	public int getmGalleryItemBackground() {
		return mGalleryItemBackground;
	}

	public void setmGalleryItemBackground(int mGalleryItemBackground) {
		this.mGalleryItemBackground = mGalleryItemBackground;
	}

}

上面的代码实现了要用来放置在Gallery中的ImageView对象。其中上面有几个部分要注意:
1.mGalleryItemBackground 此变量是用来设置ImageView的显示风格的,那么它的配置我写在了一个xml中(/valus/attrs.xml):
<?xml version="1.0" encoding="utf-8"?>
<resources>
	<declare-styleable name="Gallery">
		<attr name="android:galleryItemBackground"/>
	</declare-styleable>
</resources>

同时,我在网上看到有人把读取这个的代码
引用
TypedArray typedArray = obtainStyledAttributes(R.styleable.Gallery);

同时也放在了构造函数中,但是我尝试了去这么做失败了,所以我把此代码提取了出来放在了Activity中设置,那么需要把mGalleryItemBackground 变量在ImageAdapter中放入set()方法。
2.getCount和getView。其中getCount是返回图片总数,但这个总数不能大于图片的实际数(可以小于),否则会抛出越界异常。
而getView是核心,Gallery组件要显示某一个图片时,就会调用getView方法,并将当前的图片索引(position参数)传给该方法,然后返回一个ImageView对象。它不是一下把所有的图片都显示出来,而是即时的显示。
那么在看activity中,在这里就简单了。
Activity01类:
public class Activity01 extends Activity {
    /** Called when the activity is first created. */
	private Gallery myGallery;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        myGallery = (Gallery)findViewById(R.id.myGallery);
        //这段代码是杨丰盛老师的《android开发揭秘》中这样写的
        //myGallery.setBackgroundResource(R.drawable.bg0);
        ImageAdapter adapter = new ImageAdapter(this);
        //设置背景风格。Gallery背景风格定义在attrs.xml中
        TypedArray typedArray = obtainStyledAttributes(R.styleable.Gallery);
        adapter.setmGalleryItemBackground(typedArray.getResourceId(R.styleable.Gallery_android_galleryItemBackground, 0));
        myGallery.setAdapter(adapter);
    }
}

main.xml(这里只放入了一个Gallery):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<Gallery
	android:id="@+id/myGallery"
	android:layout_width="fill_parent"
	android:layout_height="wrap_content"/>
</LinearLayout>

ok,到这里就结束了。我把我做的例子上传供大家下载学习。
ps:用到的图片都是杨老师的例子中的,我手中也有一本他的书,但是书中解说的很少,所以自己总结了一下。
分享到:
评论
4 楼 qxjandyc 2014-04-05  
您好,关于您说的引用
TypedArray typedArray = obtainStyledAttributes(R.styleable.Gallery);

同时也放在了构造函数中,但是我尝试了去这么做失败了,是因为,没有引用上下文context,所以直接调用是不行的
TypedArray typedArray = context.obtainStyledAttributes(R.styleable.Gallery);
3 楼 lgp0203 2013-10-16  
很好,顶一个
2 楼 zhangxiweicaochen 2012-03-31  
good!!!!!
1 楼 lzyfn 2011-11-24  
好!!!

相关推荐

    Android Gallery控件使用实例

    在Activity中,我们需要获取到Gallery实例并设置适配器: ```java Gallery gallery = (Gallery) findViewById(R.id.gallery); List&lt;Bitmap&gt; images = new ArrayList(); // 填充images列表 ImageAdapter adapter = ...

    android Gallery 拖动式 图片浏览

    在这个“android Gallery 拖动式 图片浏览”项目中,我们主要探讨了如何在Android应用中实现一个可以拖动浏览图片的`Gallery`。 `Gallery`是Android SDK中的一个视图组件,位于`android.widget`包下。它的核心特性...

    android开发实例大全_王东华

    全书分为18章,分别讲解了UI布局实例集锦、控件实例集锦、自动化服务实例集锦、数据存储实例集锦、电话和短信实例集锦、图形图像实例集锦、和网络有关的实例集锦、多媒体实例集锦、Google地图实例集锦、GoogleAPI...

    Android开发实例大全.pdf

    ### Android开发实例大全知识点总结 #### 第一章 UI布局开发实例集锦 1. **线性布局LinearLayout**:用于按照水平或垂直方向线性排列控件,是布局中最基本的组件。 2. **相对布局RelativeLayout**:通过相对定位的...

    Android UI控件之Gallery实现拖动式图片浏览效果

    在Android中是通过Gallery来实现拖动效果的。 通过Gallery可以实现各种各样的效果,此篇文章只是简要谈谈他的用法,至于后续的一些效果 有机会的时候做一个整理。  首先看看其简单实现吧!本次实例是通过选取图片...

    Android开发实现Gallery画廊效果的方法

    本文实例讲述了Android开发实现Gallery画廊效果的方法。分享给大家供大家参考,具体如下: 画廊 使用Gallery表示,按水平方向显示内容,并且可以用手指直接拖动图片移动,一般用来浏览图片,被选中的选项位于中间,...

    android开发资料大全

    android用户界面之Gallery教程实例汇总 android用户界面之按钮(Button)教程实例汇 android用户界面之ProgressBar教程实例汇总 android用户界面之WebView教程实例汇总 android用户界面之GridView教程实例汇总 android...

    安卓Gallery照片墙画廊图库相关-相册加载和图片拖拽本例子加载相册相片效果和添加拍照功能.rar

    【标题】"安卓Gallery照片墙画廊图库相关-相册加载和图片拖拽本例子加载相册相片效果和添加拍照功能.rar" 涉及到的是Android平台上的一个应用示例,主要展示了如何创建一个类似Gallery的照片墙画廊图库,并且实现了...

    安卓Gallery照片墙画廊图库相关-Android实现左右滑动查看图片效果.rar

    在给定的资源中,“安卓Gallery照片墙画廊图库相关-Android实现左右滑动查看图片效果.rar”提供了一个实现此类功能的示例。 Gallery组件在早期版本的Android API中被广泛用于实现图片浏览,但在API 16之后被替换为...

    Android入门之Gallery+ImageSwitcher用法实例解析

    在Android开发中,`Gallery`和`ImageSwitcher`是两个非常实用的控件,尤其对于展示图片轮播或创建类似相册的应用来说。本文将深入解析如何在Android入门项目中结合使用这两个控件,为Android初学者提供有价值的参考...

    Gallery可拖动和放大图片

    总的来说,“Gallery可拖动和放大图片”是一个结合了`Gallery`滑动和图片手势操作的实例,它展示了如何在Android应用中实现高效且交互丰富的图片浏览功能。通过深入学习和理解这个示例,开发者可以为自己的应用添加...

    android开发揭秘PDF

    4.2.15 拖动效果(Gallery) 4.2.16 切换图片(hmgeSwilcher) 4.2.17 网格视图(GridView) 4.2.18 卷轴视图(ScrollView) 4.2.19 进度条(ProgressBar) 4.2.20 拖动条(SeekBar) 4.2.21 状态栏提示(Notification、...

    Android程序研发源码Android 仿UC,墨迹天气左右拖动多屏幕显示效果源码.rar

    在Android程序开发中,创建一个类似UC浏览器或墨迹天气那样可以左右拖动切换的多屏幕显示效果是一项常见的需求。这种效果通常被称为“滑动画廊”或“Fling Gallery”,它提供了用户友好的界面,使得用户可以通过手势...

    Android入门到精通源代码.

    5.1.5 切换图片(ImageSwitcher和Gallery) 5.1.6 标签切换(Tab) 5.2 通用XML属性 第6章 Android菜单和布局设计 6.1 菜单(Menu) 6.1.1 上下文菜单(ContextMenu) 6.1.2 选项菜单(OptionsMenu) 6.1.3 基于XML...

    Android高级组件Gallery画廊视图使用方法详解

    Android高级组件Gallery画廊视图是一种常用的UI组件,能够按水平方向显示内容,并且可用手指直接拖动图片移动。一般用来浏览图片,被选中的选项位于中间,并且可以响应事件显示信息。下面将详细介绍Gallery画廊视图...

    《Android应用开发揭秘》附带光盘代码.

     4.2.15 拖动效果(Gallery)  4.2.16 切换图片(hmgeSwilcher)  4.2.17 网格视图(GridView)  4.2.18 卷轴视图(ScrollView)  4.2.19 进度条(ProgressBar)  4.2.20 拖动条(SeekBar)  4.2.21 状态栏提示...

    Android应用开发揭秘pdf高清版

    4.2.15 拖动效果(Gallery) 4.2.16 切换图片(hmgeSwilcher) 4.2.17 网格视图(GridView) 4.2.18 卷轴视图(ScrollView) 4.2.19 进度条(ProgressBar) 4.2.20 拖动条(SeekBar) 4.2.21 状态栏提示(Notification、...

    《Android应用开发揭秘》源码

     4.2.15 拖动效果(Gallery)  4.2.16 切换图片(hmgeSwilcher)  4.2.17 网格视图(GridView)  4.2.18 卷轴视图(ScrollView)  4.2.19 进度条(ProgressBar)  4.2.20 拖动条(SeekBar)  4.2.21 状态栏提示...

    Android开发应用实战详解源代码

    7.4 照片拖动效果 7.5 存储卡中的图片 7.6 获取内置媒体文件 7.7 调节音量 7.8 播放mp3资源文件 7.9 录制音频 7.10 实现相机拍照功能 7.10.1 实现原理 7.10.2 编程思想 7.10.3 具体实现 7.11 自制3gp影片播放器 7.12...

    Google.Android开发入门与实战

     《Android开发入门与实战》内容上涵盖了用Android开发的大部分场景,从Android基础介绍、环境搭建、SDK介绍、Market使用,到应用剖析、组件介绍、实例演示等方面。从技术实现上,讲解了5个Android平台下的完整综合...

Global site tag (gtag.js) - Google Analytics