zoukankan      html  css  js  c++  java
  • android学习Gallery和ImageSwitch的使用

      Gallery组件被称之为画廊,是一种横向浏览图片的列表,在使用android API 19 Platform 时会发现Gallery被画上了横线,表明谷歌已经不推荐使用该组件了,

    * @deprecated This widget is no longer supported. Other horizontally scrolling
    * widgets include {@link HorizontalScrollView} and {@link android.support.v4.view.ViewPager}
    * from the support library. 
    取而代之的是 HorizontalScrollView,也就是横向的ScrollView 和 ViewPager,这两种组件前面都有了解到。
     Gallery和那些ListView 等都一样需要将资源加载进适配器,然后通过SetAdapter给控件设置适配器。
    1,自定义一个适配器 继承自BaseAdapter
    package com.example.lining.gallery;
    
    import android.content.Context;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.Gallery;
    import android.widget.ImageView;
    
    import java.util.List;
    
    /**
     * Created by lining on 2015/11/27.
     */
    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;
        }
        @Override
        public Object getItem(int position) {
            return res[position];
        }
    
        @Override
        public long getItemId(int position) {
            return position;
        }
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ImageView imageView = new ImageView(context);
            imageView.setImageResource(res[position]);
            imageView.setLayoutParams(new Gallery.LayoutParams(300, 200));//设置ImageView的宽和高
            imageView.setScaleType(ImageView.ScaleType.FIT_XY);//采用横向和纵向拉伸
            return imageView;
        }
    }
      2,设置适配器,并相应监听事件OnItemSelectListening
    public class MainActivity extends Activity implements AdapterView.OnItemSelectedListener {
    
        private int []res={R.drawable.a1,R.drawable.a2,R.drawable.a3,R.drawable.a5,R.drawable.a6};
        private Gallery gallery;
        private ImageAdapter imageAdapter;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            gallery = (Gallery)findViewById(R.id.gallery);
            imageAdapter = new ImageAdapter(res,this);
            gallery.setAdapter(imageAdapter);
            gallery.setOnItemSelectedListener(this);
            
        }
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id){
            
        }
    
        @Override
        public void onNothingSelected(AdapterView<?> parent) {
    
        }
    }
      这时我们可以在 onItemSelected响应函数中打印出我们选择的图片信息,onNothingSelected是只要其他的选项没有被选择就会被触发
      现在我们让选择的图片用ImageSwitch显示出来
      ImageSwitch 和ImageView的功能有点类似,它们都可以用于显示图片,区别是ImageSwitch的效果更炫,他可以
      指定图片切换时的效果
      ImageSwitch粗略的理解就是ImamgeView的选择器,他需要设置ViewFactory的方法,我们让ViewFactory的makeView方法返回
      ImageView
      3,在xml中加入ImageSwitch标签,并且设置淡入淡出的效果
         imageSwitcher = (ImageSwitcher)findViewById(R.id.iamgeSwitch);
            imageSwitcher.setFactory(this);
            imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in));
            imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this,android.R.anim.fade_out));

        同时需要实现ViewFactory的  ViewSwitcher.ViewFactory的监听事件

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

      4,这时一切都准备好了,只需要在Gallery的选择事件中设置ImageSwitch的资源就可以了

       imageSwitcher.setBackgroundResource(res[position]);

     





  • 相关阅读:
    一个黑客与电脑白痴的聊天纪录!!!
    java 面试
    hdu 5685 Problem A
    poj 2785 4 Values whose Sum is 0(折半枚举(双向搜索))
    android开发之service详解
    android开发之Notification学习笔记
    android反编译经验谈
    viewpager+fragment学习笔记
    android开发之broadcast学习笔记 分类: android 学习笔记 2015-07-19 16:33 32人阅读 评论(0) 收藏
    android开发之调试技巧 分类: android 学习笔记 2015-07-18 21:30 140人阅读 评论(0) 收藏
  • 原文地址:https://www.cnblogs.com/techdreaming/p/5001908.html
Copyright © 2011-2022 走看看