自制Gallery打开指定文件夹里的图片
16lz
2021-01-25
看了一些别人的代码,然后自己修改了一下,现在把代码贴出来
首先是界面布局文件
android:spacing="50pt",设置图片之间间距
<?xml version="1.0" encoding="utf-8"?>
程序代码如下
PhotoActivity代码
package com.example.photo;import java.io.File;import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List;import com.example.flight_control_001.R; import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android.view.View;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.Gallery;import android.widget.SpinnerAdapter; public class PhotoActivity extends Activity { private static final String PIC_PATH = "/mnt/sdcard/Flight photo/"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_photo); Gallery g=(Gallery)findViewById(R.id.gallery); //添加一个ImageAdapter并设置给Gallery对象 g.setAdapter( new ImageAdapter(this,getSD())); //设置一个itemclickListener事件 g.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {// TODO Auto-generated method stub}}); }private List getSD() {// TODO Auto-generated method stub//设置目前所在路径List it=new ArrayList();File f=new File(PIC_PATH);File[] files=f.listFiles();//将所有文件添加到ArrayList中for(int i=0;i
新建一个ImageAdapter类
package com.example.photo;import java.util.List;import com.example.flight_control_001.R;import android.content.Context;import android.content.res.TypedArray;import android.database.DataSetObserver;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.Gallery;import android.widget.Gallery.LayoutParams;import android.widget.ImageView;public class ImageAdapter extends BaseAdapter {//声明变量int mGalleryItemBackgroud;private Context mContext;private List lis;//ImageAdapter的构造器public ImageAdapter(Context c, List li){mContext=c;lis=li;/*//使用在res/values/attrs.xml中的定义的Gallery属性TypedArray a=ImageAdapter.this.obtainStyledAttributes(R.styleable.Gallery);//取得Gallery属性的Index idmGalleryItemBackgroud=a.getResourceId(R.styleable.Gallery_android_galleryItemBackgroud,0);//让对象的styleable属性能够反复使用a.recycle();*/}//重写的方法getCount,返回图片数目@Overridepublic int getCount() {// TODO Auto-generated method stubreturn lis.size();}//重写的方法getItem,返回position@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn position;}//重写的方法getItemId,返回position@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn position;}//重写的方法getView,返回一View对象@SuppressWarnings("deprecation")@Overridepublic View getView(int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stub//产生ImageView对象ImageView i=new ImageView(mContext);//设置图片给imageView对象Bitmap bm=BitmapFactory.decodeFile(lis.get(position).toString());i.setImageBitmap(bm);//重写设置图片的宽、高i.setScaleType(ImageView.ScaleType.FIT_CENTER);//重新设置layout的宽、高i.setLayoutParams(new Gallery.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));//使Gallery图片自适应屏幕分辨率,以免图片bound超出屏幕范围 i.setAdjustViewBounds(true); //设置Gallery背景图i.setBackgroundResource(mGalleryItemBackgroud);//返回imageView对象return i;}}
这就完成了
更多相关文章
- 【笔记】Retrofit的使用以及原理
- Android(安卓)WebView JS不能调用Java对象的问题
- android利用BitMap获得图片的像素数据
- Android系统移植与调试之------->如何修改开机动画的两种方式剖
- Android(安卓)使用intent对Bitmap的处理(拍照、裁剪、从图库选择
- Android图片内存优化的几点心得
- ConnectivityService分析
- Android(安卓)实现头像上传功能
- Android(安卓)Activity间传递数据