Android Gallery实现选中放大的效果


最近也在一点点学习,还是老样子,把新学的知识总结一下,方便以后参考用。

现在大多Android入门教程中,都给大家教了gallery的基本用法,浏览图片时大小一样,比较死板。咱们这里稍微加一点点效果:选中放大。

其实也非常简单,就是在适配器中public View getView(int position, View convertView, ViewGroup parent) {}这个抽象方法中做相应处理即可:选中的设置大一点,未选中的设置小一点!

效果实现如下:

闲话少说,贴代码:

galleryAdapter.java

  1. package com.contacts;  
  2.   
  3. import android.content.Context;  
  4. import android.view.View;  
  5. import android.view.ViewGroup;  
  6. import android.view.animation.Animation;  
  7. import android.view.animation.AnimationUtils;  
  8. import android.widget.BaseAdapter;  
  9. import android.widget.Gallery;  
  10. import android.widget.ImageView;  
  11.   
  12. public class galleryAdapter extends BaseAdapter{  
  13.     Context mContext;  
  14.     private int selectItem;  
  15.     private int drawable1[]=new int[] {R.drawable.center,R.drawable.left,R.drawable.right};  
  16. public galleryAdapter(Context mContext){  
  17.     this.mContext=mContext;  
  18. }  
  19.     @Override  
  20.     public int getCount() {  
  21.         // TODO Auto-generated method stub  
  22.         return Integer.MAX_VALUE;          //这里的目的是可以让图片循环浏览  
  23.     }  
  24.   
  25.     @Override  
  26.     public Object getItem(int position) {  
  27.         // TODO Auto-generated method stub  
  28.         return position;  
  29.     }  
  30.   
  31.     @Override  
  32.     public long getItemId(int position) {  
  33.         // TODO Auto-generated method stub  
  34.         return position;  
  35.     }  
  36.     public void setSelectItem(int selectItem) {  
  37.           
  38.         if (this.selectItem != selectItem) {                  
  39.         this.selectItem = selectItem;  
  40.         notifyDataSetChanged();                 
  41.         }  
  42.     }  
  43.       
  44.   
  45.     @Override  
  46.     public View getView(int position, View convertView, ViewGroup parent) {  
  47.         // TODO Auto-generated method stub  
  48.         ImageView imageView=new ImageView(mContext);  
  49.         imageView.setImageResource(drawable1[position%drawable1.length]);  
  50. //取余,让图片循环浏览  
  51.           
  52.         if(selectItem==position){  
  53.         Animation animation = AnimationUtils.loadAnimation(mContext, R.anim.my_scale_action);    //实现动画效果  
  54.         imageView.setLayoutParams(new Gallery.LayoutParams(105,120));  
  55.           imageView.startAnimation(animation);  //选中时,这是设置的比较大  
  56.                     }  
  57.         else{  
  58.             imageView.setLayoutParams(new Gallery.LayoutParams(75,90));  
  59. //未选中  
  60.         }  
  61.         return imageView;  
  62.     }  
  63.   
  64. }  

ContactsActivity.java

  1. package com.contacts;  
  2.   
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.view.View;  
  6. import android.widget.AdapterView;  
  7. import android.widget.AdapterView.OnItemSelectedListener;  
  8. import android.widget.Gallery;  
  9. import android.widget.ImageSwitcher;  
  10. import android.widget.ImageView;  
  11. import android.widget.LinearLayout.LayoutParams;  
  12.   
  13. public class ContactsActivity extends Activity implements OnItemSelectedListener {  
  14.     /** Called when the activity is first created. */  
  15.     private galleryAdapter adapter;  
  16.     @Override  
  17.     public void onCreate(Bundle savedInstanceState) {  
  18.         super.onCreate(savedInstanceState);  
  19.         setContentView(R.layout.main);  
  20.         Gallery gallery=(Gallery)findViewById(R.id.gallery);  
  21.         adapter=new galleryAdapter(this);  
  22.         gallery.setAdapter(adapter);  
  23.        gallery.setSpacing(5);  
  24.         gallery.setOnItemSelectedListener(this);  
  25.     }  
  26.     public void onItemSelected(AdapterView<?> parent, View view, int position,long id) {  
  27.           
  28.         adapter.setSelectItem(position);  //当滑动时,事件响应,调用适配器中的这个方法。   
  29.           
  30.   
  31.     }  
  32.     @Override  
  33.     public void onNothingSelected(AdapterView<?> arg0) {//抽象方法,必须实现  
  34.         // TODO Auto-generated method stub  
  35.           
  36.     }   
  37.   
  38. }  

Main.xml

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="fill_parent"  
  4.     android:layout_height="fill_parent"  
  5.     android:orientation="vertical" >  
  6.   
  7.     <Gallery  
  8.          android:id="@+id/gallery"  
  9.          android:layout_width="fill_parent"   
  10.           android:layout_height="wrap_content"   
  11.         android:layout_marginTop="30dp"  
  12.   />   
  13. </LinearLayout>  

还有个动画的配置文件,这里就不贴了,感兴趣的可以下载全部工程。

免费下载地址在 http://linux.bkjia.com/

用户名与密码都是www.bkjia.com

具体下载目录在 /2012年资料/4月/30日/Android Gallery实现选中放大的效果/

相关内容