zoukankan      html  css  js  c++  java
  • AndroidImageSwitcher案例分析详解

    强烈推荐:

    仿QQ--tab切换动画实例
    http://www.eoeandroid.com/thread-173365-1-1.html

    仿iphone 气泡短信 DEMO
    http://www.eoeandroid.com/thread-112801-1-1.html

    一个Gallery 3D效果实例
    http://www.eoeandroid.com/thread-182336-1-1.html

    ImageSwitcher图像切换器,可以切换器图像。ImageSwitcher类的继承图如下:

      java.lang.Object
     
      android.view.View
     
      android.view.ViewGroup
     
      android.widget.FrameLayout
     
      android.widget.ViewAnimator
     
      android.widget.ViewSwitcher
     
      android.widget.ImageSwitcher

    android.widget.ImageSwitcher 继承了android.widget.FrameLayout框架布局类。为了便于学习,我们把官方的ImageSwitcher例子 (ApiDemos/src/com/example/android/apis/view/ImageSwitcher1.java)做了一些修改,例 子运行如图7-6屏幕,点击屏幕下面的缩图,实现图片的切换。

    图7-6 ImageSwitcher

    请参考代码清单7-4,完整代码请参考chapter7_1工程中MyImageSwitcher代码部分。
    【代码清单7-4】

      public class MyImageSwitcher extends Activity {
     
      private ImageSwitcher mSwitcher;
     
      private Integer[] mThumbIds = { R.drawable.photo1_thumb,
     
      R.drawable.photo2_thumb, R.drawable.photo3_thumb,
     
      R.drawable.photo4_thumb, R.drawable.photo5_thumb,
     
      R.drawable.photo6_thumb };
     
      private Integer[] mImageIds = { R.drawable.photo1, R.drawable.photo2,
     
      R.drawable.photo3, R.drawable.photo4, R.drawable.photo5,
     
      R.drawable.photo6 };
     
      @Override
     
      public void onCreate(Bundle savedInstanceState) {
     
      super.onCreate(savedInstanceState);
     
      requestWindowFeature(Window.FEATURE_NO_TITLE);
     
      setContentView(R.layout.image_switcher);
     
      mSwitcher = (ImageSwitcher) findViewById(R.id.switcher);
     
      mSwitcher.setFactory(new ViewSwitcher.ViewFactory() {
     
      @Override
     
      public View makeView() {
     
      ImageView i = new ImageView(MyImageSwitcher.this);
     
      i.setBackgroundColor(0xFF000000);
     
      i.setScaleType(ImageView.ScaleType.FIT_CENTER);
     
      i.setLayoutParams(new ImageSwitcher.LayoutParams(
     
      LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
     
      return i;
     
      }
     
      });
     
      Gallery g = (Gallery) findViewById(R.id.gallery);
     
      g.setAdapter(new ImageAdapter(this));
     
      g.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
     
      @Override
     
      public void onItemSelected(AdapterView parent, View v,
     
      int position, long id) {
     
      mSwitcher.setImageResource(mImageIds[position]);
     
      }
     
      @Override
     
      public void onNothingSelected(AdapterView<?> parent) {
     
      }
     
      });
     
      … …
     
      }
     
      … …
     
      }

    在ImageSwitcher图像切换器中需要提供缩图数组集合mThumbIds和正常图片集合mImageIds.requestWindowFeature(Window.FEATURE_NO_TITLE)方法是设置没有标题的屏幕。
      实 现图像切换关键代码是mSwitcher.setFactory(new ViewSwitcher.ViewFactory() {…}),需要提供一个ViewSwitcher。ViewFactory接口为图像切换的时候创建一个View对象,由于是图像切换器,这个View是 一个ImageView类的实例,i.setBackgroundColor(0xFF000000)指定背景颜 色,i.setScaleType(ImageView.ScaleType.FIT_CENTER)指定排列方式为居中。下面的代码就是设置图片的布局 与父容器匹配模式:
      i.setLayoutParams(new ImageSwitcher.LayoutParams( LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
      在 屏幕下面的缩图是Gallery类型,点击缩图触发事件AdapterView.OnItemSelectedListener()时改变图片切换器的图 片源mSwitcher.setImageResource(mImageIds[position]),从而实现图片的切换。
      缩图的Gallery还必须实现一个BaseAdapter适配器,代码请参考代码清单7-5,完整代码请参考chapter7_1工程中MyImageSwitcher代码部分。
      【代码清单7-5】

      public class ImageAdapter extends BaseAdapter {
     
      public ImageAdapter(Context c) {
     
      mContext = c;
     
      }
     
      public int getCount() {
     
      return mThumbIds.length;
     
      }
     
      public Object getItem(int position) {
     
      return mThumbIds[position];
     
      }
     
      public long getItemId(int position) {
     
      return position;
     
      }
     
      public View getView(int position, View convertView, ViewGroup parent) {
     
      ImageView i = new ImageView(mContext);
     
      i.setImageResource(mThumbIds[position]);
     
      i.setAdjustViewBounds(true);
     
      i.setLayoutParams(new Gallery.LayoutParams(
     
      LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
     
      i.setBackgroundResource(R.drawable.picture_frame);
     
      return i;
     
      }
     
      private Context mContext;
     
      }

    getView() 方法中返回缩图的对象,i.setImageResource(mThumbIds[position])是设置图片 源,i.setAdjustViewBounds(true)设置图片对象边框自动调节,i.setLayoutParams()设置图片控件的布 局,i.setBackgroundResource设置背景图片。

  • 相关阅读:
    【秒懂音视频开发】03_重识音频
    【秒懂音视频开发】02_重识声音
    【秒懂音视频开发】01_移动通信技术的发展
    [mysql]错误解决之"Failed to start MySQL Server"
    Ubuntu 将Python从默认的2.7升级到3.* 版本
    宝塔面板后台设置免费SSL证书Let's Encrypt(三)
    Let's Encrypt 证书申请及配置(二)
    快速签发 Let's Encrypt 证书指南(一)
    DJANGO中多种重定向方法使用
    反解法|逆向思维
  • 原文地址:https://www.cnblogs.com/vus520/p/2647718.html
Copyright © 2011-2022 走看看