android 这 Gallery的使用
16lz
2021-01-23
原文引用:http://blog.csdn.net/hellogv/article/details/5961525
使用Gallery 查看图片:
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" android:id="@+id/testImageView" > <Gallery android:id="@+id/gallery" android:layout_height="fill_parent" android:layout_width="fill_parent" ></Gallery> </LinearLayout>
GallerydemoActivity.java
package com.hkrt;import java.lang.reflect.Field;import java.util.ArrayList;import android.app.Activity;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.Bundle;import android.util.DisplayMetrics;import android.view.View;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.BaseAdapter;import android.widget.Gallery;import android.widget.ImageView;import android.widget.AdapterView.OnItemClickListener;public class GallerydemoActivity extends Activity {private Gallery mGallery; ///获取手机屏幕分辨率的类 private DisplayMetrics dm; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mGallery = (Gallery)findViewById(R.id.gallery); try { mGallery.setAdapter(new ImageAdapter(this)); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } mGallery.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView parent, View v, int position, long id) {// TextView testImageView = (TextView) findViewById(R.id.testImageView);// testImageView.setText(String.valueOf(position)); } }); } /* * class ImageAdapter is used to control gallery source and operation. */ private class ImageAdapter extends BaseAdapter{ private Context mContext; private ArrayList<Integer> imgList=new ArrayList<Integer>(); private ArrayList<Object> imgSizes=new ArrayList<Object>(); public ImageAdapter(Context c) throws IllegalArgumentException, IllegalAccessException{ mContext = c; //用反射机制来获取资源中的图片ID和尺寸 Field[] fields = R.drawable.class.getDeclaredFields(); for (Field field : fields) { if (!"icon".equals(field.getName()))//除了icon之外的图片 { int index=field.getInt(R.drawable.class); //保存图片ID imgList.add(index); //保存图片大小 int size[]=new int[2]; Bitmap bmImg=BitmapFactory.decodeResource(getResources(),index); dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); //获得手机的宽度和高度像素单位为px size[0]=dm.widthPixels;//bmImg.getWidth(); size[1]=dm.heightPixels;//bmImg.getHeight(); imgSizes.add(size); } } } @Override public int getCount() { // TODO Auto-generated method stub return imgList.size(); } @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 convertView, ViewGroup parent) { // TODO Auto-generated method stub ImageView i = new ImageView (mContext); //从imgList取得图片ID i.setImageResource(imgList.get(position).intValue()); i.setScaleType(ImageView.ScaleType.FIT_XY); //从imgSizes取得图片大小 int size[]= new int[2]; size=(int[]) imgSizes.get(position); i.setLayoutParams(new Gallery.LayoutParams(size[0], size[1])); return i; } }; }效果图:
更多相关文章
- android 使用imageloader 获取图片时,如果需要带cookie
- android 图片叠加效果——两种方法
- Android TabHost 文字及图片的设置
- android调用系统邮件发送图片文本
- android之【代码实现ImageView图片切换】
- Android 图像系列: 将本地图片加载到Drawable
- Android应用程序之间共享文字和图片(一)
- Android 高德地图给指定坐标显示图片,以及聚合显示
- android部分机型选择图片提示错误