检索Android的图片库,并显示
2012-07-03 14:17
274 查看
这里有个问题需要注意,如果你在模拟器已经启动的情况下,push了几张图片到SDCard中,建议将模拟器关了,再重新启动
一下,否则,刚刚添加的图片,是没有办法获取到的。这是因为Android是在系统启动的时候来扫描模拟器上SDCard中多媒体文件的。
package demo.camera;
import android.app.Activity;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.provider.MediaStore.Images.Media;
import android.util.Log;
import android.view.View;
import android.widget.ImageButton;
import android.widget.TextView;
/**
* 该类完成图片的检索,显示功能
* @author Administrator
*
*/
public class PhotoManager extends Activity {
public static final float DISPLAY_WIDTH = 200;
public static final float DISPLAY_HEIGHT = 200;
//这里采用ImageButton的原因是有Button的作用
private ImageButton photoView;
private TextView nameView;
private Cursor cursor;
private String photoPath; //存放某张图片对应的位置信息
private Bitmap currPhoto;
//这三个变量主要用来保存Media.DATA,Media.TITLE,Media.DISPLAY_NAME的索引号,来获取每列的数据
private int photoIndex;
//private int titleIndex;
private int nameIndex;
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.photo_view);
photoView = (ImageButton)this.findViewById(R.id.image_view);
photoView.setOnClickListener(clickListener);
nameView = (TextView)this.findViewById(R.id.view_name);
//指定获取的列
String columns[] = new String[]{
Media.DATA,Media._ID,Media.TITLE,Media.DISPLAY_NAME
};
//cursor = this.managedQuery(Media.EXTERNAL_CONTENT_URI, columns, null, null, null);
cursor = this.getContentResolver().query(Media.EXTERNAL_CONTENT_URI, columns, null, null, null);
photoIndex = cursor.getColumnIndexOrThrow(Media.DATA);
//titleIndex = cursor.getColumnIndexOrThrow(Media.TITLE);
nameIndex = cursor.getColumnIndexOrThrow(Media.DISPLAY_NAME);
Log.v("HERE First:", "First Debug");
//显示第一张图片,但是首先要判断一下,Cursor是否有值
if(cursor.moveToFirst()){
showImage();
}
}
private View.OnClickListener clickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
if(cursor.moveToNext()){
showImage();
}
}
};
/**
* 显示图像信息
*/
private void showImage(){
photoPath = cursor.getString(photoIndex); //这里获取到的就是图片存储的位置信息
//这里怎样获取图片呢?看decodeBitmap
Log.v("Photo Path:", photoPath);
currPhoto = decodeBitmap(photoPath);
photoView.setImageBitmap(currPhoto);
nameView.setText(cursor.getString(nameIndex));
}
/**
* 从path中获取图片信息
* @param path
* @return
*/
private Bitmap decodeBitmap(String path){
BitmapFactory.Options op = new BitmapFactory.Options();
op.inJustDecodeBounds = true;
Bitmap bmp = BitmapFactory.decodeFile(path, op); //获取尺寸信息
//获取比例大小
int wRatio = (int)Math.ceil(op.outWidth/DISPLAY_WIDTH);
int hRatio = (int)Math.ceil(op.outHeight/DISPLAY_HEIGHT);
//如果超出指定大小,则缩小相应的比例
if(wRatio > 1 && hRatio > 1){
if(wRatio > hRatio){
op.inSampleSize = wRatio;
}else{
op.inSampleSize = hRatio;
}
}
op.inJustDecodeBounds = false;
bmp = BitmapFactory.decodeFile(path, op);
return bmp;
}
}
一下,否则,刚刚添加的图片,是没有办法获取到的。这是因为Android是在系统启动的时候来扫描模拟器上SDCard中多媒体文件的。
package demo.camera;
import android.app.Activity;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.provider.MediaStore.Images.Media;
import android.util.Log;
import android.view.View;
import android.widget.ImageButton;
import android.widget.TextView;
/**
* 该类完成图片的检索,显示功能
* @author Administrator
*
*/
public class PhotoManager extends Activity {
public static final float DISPLAY_WIDTH = 200;
public static final float DISPLAY_HEIGHT = 200;
//这里采用ImageButton的原因是有Button的作用
private ImageButton photoView;
private TextView nameView;
private Cursor cursor;
private String photoPath; //存放某张图片对应的位置信息
private Bitmap currPhoto;
//这三个变量主要用来保存Media.DATA,Media.TITLE,Media.DISPLAY_NAME的索引号,来获取每列的数据
private int photoIndex;
//private int titleIndex;
private int nameIndex;
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.photo_view);
photoView = (ImageButton)this.findViewById(R.id.image_view);
photoView.setOnClickListener(clickListener);
nameView = (TextView)this.findViewById(R.id.view_name);
//指定获取的列
String columns[] = new String[]{
Media.DATA,Media._ID,Media.TITLE,Media.DISPLAY_NAME
};
//cursor = this.managedQuery(Media.EXTERNAL_CONTENT_URI, columns, null, null, null);
cursor = this.getContentResolver().query(Media.EXTERNAL_CONTENT_URI, columns, null, null, null);
photoIndex = cursor.getColumnIndexOrThrow(Media.DATA);
//titleIndex = cursor.getColumnIndexOrThrow(Media.TITLE);
nameIndex = cursor.getColumnIndexOrThrow(Media.DISPLAY_NAME);
Log.v("HERE First:", "First Debug");
//显示第一张图片,但是首先要判断一下,Cursor是否有值
if(cursor.moveToFirst()){
showImage();
}
}
private View.OnClickListener clickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
if(cursor.moveToNext()){
showImage();
}
}
};
/**
* 显示图像信息
*/
private void showImage(){
photoPath = cursor.getString(photoIndex); //这里获取到的就是图片存储的位置信息
//这里怎样获取图片呢?看decodeBitmap
Log.v("Photo Path:", photoPath);
currPhoto = decodeBitmap(photoPath);
photoView.setImageBitmap(currPhoto);
nameView.setText(cursor.getString(nameIndex));
}
/**
* 从path中获取图片信息
* @param path
* @return
*/
private Bitmap decodeBitmap(String path){
BitmapFactory.Options op = new BitmapFactory.Options();
op.inJustDecodeBounds = true;
Bitmap bmp = BitmapFactory.decodeFile(path, op); //获取尺寸信息
//获取比例大小
int wRatio = (int)Math.ceil(op.outWidth/DISPLAY_WIDTH);
int hRatio = (int)Math.ceil(op.outHeight/DISPLAY_HEIGHT);
//如果超出指定大小,则缩小相应的比例
if(wRatio > 1 && hRatio > 1){
if(wRatio > hRatio){
op.inSampleSize = wRatio;
}else{
op.inSampleSize = hRatio;
}
}
op.inJustDecodeBounds = false;
bmp = BitmapFactory.decodeFile(path, op);
return bmp;
}
}
相关文章推荐
- Android多媒体学习二:检索Android的图片库,并显示
- Android多媒体学习二:检索Android的图片库,并显示
- Android多媒体学习二:检索Android的图片库,并显示
- 检索Android的图片库并显示图片详细信息
- Android进阶2之检索Android的图片库并显示图片详细信息
- Android多媒体学习二:检索Android的图片库,并显示
- 检索Android图片库并显示详细信息
- 检索Android SDCard的图片,并显示到imagebutton
- Android利用高德地图关键字检索POI,显示用户MD5安全码未通过
- Android高德地图检索显示
- arcgis for android 学习 - (6) 属性查询。检索图层上某个要素,并高亮显示它。
- Android开发-百度地图API_v4.1.1-AndroidStudio(六)显示检索结果&定位&显示我的位置
- android 屏蔽某一目录下的图片资源 音乐或是图片库不显示指定数据夹
- 检索Android SDCard的图片,并显示到imagebutton
- Android开发-百度地图API_v4.1.1-AndroidStudio(六)显示检索结果&定位&显示我的位置
- Android百度地图开发学习笔记(四)之POI检索并显示在listview中
- android 屏蔽某一目录下的图片资源 音乐或是图片库不显示指定数据夹
- arcgis for android 学习 - 属性查询。检索图层上某个要素,并高亮显示它。
- arcgis for android 学习 - (6) 属性查询。检索图层上某个要素,并高亮显示它。
- iOS/Android百度地图周边检索BMKPoiSearch不显示“地铁”信息