Android入门之Gallery(纯Java)


    

    

1、GalleryTest.java

  1. import Android.app.Activity;  
  2. import android.os.Bundle;  
  3. import android.view.Gravity;  
  4. import android.view.View;  
  5. import android.widget.*;  
  6. import android.widget.AdapterView.OnItemSelectedListener;  
  7.   
  8. public class GalleryTest extends Activity {  
  9.       
  10.     private LinearLayout mainView = null;   // 相对布局   
  11.     private Gallery gallery = null;         // gallery   
  12.     private TextView tv=null;               //文本   
  13.       
  14.     public void onCreate(Bundle savedInstanceState) {  
  15.         super.onCreate(savedInstanceState);  
  16.         mainView_init();  
  17.         setContentView(mainView);  
  18.     }  
  19.   
  20.     /*mainView初始化*/  
  21.     void mainView_init() {  
  22.         mainView = new LinearLayout(this);  
  23.         LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(-1, -1);  
  24.         mainView.setLayoutParams(lp);  
  25.         mainView.setOrientation(LinearLayout.VERTICAL);  
  26.         tv_init();  
  27.         gallery_init();  
  28.         mainView.addView(gallery);  
  29.         mainView.addView(tv);  
  30.     }  
  31.   
  32.     /*tv初始化*/  
  33.     void tv_init(){  
  34.         tv=new TextView(this);  
  35.         LinearLayout.LayoutParams lp=new LinearLayout.LayoutParams(-1,-2);  
  36.         tv.setLayoutParams(lp);  
  37.         tv.setTextSize(30);  
  38.         tv.setText("这里显示图片选中响应");  
  39.         tv.setGravity(Gravity.CENTER_HORIZONTAL);  
  40.     }  
  41.       
  42.     /*gallery初始化*/  
  43.     void gallery_init() {  
  44.         gallery = new Gallery(this);  
  45.         LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(-1, -2);  
  46.         // lp.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);   
  47.         gallery.setLayoutParams(lp);  
  48.         gallery.setSpacing(15);// 空隙   
  49.         //   
  50.         ImageAdapter ia = new ImageAdapter(this);  
  51.         gallery.setAdapter(ia);  
  52.         //   
  53.         OnItemSelectedListener oisl = new OnItemSelectedListener() {  
  54.             public void onItemSelected(AdapterView<?> arg0, View arg1,int arg2, long arg3) {  
  55.                 tv.setText("图片"+(arg2+1)+"被选中");  
  56.             }  
  57.             public void onNothingSelected(AdapterView<?> arg0) {  
  58.                 tv.setText("未选中任何图片");  
  59.             }  
  60.         };  
  61.         gallery.setOnItemSelectedListener(oisl);  
  62.     }  
  63.       
  64. }  

2、ImageAdapter.java

  1. import android.content.Context;  
  2. import android.graphics.Bitmap;  
  3. import android.graphics.BitmapFactory;  
  4. import android.graphics.Matrix;  
  5. import android.view.View;  
  6. import android.view.ViewGroup;  
  7. import android.widget.BaseAdapter;  
  8. import android.widget.Gallery;  
  9. import android.widget.ImageView;  
  10.   
  11. public class ImageAdapter extends BaseAdapter {  
  12.   
  13.     private Context context;  
  14.     //图片源数组   
  15.     private Integer[] imageInteger = { R.drawable.icon,R.drawable.p1,R.drawable.p2, R.drawable.p3,R.drawable.p4};  
  16.   
  17.     public ImageAdapter(Context c) {  
  18.         context = c;  
  19.     }  
  20.   
  21.     public int getCount() {  
  22.         return imageInteger.length;  
  23.     }  
  24.   
  25.     public Object getItem(int position) {  
  26.         return position;  
  27.     }  
  28.   
  29.     public long getItemId(int position) {  
  30.         return position;  
  31.     }  
  32.   
  33.     public View getView(int position, View convertView, ViewGroup parent) {  
  34.         ImageView imageView = new ImageView(context);  
  35.         imageView.setLayoutParams(new Gallery.LayoutParams(-2,120));  
  36.         /*图片缩放处理,如果先设置了iamgeView的大小,则必须注意加载的图片大小不能超出,否则无法显示*/  
  37.         Bitmap bm = BitmapFactory.decodeResource(context.getResources(),imageInteger[position]);  
  38.         //原始尺寸   
  39.         int width=bm.getWidth();  
  40.         int height=bm.getHeight();  
  41.         //缩放比例   
  42.         if(height>120){  
  43.             float scaleHeight=((float)120)/height;  
  44.             float scaleWidth=scaleHeight;  
  45.             // 创建操作图片用的matrix对象       
  46.             Matrix matrix = new Matrix();     
  47.             // 缩放图片动作       
  48.             matrix.postScale(scaleWidth, scaleHeight);     
  49.             //旋转图片 动作       
  50.             //matrix.postRotate(45);      
  51.             // 创建新的图片       
  52.             Bitmap resizedBitmap = Bitmap.createBitmap(bm,0,0,width, height,matrix,true);     
  53.             imageView.setImageBitmap(resizedBitmap);  
  54.         }else{  
  55.             imageView.setImageBitmap(bm);  
  56.         }  
  57.         imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);  
  58.         return imageView;  
  59.     }  
  60.   
  61. }  

相关内容