使用Gallery制作图片浏览器

MainActivity.class

public class MainActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener,ViewSwitcher.ViewFactory {
    private Gallery gallery;
    private ImageSwitcher imageSwitcher;

    //数据源
    private int[] res = {R.drawable.item1,R.drawable.item2,R.drawable.item3,R.drawable.item4,
                        R.drawable.item5,R.drawable.item6, R.drawable.item7,R.drawable.item8,
                        R.drawable.item9,R.drawable.item10,R.drawable.item11,R.drawable.item12};

    private ImageAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        gallery = (Gallery) findViewById(R.id.gallery);
        imageSwitcher = (ImageSwitcher) findViewById(R.id.imageswitch);

        adapter = new ImageAdapter(res,this);
        gallery.setAdapter(adapter);
        gallery.setOnItemSelectedListener(this);

        //imageSwitcher加载工厂factory
        imageSwitcher.setFactory(this);
        imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in));
        imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this,android.R.anim.fade_out));

    }
    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        imageSwitcher.setBackgroundResource(res[position % res.length]);
    }

    @Override
    public View makeView() {
        ImageView image = new ImageView(this);
        //等比例 居中缩放
        image.setScaleType(ImageView.ScaleType.CENTER.FIT_CENTER);
        return image;
    }

 ImageAdapter类 自己写的Adapter 继承于BaseAdapter

ImageAdapter.class
public class ImageAdapter extends BaseAdapter {
    private int[] res;
    private Context context;
    public ImageAdapter(int[] res,Context context){
        this.res        =   res;
        this.context    = context;
    }

    //获取数量
    @Override
    public int getCount() {
        return res.length;
//        return Integer.MAX_VALUE;  约等于无限数量

    }

    //获取项目
    @Override
    public Object getItem(int position) {
        return res[position];
    }

    //获取在适配器中的位置
    @Override
    public long getItemId(int position) {
        return position;
    }

    //获取单个的View
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        //new出一个新的View
        ImageView image = new ImageView(context);

        //给ImageView加载对应的图像资源
        image.setBackgroundResource(res[position]);
        //利用取余 无限图片位置 不受数目限制了 res[position % res.length]

        //设置view在Gallery中缩略图的大小
        image.setLayoutParams(new Gallery.LayoutParams(200,150));

        //设置缩放模式
        image.setScaleType(ImageView.ScaleType.FIT_XY);

        return image;
    }
}

 Activity.xml

<LinearLayout 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"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <Gallery
        android:id="@+id/gallery"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

    <ImageSwitcher
        android:layout_gravity="center_vertical"
        android:layout_below="@id/gallery"
        android:id="@+id/imageswitch"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    </ImageSwitcher>

</LinearLayout>

  

时间: 2024-08-03 03:07:18

使用Gallery制作图片浏览器的相关文章

Android攻城狮Gallery和ImageSwitcher制作图片浏览器

使用Gallery 和 ImageSwitcher 制作图片浏览器 Gallery介绍 我们有时候在手机上或者PC上看到动态的图片,可以通过鼠标或者手指触摸来移动它,产生动态的图片滚动效果,还可以根据你的点击或者触摸来触发其他事件响应.同样的,在Android中也提供这种实现,这就是通过Gallery在UI上实现缩略图浏览器. ------------------------- 谷歌已经将Gallery列为过期的控件,建议使用HorizonScrollView或者ViewPager. -----

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

为了使图片浏览器左右无限循环滑动 我们要自定义gallery的adapter 如果要想自定义adapter首先要了解这几个方法 @Override public int getCount() { // TODO Auto-generated method stub return 0; } @Override public Object getItem(int position) { // TODO Auto-generated method stub return null; } @Overri

【Android】画廊式的图片浏览器,使用HorizontalScrollView取代Gallery,OnClickListener的参数传递

本来,画廊式的图片浏览器,使用Android中的Gallery就能轻松完成,但是Google说Gallery每次切换图片时都要新建视图,造成太多的资源浪费,已经在安卓api 19之后被彻底废弃,Google推荐使用ViewPager或者HorizontalScrollView来实现Gallery的效果.网上对此的资料太杂,有部分资料写得太高深,完全看不懂.我搞了一个下午,才使用HorizontalScrollView完成画廊式的图片浏览器,如下图: 1.首先是对于res\values\strin

自定义Gallery控件实现简单3D图片浏览器

本篇文章主要介绍如何使用自定义的Gallery控件,实现3D效果的图片浏览器的效果. 话不多说,先看效果. 上面是一个自定义的Gallery控件,实现倒影和仿3D的效果,下面是一个图片查看器,点击上面的小图片,可以在下面查看大图片. 下面重点说一下,实现图片查看器的思路. 1.手机中图片路径的获取 首先,先不管图片如何展示,如果我们想实现图片查看器的功能,我们首先需要做的是获取到所有的图片的路径信息,只有这样,我们才能实现对图片的查看. 我们可以使用下面的代码实现 private List<St

Android中轴旋转特效实现,制作别样的图片浏览器

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/10766017 Android API Demos中有很多非常Nice的例子,这些例子的代码都写的很出色,如果大家把API Demos中的每个例子研究透了,那么恭喜你已经成为一个真正的Android高手了.这也算是给一些比较迷茫的Android开发者一个指出了一个提升自我能力的方向吧.API Demos中的例子众多,今天我们就来模仿其中一个3D变换的特效,来实现一种别样的图片浏览器

制作简单的图片浏览器

(1)加载图片和浏览图片的布局文件 图片预先放置在这里. 主要的布局文件 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fi

一步一步打造自己的Android图片浏览器(原创)

今天我们试着来制作一个自己的Android图片浏览器. 图片浏览器应该具有什么功能呢?鉴于不同的人不同的理解,这里提出一个基本的需求: 搜索手机内的所有图片,展示于一个列表中: 列表中展示的是图片的缩略图,点击图片之后,进入图片的大图显示: 在大图显示状态下,可以进行左右滑动,查看其它图片: 在大图显示状态下,我们应该可以查看图片的详细信息: 也许我们还可以支持大图下的放大与缩小? 好了,要求先这么多,我们来实现吧. 第一步:我们要得到手机内的所有图片,展示在一个列表中. android内部为我

仿快图系统自带图片浏览器应用源码项目

仿快图系统自带图片浏览器应用源码,最近在做一个微博i动态模块,需要查看他人相册照片或者微博内容图片等.看到QQ空间那个效果不错,尝试了不少方法来实现,均不是怎么理想.最初是想通过自定义GroupView和imageView来实现,结果在处理滑动事件和放大的图片拖曳不是很顺畅,自己也没深入解决,期望有高手实现了给分享下.后来看了网上的一些方法和帖子,尝试着拿别人的自定义包做一些修增自用.现在用gallery和imageVIew做的,感觉还不错.放上来最初的小demo,供大家参考分享. 源码下载:

ViewPager做图片浏览器,加载大量图片OOM的问题修正

1 /** 2 * @author CHQ 3 * @version 1.0 4 * @date 创建时间: 2016/7/26 17:18 5 * @parameter 6 * @return 7 * 图片查看器 8 * //可以查看网络图片 9 * //可以查看本地图片 10 */ 11 public class PhotoScan extends Activity { 12 private PhotoViewPager mViewPager; 13 private List<View>