现在的位置: 首页 > 综合 > 正文

android组件之gallery 、imageswitcher 详解

2018年01月18日 ⁄ 综合 ⁄ 共 4406字 ⁄ 字号 评论关闭

小弟最近研究了一段时间android,对其中的画廊很是喜爱。故此,公布源码(保证有效),与诸位志同道合的朋友一起分享。

废话不多说,这是小弟在CSDN上的第一篇博客,希望能开个好头。

 实例下载地址:http://download.csdn.net/detail/yanjunhui2011/4125631

 第一步:新建一个android工程

 

第二步:改写布局文件(main.xml)

main.xml

<?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/gallery" android:layout_width="fill_parent"
                  android:layout_height="wrap_content" android:layout_marginTop="30dp" />

 <ImageSwitcher android:id="@+id/imageswitcher"
                 android:layout_width="fill_parent" android:layout_height="wrap_content"
                 android:layout_marginTop="30dp" />

</LinearLayout>

第三步:在value文件夹下创建一个resource文件(attrs.xml)----该文件的作用是替我们找到gallery的设计风格。

attrs.xml

<?xml version="1.0" encoding="utf-8"?>

<resources>
      <declare-styleable name="Gallery">
            <attr name="android:galleryItemBackground" />
      </declare-styleable> 
</resources>

第四步:java类------方便起见,我只了一个类。

 

import android.app.Activity;

import android.content.Context;
import android.content.res.TypedArray;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.ViewSwitcher.ViewFactory;

public class GalleryActivity extends Activity implements OnItemSelectedListener, ViewFactory{
   
 private Gallery gallery;
 private ImageSwitcher imageSwitcher;
 private ImageAdapter imageAdapter;
 //此处注意,你如果做这个实验,需要准备15张图,并重命名为item1-15,放置在drawable目录中
 private int[] resIds = new int[]{ 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, R.drawable.item13,
   R.drawable.item14, R.drawable.item15 };
 private int count = 3;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        gallery = (Gallery)findViewById(R.id.gallery_main);
        imageAdapter = new ImageAdapter(this);
        gallery.setAdapter(imageAdapter);
        gallery.setOnItemSelectedListener(this);
        imageSwitcher = (ImageSwitcher)findViewById(R.id.imageswitcher_main);
        imageSwitcher.setFactory(this);
       
        imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in));
        imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_out));
    }
   
 public class ImageAdapter extends BaseAdapter{

  int mGalleryItemBackground;
  private Context mContext;
  public ImageAdapter(Context context){
   mContext = context;
   //选择style风格
   TypedArray typedArray = obtainStyledAttributes(R.styleable.Gallery);
   mGalleryItemBackground = typedArray.getResourceId(R.styleable.Gallery_android_galleryItemBackground, 0);
  }
  @Override
  public int getCount() {
   // TODO Auto-generated method stub
   return Integer.MAX_VALUE;
  }

  @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;
  }

  @Override
  public View getView(int position, View arg1, ViewGroup arg2) {
   // TODO Auto-generated method stub
   ImageView imageView = new ImageView(mContext);
   imageView.setImageResource(resIds[position%resIds.length]);
   imageView.setScaleType(ImageView.ScaleType.FIT_XY);
   imageView.setLayoutParams(new Gallery.LayoutParams(136, 88));
   imageView.setBackgroundResource(mGalleryItemBackground);
   return imageView;
  }
  
 }

 @Override
 public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
   long arg3) {
  // TODO Auto-generated method stub
  imageSwitcher.setImageResource(resIds[arg2]);
 }

 @Override
 public void onNothingSelected(AdapterView<?> arg0) {
  // TODO Auto-generated method stub  
 }

 @Override
 public View makeView() {
  // TODO Auto-generated method stub
  ImageView imageView = new ImageView(this);
  imageView.setBackgroundColor(0xff000000);
  imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
  imageView.setLayoutParams(new ImageSwitcher.LayoutParams(
    LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));  
  return imageView;
 }
}

 

 

抱歉!评论已关闭.