实现一个在GridView中显示SD卡上的全部图片的实例。
在mian.xml布局文件中加入GridView组件,列数4,也就是每行显示4张图片
res/layout/main.xml:
MainAtivity:
在mian.xml布局文件中加入GridView组件,列数4,也就是每行显示4张图片
res/layout/main.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/linearLayout1" android:orientation="vertical" > <GridView android:id="@+id/gridView1" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_marginTop="10px" android:horizontalSpacing="3px" android:verticalSpacing="3px" android:numColumns="4"/> </LinearLayout>
为了有获取SD图片的效果,事先在Android虚拟机的SD目录下放置一些图片,放置过程和效果如图
MainAtivity:
package com.example.test; import java.io.File; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android.os.Environment; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.GridView; import android.widget.ImageView; public class MainActivity extends Activity { private List<String> imagePath=new ArrayList<String>();//图片文件的路径 private static String[] imageFormatSet=new String[]{"jpg","png","gif"};//合法的图片文件格式 /* * 方法:判断是否为图片文件 * 参数:String path图片路径 * 返回:boolean 是否是图片文件,是true,否false * */ private static boolean isImageFile(String path){ for(String format:imageFormatSet){//遍历数组 if(path.contains(format)){//判断是否为合法的图片文件 return true; } } return false; } /* * 方法:用于遍历指定路径 * 参数:String url遍历路径 * 无返回值 * */ private void getFiles(String url){ File files=new File(url);//创建文件对象 File[] file=files.listFiles(); try { for(File f:file){//通过for循环遍历获取到的文件数组 if(f.isDirectory()){//如果是目录,也就是文件夹 getFiles(f.getAbsolutePath());//递归调用 }else{ if(isImageFile(f.getPath())){//如果是图片文件 imagePath.add(f.getPath());//将文件的路径添加到List集合中 } } } } catch (Exception e) { e.printStackTrace();//输出异常信息 } } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); String sdpath=Environment.getExternalStorageDirectory()+"/";//获得SD卡的路径 getFiles(sdpath);//调用getFiles()方法获取SD卡上的全部图片 if(imagePath.size()<1){//如果不存在文件图片 return; } /*首先获取GrivView组件,然后创建BaseAdapter类的对象,并重写其中的 * getView()、getItemId()、getItem()和getConut()方法,其中最主要的是重写 * getView()方法来设置要显示的图片,最后将BaseAdapter适配器与GridView关联*/ GridView gridview=(GridView)findViewById(R.id.gridView1);//获取GridView组件 BaseAdapter adapter=new BaseAdapter(){ @Override public View getView(int position, View convertView, ViewGroup parent) { ImageView iv;//声明ImageView的对象 if(convertView==null){ iv=new ImageView(MainActivity.this);//实例化ImageView的对象 /**************设置图像的宽度和高度**************/ iv.setAdjustViewBounds(true); iv.setMaxWidth(150); iv.setMaxHeight(113); /****************************/ iv.setPadding(5, 5, 5, 5);//设置ImageView的内边距 }else{ iv=(ImageView)convertView; } //为ImageView设置要显示的图片 Bitmap bm=BitmapFactory.decodeFile(imagePath.get(position)); iv.setImageBitmap(bm); return iv; } //获得数量 @Override public int getCount() { return imagePath.size(); } //获得当前选项 @Override public Object getItem(int position) { return position; } //获得当前选项的id @Override public long getItemId(int position) { return position; } }; gridview.setAdapter(adapter);//将适配器与GridView关联 } }
运行效果如图
转载请注明出处:http://blog.csdn.net/acmman/article/details/45849697