gpt4 book ai didi

android - 从 SD 卡浏览图像以在 android 的 ImageView 中显示它?

转载 作者:行者123 更新时间:2023-11-29 21:25:27 26 4
gpt4 key购买 nike

我将 Activity 用作对话框。因为我有按钮来浏览和选择图像以在 ImageView 中显示它。

My Dialog Activity 代码和浏览图片

public class Update_profile extends Activity{

private Uri mImageCaptureUri;

private static final int PICK_FROM_FILE = 1;

private View rootView;
Button save,browse_image;
ImageView profile_pic;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setBackgroundDrawable(new ColorDrawable(0));
setContentView(R.layout.update_profile);

Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread t, Throwable e) {
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(0);
}
});

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);

this.rootView=findViewById(R.id.update_profile_details);
profile_pic = (ImageView)findViewById(R.id.update_profile_picture);

save = (Button)findViewById(R.id.save);
browse_image = (Button)findViewById(R.id.browse_image);
browse_image.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub

Intent intent = new Intent();

intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);

startActivityForResult(Intent.createChooser(intent, "Complete action using"), PICK_FROM_FILE);

}
});

}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode != RESULT_OK) return;

Bitmap bitmap = null;
String path = "";

if (requestCode == PICK_FROM_FILE) {
mImageCaptureUri = data.getData();
path = getRealPathFromURI(mImageCaptureUri); //from Gallery
Log.v("Path", ""+path);

if (path == null)
path = mImageCaptureUri.getPath(); //from File Manager
Log.v("Path", ""+path);

if (path != null)
bitmap = BitmapFactory.decodeFile(path);
} else {
path = mImageCaptureUri.getPath();
Log.v("Path", ""+path);
bitmap = BitmapFactory.decodeFile(path);
}

profile_pic.setImageBitmap(bitmap);
}

public String getRealPathFromURI(Uri contentUri) {
String [] proj = {MediaStore.Images.Media.DATA};
Cursor cursor = managedQuery( contentUri, proj, null, null,null);

if (cursor == null) return null;

int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);

cursor.moveToFirst();

return cursor.getString(column_index);
}

@SuppressLint("NewApi")
@Override
public boolean onTouchEvent(MotionEvent event) {
Rect rect = new Rect();
rootView.getHitRect(rect);
if (!rect.contains((int)event.getX(), (int)event.getY())){
setFinishOnTouchOutside(false);
return true;
}
return false;
}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK)) {

finish();
}
return true;
}
}

我将 Activity 更改为对话框的 list 代码

<activity
android:name="test.Update_profile"
android:excludeFromRecents="true"
android:launchMode="singleInstance"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Dialog"
android:windowSoftInputMode="stateHidden" >
</activity>

当我在普通 Activity 中使用上面的浏览图像代码时,意味着它获取图像并在 ImageView 中显示它,但在这个对话框 Activity 中。它现在能够选择图像。我想从对话框 Activity 中获取图像。我不是能够解决这个问题。有谁知道请帮我解决这个问题。

最佳答案

如果你想直接从画廊中检索然后使用这个代码 http://viralpatel.net/blogs/pick-image-from-galary-android-app/

这是我从 SD 卡获取所有文件的方法,你只需将其保存在一个数据 Controller 类中哦老兄

private void getallimages()
{
String[] STAR = { "*" };


final String[] columns = { MediaStore.Images.Thumbnails._ID , MediaStore.Images.Media.DATA};
final String orderBy = MediaStore.Images.Media.DEFAULT_SORT_ORDER;
Cursor imagecursor = ((Activity) cntx).managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, STAR, null, null, orderBy);
int image_column_index = imagecursor.getColumnIndex(MediaStore.Images.Media._ID);
int imgNameIndex = imagecursor.getColumnIndex(MediaStore.Images.Media.DISPLAY_NAME);
int count = imagecursor.getCount();
for (int i = 0; i < count; i++) {
imagecursor.moveToPosition(i);
int id = imagecursor.getInt(image_column_index);
ImageItem imageItem = new ImageItem();
imageItem.id = id;
imageItem.filePath = imagecursor.getString(imagecursor.getColumnIndex(MediaStore.Images.Media.DATA));
lastId = id;
imageItem.img = MediaStore.Images.Thumbnails.getThumbnail(cntx.getContentResolver(), id,MediaStore.Images.Thumbnails.MICRO_KIND, null);
imageItem.selection = false; //newly added item will be selected by default
controller.images.add(imageItem);
}

}

这是 ImageItem 包装类

 public class ImageItem {
public boolean selection=true;
public int id;
public Bitmap img;
public String filePath;
public String fileType;
}

关于android - 从 SD 卡浏览图像以在 android 的 ImageView 中显示它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20264271/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com