`

Gallery、ImageSwitcher使用实现画廊功能

 
阅读更多

 

1 ImageSwitcher是图片切换的控件,它能实现图片切换时的动画效果,包括图片导入效果、图片消失效果等等。

   Android系统提供了许多不同的动画效果供我们选择。

 

2  TypedArray obtainStyledAttributes 作用就是从我们自己定义的attr.xml读取所需信息 

3 Gallery 组件的作用是提供图片的缩图功能,它可以将好多的图片排列成一列让使用者浏览和点选,

它也会随着使用者的操作来自动转换图像的位置

 代码:

 1 Activity 

  

public class Gallery2Activity extends Activity implements ViewFactory,OnItemClickListener  {

 
    private ImageSwitcher imageSwitcher;  
    private Gallery gallery;  
   //保存图片的数组
   int[] imageIds = new int[] { R.drawable.beibei, R.drawable.huanhuan,
			R.drawable.jingjing, R.drawable.nini, R.drawable.yingying };
	
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        // 设置窗体无标题  
        requestWindowFeature(Window.FEATURE_NO_TITLE);  
        setContentView(R.layout.activity_gallery2);  
        // 得到组件  
        imageSwitcher = (ImageSwitcher) this.findViewById(R.id.imageSwitcher1);  
        imageSwitcher.setFactory(this);  
        imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(this,  
                android.R.anim.fade_in));  
        imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(this,  
                android.R.anim.fade_out));  
  
        gallery = (Gallery) this.findViewById(R.id.gallery1);  
        gallery.setAdapter(new ImageAdapter());  
        //设置默认选择的图片  
        gallery.setSelection(imageIds.length/2);  
        //注册事件监听器  
        gallery.setOnItemClickListener(this);  
    }  
  
 
  
    @Override  
    public void onItemClick(AdapterView<?> adapterview, View view, int postion,  
            long id) {  
        imageSwitcher.setImageResource(imageIds[postion]);  
  
    }  
  
    // 重写视图工厂中的makeView方法,对ImageSwitcher显示的ImageView对象进行了设置  
    @Override  
    public View makeView() {  
        ImageView imageView = new ImageView(this);  
        imageView.setLayoutParams(new ImageSwitcher.LayoutParams(  
                LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));  
        return imageView;  
    }  
  
    /** 
     * 负责产生gallery中的图片 
     */  
    private class ImageAdapter extends BaseAdapter {  
        int mGalleryItemBackground;;  
        public ImageAdapter(){  
        	//获取自定义的背景属性值 
            TypedArray typedArray=obtainStyledAttributes(R.styleable.HelloGallery);  
            mGalleryItemBackground=typedArray.getResourceId(R.styleable.HelloGallery_android_galleryItemBackground, 0);  
            typedArray.recycle();  //必须调用的方法
        }  
  
        // 返回图片的个数,比如你想得到图片的个数  
        @Override  
        public int getCount() {  
            return imageIds.length;  
        }  
  
        @Override  
        public Object getItem(int position) {  
            return imageIds[position];  
        }  
  
        @Override  
        public long getItemId(int position) {  
            return position;  
        }  
  
        @Override  
        public View getView(int position, View convertView, ViewGroup parent) {  
  
            ImageView imageView = new ImageView(Gallery2Activity.this);  
            // 设置imageView中的图像资源  
            imageView.setImageResource(imageIds[position]);  
            /*// 设置图像大小尺寸自适应 
            imageView.setAdjustViewBounds(true);*/  
            imageView.setBackgroundResource(mGalleryItemBackground);  
            return imageView;  
        }  
    }  
}

 2   页面布局 

  

<RelativeLayout xmlns: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" >  
    <ImageSwitcher  
        android:id="@+id/imageSwitcher1"  
        android:layout_width="fill_parent"  
        android:layout_height="fill_parent"  
        android:layout_alignParentLeft="true"  
        android:layout_alignParentTop="true" >  
    </ImageSwitcher>  
  
    <Gallery  
        android:id="@+id/gallery1"  
        android:layout_width="fill_parent"  
        android:layout_height="60dp"  
        android:layout_alignParentBottom="true"  
        android:layout_alignParentLeft="true"  
        android:background="#55000000"  
        android:spacing="10dp" />  
</RelativeLayout> 

 3 自定义背景属性 values中的items.xml

   

<?xml version="1.0" encoding="utf-8"?>  
<resources>  
    <declare-styleable name="HelloGallery">  
        <attr name="android:galleryItemBackground" />  
    </declare-styleable>  
</resources> 

 

 

 

分享到:
评论

相关推荐

    安卓Gallery照片墙画廊图库相关-Android利用Gallery和ImageSwitcher实现在线相册图片预览功能异步加载图片.rar

    本项目“安卓Gallery照片墙画廊图库相关-Android利用Gallery和ImageSwitcher实现在线相册图片预览功能异步加载图片”就是针对这种场景的一个实例。在这个项目中,开发者使用了`Gallery`组件和`ImageSwitcher`来实现...

    Imageswitcher和Gallery实现同步

    当我们将这两个组件结合使用时,可以实现一个功能丰富的图片轮播效果。 `ImageSwitcher` 是一个视图切换器,继承自 `ViewSwitcher` 类。它的核心功能是提供两种视图之间的平滑过渡,比如在图片加载或更换时。它内部...

    基于ImageSwitcher实现图片左右切换

    总结来说,`ImageSwitcher`适用于简单图片轮播,它自带了切换动画,适合快速实现图片左右切换的功能。`ViewFlipper`适用于无手势的定时切换,而`ViewPager`则更适合需要多页面交互和内容展示的场景。根据实际项目...

    Android画廊组件实现图片切换

    在这个场景中,我们将探讨如何使用Gallery类以及ImageSwitcher来实现一个典型的图片切换效果,即上方显示小图的画廊,下方显示大图的功能。 首先,让我们深入了解Gallery类。Gallery继承自AbsSpinner,是一个水平...

    Gallery实现画廊

    "Gallery实现画廊"这个主题涉及到两个关键组件:Gallery和ImageSwitcher,它们都是Android SDK中用于图像展示的控件。下面我们将深入探讨这两个组件以及如何结合使用它们来构建一个功能丰富的画廊应用。 首先,`...

    源码 图片画廊图库 Android利用Gallery和ImageSwitcher实现在线相册图片预览功能(异步加载图片).zip

    免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,...

    画廊效果 Gallery+ImageSwitcher+ViewFlipper实现手机查看壁纸效果(程序源码).rar

    免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,...

    android Gallery画廊实例

    综上所述,通过组合使用`Gallery`和`ImageSwitcher`,开发者可以轻松地创建一个具有动态滚动和平滑切换效果的图片画廊应用。这个实例不仅展示了Android UI组件的强大功能,也强调了如何优化用户体验,特别是在处理...

    安卓Gallery照片墙画廊图库相关-GalleryImageSwitcherViewFlipper实现手机查看壁纸效果.rar

    这个压缩包文件"安卓Gallery照片墙画廊图库相关-GalleryImageSwitcherViewFlipper实现手机查看壁纸效果.rar"包含了使用`Gallery`和`ImageSwitcher`结合`ViewFlipper`来展示壁纸效果的示例代码。下面将详细介绍这些...

    源码 图片画廊图库 Gallery+ImageSwitcher+ViewFlipper实现手机查看壁纸效果(002).zip

    免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,...

    gallery画廊展示demo

    这个文件很可能包含了实现上述功能的源代码,包括Gallery的布局文件、Adapter类以及ImageSwitcher的相关逻辑。 总的来说,"gallery画廊展示demo"是一个关于Android应用中图片展示的经典案例,涉及到了UI组件的使用...

    android--Gallery 的基本使用

    本篇文章将深入解析`Gallery`组件的基本使用,以及与其相关的`ImageSwitcher`组件。 首先,我们来看`Gallery`组件。它继承自`AbsSpinner`,并提供了水平滚动的布局方式。`Gallery`通常包含一系列的子视图,如`...

    android gallery实现图片拖动

    在这个主题中,我们将深入探讨如何利用`Gallery`和`ImageSwitcher`来实现一个可拖动的图片展示功能,并在点击时显示相应的全屏图片。 首先,`Gallery`是一个基于`AbsSpinner`的视图,它以横向滚动的方式展示项目。...

    安卓源码包android画廊效果Gallery相册浏览MyCoversFlow完整代码等DEMO源码等10个合集.zip

    安卓源码包android画廊效果Gallery相册浏览MyCoversFlow完整...Gallery+ImageSwitcher+ViewFlipper实现手机查看壁纸效果 Gallery3D GalleryDemo Gallery相册浏览 Grallery3D MyCoversFlow完整代码(无图片) MyWorkText

    一个简单的android_gallery

    这个项目的核心功能是实现用户点击gallery组件中的图片后,将与之关联的另一组图片显示在一个`ImageSwitcher`组件上。下面我们将深入探讨这个知识点。 首先,`Gallery`是Android SDK提供的一种特殊的`View`,它允许...

    使用AndroidGallary访问sd卡pic文件夹下的图片画廊

    本项目"使用AndroidGallary访问sd卡pic文件夹下的图片画廊"旨在实现这一功能,它结合了`ImageSwitcher`和`Gallery`组件来展示SD卡中`pic`目录下的图像。下面我们将详细探讨相关的知识点。 1. **访问外部存储**: ...

    老罗android视频开发源码和ppt经典

    6.24 Gallery画廊控件 6.25 Spinner下拉列表控件 6.26 ImageSwitcher图片切换控件 6.27 GridView网格控件 6.28 TabHost卡片的使用 6.29 ViewStub惰性装载控件 6.30 ViewPager多页面滑动效果一 6.31 ViewPager多页面...

    Android实现幻灯片式图片浏览器

    在布局文件中添加图片切换控件ImageSwitcher和画廊视图控件Gallery res/layout/main.xml: &lt;?xml version=1.0 encoding=utf-8?&gt; &lt;LinearLayout xmlns:android=http://schemas.android.com/apk/res/android...

    android常见控件和使用方法

    画廊视图(Gallery)** - **功能介绍**:`Gallery`组件允许用户水平滑动浏览一系列项目,适用于图像或广告轮播等场景。 以上介绍了Android开发中常用的一些UI控件及其基本使用方法。掌握这些控件可以帮助开发者更...

Global site tag (gtag.js) - Google Analytics