龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 移动开发 > Android开发 >

Android开发学习笔记 Gallery和GridView浅析(2)

时间:2014-11-02 03:33来源:网络整理 作者:网络 点击:
分享到:
首先介绍Gallery单独使用的例子: MainActivity.java package com.android.gallerydemo; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.vie

首先介绍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; 
  } 
}
精彩图集

赞助商链接