Android:GridView
来源:互联网 发布:海通大智慧下载软件 编辑:程序博客网 时间:2024/06/01 13:38
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:weightSum="1"> <GridView android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/gridView" android:layout_weight="1.07" android:numColumns="3" //3列!! android:smoothScrollbar="false" android:choiceMode="multipleChoice" android:clickable="true"/></LinearLayout>
gridview.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:weightSum="1"> <ImageView android:layout_width="106dp" android:layout_height="144dp" android:id="@+id/imageView"/></LinearLayout>
activity:
package com.example.GridView;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.ViewGroup;import android.widget.*;import android.content.*;import android.view.*;import android.graphics.*;public class GridViewActivity extends Activity { /** * Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); GridView gv = (GridView)findViewById(R.id.gridView); ManateeAdapter adapter = new ManateeAdapter(this); gv.setAdapter(adapter); } public static class ManateeAdapter extends BaseAdapter { private LayoutInflater mInflater; private Context mContext; static class ViewHolder { ImageView image; } private int[] manatees = {R.drawable.a,R.drawable.b,R.drawable.c,R.drawable.d,R.drawable.e, R.drawable.f,R.drawable.g,R.drawable.h,R.drawable.i}; private Bitmap[] manateeImages = new Bitmap[manatees.length]; private Bitmap[] manateeThumbs = new Bitmap[manatees.length]; @Override public int getCount() { return manatees.length; } @Override public Object getItem(int position) { return manatees[position]; } @Override public long getItemId(int position) { return position; } /* @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { convertView = mInflater.inflate(R.layout.gridview, null); holder = new ViewHolder(); holder.image = (ImageView) convertView.findViewById(R.id.imageView); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } holder.image.setImageBitmap( manateeThumbs[position] ); return convertView; } */ public View getView(int position, View convertView, ViewGroup parent) { ImageViewExt imageView; if (convertView == null) { imageView = new ImageViewExt(mContext); // 如果是横屏,GridView会展示4列图片,需要设置图片的大小 if (imageCol == 4) { imageView.setLayoutParams(new GridView.LayoutParams( dm.heightPixels / imageCol - 6, dm.heightPixels / imageCol - 6)); } else {// 如果是竖屏,GridView会展示3列图片,需要设置图片的大小 imageView.setLayoutParams(new GridView.LayoutParams( dm.widthPixels / imageCol - 6, dm.widthPixels / imageCol - 6)); } imageView.setAdjustViewBounds(true); imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); } else { imageView = (ImageViewExt) convertView; } imageView.setImageResource(ImageSource.mThumbIds[position]); return imageView; } public ManateeAdapter(Context context) { this.mContext = context; mInflater = LayoutInflater.from(context); for(int i=0; i<manatees.length; i++) { manateeImages[i] = BitmapFactory.decodeResource( context.getResources(), manatees[i]); manateeThumbs[i] = Bitmap.createScaledBitmap(manateeImages[i], 100, 100, false); } } }}
public class ImageViewExt extends ImageView { //将图片加灰色的边框 private int color; public ImageViewExt(Context context) { super(context); // TODO Auto-generated constructor stub color=Color.GRAY; } public ImageViewExt(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub color=Color.GRAY; } //画上边框 @Override protected void onDraw(Canvas canvas) { // TODO Auto-generated method stub super.onDraw(canvas); //画边框 Rect rec=canvas.getClipBounds(); rec.bottom--; rec.right--; Paint paint=new Paint(); paint.setColor(color); paint.setStrokeWidth(5); paint.setStyle(Paint.Style.STROKE); canvas.drawRect(rec, paint); }}
public class ImageSource { static Integer[] mThumbIds = { R.drawable.mov11, R.drawable.mov12, R.drawable.mov13, R.drawable.mov14, R.drawable.mov15, R.drawable.mov16, R.drawable.mov17, R.drawable.mov18, R.drawable.mov19, R.drawable.mov20 };}
///////////////////////////////////////////////////////////////////////////////////////////////
访问本地DCIM/Camera目录下的所有图片,并显示出来。
注意user-permission加上WRITE_EXTERNAL_STORAGE,不然一直显示文件不存在
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
这里直接在文件夹里找并显示。回头需要看异步显示的方式,因为图片很多的话,扫描很慢,显示也很慢~
package com.example.GridView;import android.app.Activity;import android.os.Bundle;import android.os.Environment;import android.view.View;import android.view.ViewGroup;import android.widget.*;import android.content.*;import android.view.*;import android.graphics.*;import android.database.*;import android.os.Handler;import android.util.Log;import android.media.ThumbnailUtils;import java.io.*;import java.util.ArrayList;import java.util.List;public class GridViewActivity extends Activity { String TAG = "GridViewAPP"; ContentObserver mDbObserver; Handler mHandler = new Handler(); Thread mWorkerThread; ArrayList<Bitmap> a; ManateeAdapter adapter; //ManateeAdapter @Override public void onStart() { super.onStart(); Log.e(TAG,"onStart!!"); GridView gv = (GridView)findViewById(R.id.gridView); adapter = new ManateeAdapter(this); gv.setAdapter(adapter); /* getContentResolver().registerContentObserver( MediaStore.Images.Media.EXTERNAL_CONTENT_URI, true, mDbObserver); */ startWorker(); } private void startWorker() { workerRun(); /* mWorkerThread = new Thread("GalleryPicker Worker") { @Override public void run() { workerRun(); } }; */ //mWorkerThread.start(); } private void workerRun() { String path = "/mnt/sdcard/DCIM/Camera"; File file = new File(path); if(!file.exists()){ Log.e("TAG",path +" dosn't exists"); }else{ File[] files = file.listFiles(); String[] paths = new String[files.length]; Bitmap bitmap; Bitmap newBitmap; for (int i = 0; i < files.length; i++) { paths[i] = files[i].getPath(); try { BitmapFactory.Options options = new BitmapFactory.Options(); options.inSampleSize = 10; bitmap = BitmapFactory.decodeFile(paths[i], options); newBitmap = ThumbnailUtils.extractThumbnail(bitmap, 120, 120); Log.e("TAG","files path = " + paths[i]); adapter.addBitmap(newBitmap); bitmap.recycle(); } catch (Exception e) { e.printStackTrace(); } } } } /** * Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Log.e(TAG,"GridView APP Started!"); mDbObserver = new ContentObserver(mHandler) { @Override public void onChange(boolean selfChange) { Log.e(TAG,"Db changed!!!!!"); } }; //ActionBar actionBar = getActionBar(); //actionBar.hide(); } public static class ManateeAdapter extends BaseAdapter { private LayoutInflater mInflater; private Context mContext; public ArrayList<Bitmap> b = new ArrayList<Bitmap>(); @Override public int getCount() { return b.size(); } @Override public Object getItem(int position) { return b.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ImageView imageView; Log.e("TAG","getView position = " + position); Log.e("TAG","ArrayList size = " + b.size()); if (convertView == null) { convertView = mInflater.inflate(R.layout.gridview, null); imageView = (ImageView) convertView.findViewById(R.id.imageView); imageView.setImageBitmap(b.get(position)); } else { Log.e("TAG","getView convertView!=0"); } return convertView; } public void updateDisplay(){ notifyDataSetChanged(); } public void addBitmap(Bitmap t){ //Log.e("TAG","Bitmap size = "+b.size()); b.add(t); } public ManateeAdapter(Context context) { this.mContext = context; mInflater = LayoutInflater.from(context); /* for(int i=0; i<manatees.length; i++) { manateeImages[i] = BitmapFactory.decodeResource( context.getResources(), manatees[i]); manateeThumbs[i] = Bitmap.createScaledBitmap(manateeImages[i], 100, 100, false); } */ } }}
AsyncTask异步加载的例子,顺便看一下AsyncTask
http://blog.csdn.net/shouliang52000/article/details/7636232
0 0
- android GridView
- Android GridView
- Android:GridView
- Android GridView
- Android GridView
- Android GridView
- Android GridView
- Android:GridView
- 【Android】GridView
- android GridView控件嵌套GridView
- Android GridView的使用
- Android layout - GridView
- Android 控件之GridView
- Android 控件之GridView
- Android的GridView使用
- Android GridView选择样式
- android控件15 GridView
- Android GridView使用
- Android:Camera应用例子
- 彻底明白Android中AIDL及其使用
- 【51Nod 1184】第N个质数
- 《欲望之源》(《MEAN GENES》)
- Android : AsyncTask
- Android:GridView
- laravel5.4 初体验
- 最简单版 从小到大排列三个字符串(字符串,字符数组,指针数组(1))
- 1166_迭代求立方根
- Android面试宝典总结--第一章:Android入门
- c++学习杂记
- Python基础3
- bzoj3693 圆桌会议
- 3.1入门模拟B1026. 程序运行时间(15)