Gallery单独使用,Gallery和ImageSwitcher组件结合使用的例子


Gallery单独使用

MainActivity.java

package com.android.gallerydemo;
  
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView;
import android.widget.Toast;
  
public class MainActivity extends Activity {
  
  private Gallery gallery;
  @Override
  public void onCreate(Bundle savedInstanceState) {
  
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    gallery = (Gallery)findViewById(R.id.gallery);
    //设置图片适配器
    gallery.setAdapter(new ImageAdapter(this));
    //设置监听器
    gallery.setOnItemClickListener(new OnItemClickListener() {
     @Override
     public void onItemClick(AdapterView<?>parent, View v, int position, long id) {
      Toast.makeText(MainActivity.this, "点击了第"+(position+1)+"张图片", Toast.LENGTH_LONG).show();
     }
   });
  }
}
  
class ImageAdapter extends BaseAdapter{
 //声明Context 
 private Context context;
 //图片源数组
 private Integer[] imageInteger={
     R.drawable.pic1,
     R.drawable.pic2,
     R.drawable.pic3,
     R.drawable.pic4,
     R.drawable.pic5,
     R.drawable.pic6,
     R.drawable.pic7
 };
   
 //声明 ImageAdapter
 public ImageAdapter(Context c){
   context = c;
 }
  
 @Override
 //获取图片的个数
 public int getCount() {
   return imageInteger.length;
 }
  
 @Override
 //获取图片在库中的位置
 public Object getItem(int position) {
  
   return position;
 }
  
 @Override
 //获取图片在库中的位置
 public long getItemId(int position) {
   // TODO Auto-generated method stub
   return position;
 }
  
 @Override
 public View getView(int position, View convertView, ViewGroup parent) {
  
   ImageView imageView = new ImageView(context);
   //给ImageView设置资源
   imageView.setImageResource(imageInteger[position]);
   //设置比例类型
   imageView.setScaleType(ImageView.ScaleType.FIT_XY);
   //设置布局 图片128x192显示
   imageView.setLayoutParams(new Gallery.LayoutParams(128, 192));
   return imageView;
 }
}
main.xml

<?xml version="1.0" encoding="utf-8"?>
<Gallery xmlns:android="http://schemas.android.com/apk/res/android" 
   android:id="@+id/gallery"    
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:gravity="center_vertical"
   android:background="?android:galleryItemBackground"
/>

效果图:



Gallery和ImageSwitcher组件结合使用的例子

MainActivity.java


package com.android.gallerytest;
  
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.Gallery.LayoutParams;
import android.widget.ViewSwitcher.ViewFactory;
  
public class MainActivity extends Activity implements OnItemSelectedListener,
     ViewFactory {
    
   private ImageSwitcher mSwitcher;
   //大图片对应的缩略图源数组
   private Integer[] mThumbIds = { R.drawable.sample_thumb_0,
       R.drawable.sample_thumb_1, R.drawable.sample_thumb_2,
       R.drawable.sample_thumb_3, R.drawable.sample_thumb_4,
       R.drawable.sample_thumb_5, R.drawable.sample_thumb_6,
       R.drawable.sample_thumb_7 };
   //大图片源数组
   private Integer[] mImageIds = { R.drawable.sample_0, R.drawable.sample_1,
       R.drawable.sample_2, R.drawable.sample_3, R.drawable.sample_4,
       R.drawable.sample_5, R.drawable.sample_6, R.drawable.sample_7 };
  
   @Override
   public void onCreate(Bundle savedInstanceState) {
     super .onCreate(savedInstanceState);
     //设置窗口无标题
     requestWindowFeature(Window.FEATURE_NO_TITLE);
     setContentView(R.layout.main);
     mSwitcher = (ImageSwitcher) findViewById(R.id.switcher);
     //注意在使用一个ImageSwitcher之前,
     //一定要调用setFactory方法,要不setImageResource这个方法会报空指针异常。
     mSwitcher.setFactory( this );
     //设置动画效果
     mSwitcher.setInAnimation(AnimationUtils.loadAnimation( this ,
         android.R.anim.fade_in));
     mSwitcher.setOutAnimation(AnimationUtils.loadAnimation( this ,
         android.R.anim.fade_out));
  
     Gallery g = (Gallery) findViewById(R.id.gallery);
      
     //添加OnItemSelectedListener监听器
     g.setAdapter( new ImageAdapter( this ));
     g.setOnItemSelectedListener( this );
  
   }
   //创建内部类ImageAdapter
   public class ImageAdapter extends BaseAdapter {
     public ImageAdapter(Context c) {
       mContext = c;
     }
     public int getCount() {
       return mThumbIds.length;
     }
     public Object getItem( int position) {
       return 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;
   }
  
   @Override
   //实现onItemSelected()方法,更换图片
   public void onItemSelected(AdapterView<?> adapter, View v, int position,
       long id) {
     //设置图片资源
     mSwitcher.setImageResource(mImageIds[position]);
   }
  
   @Override
   public void onNothingSelected(AdapterView<?> arg0) {
  
   }
  
   @Override
   //实现makeView()方法,为ImageView设置布局格式
   public View makeView() {
     ImageView i = new ImageView( this );
     //设置背景颜色
     i.setBackgroundColor( 0xFF000000 );
     //设置比例类型
     i.setScaleType(ImageView.ScaleType.FIT_CENTER);
     //设置布局参数
     i.setLayoutParams( new ImageSwitcher.LayoutParams(
         LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
     return i;
   }
}

main.xml


<?xml version= "1.0" encoding= "utf-8" ?>
<RelativeLayout xmlns:android= "http://schemas.android.com/apk/res/android" 
   android:layout_width= "fill_parent" 
   android:layout_height= "fill_parent"
   >  
   <ImageSwitcher 
     android:id= "@+id/switcher"
     android:layout_width= "fill_parent"
     android:layout_height= "fill_parent"
     android:layout_alignParentTop= "true"
     android:layout_alignParentLeft= "true"
     />  
   <Gallery
     android:id= "@+id/gallery"
     android:background= "#55000000"
     android:layout_width= "fill_parent"
     android:layout_height= "60dp"
     android:layout_alignParentBottom= "true"
     android:layout_alignParentLeft= "true"
     android:gravity= "center_vertical"
     android:spacing= "16dp"
     />
</RelativeLayout>

效果图:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值