我有一个应用程序,要求用户从库中选择一个图像,它将显示在图像按钮中。如何将图像按钮中的图像路径作为字符串获取?
请帮助
public class NewPortal extends Activity implements OnClickListener, android.view.View.OnClickListener
{
Bitmap bmp;
public static final int REQUEST_CODE =1;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.portallayout);
ImageButton btn1 = (ImageButton)findViewById(R.id.imageButton2);
btn1.setOnClickListener(this);
Button btn2 = (Button)findViewById(R.id.button2);
btn2.setOnClickListener(this);
}
public void onClick(View v) {
Toast pieceToast=null;
EditText eiteText;
switch (v.getId()) {
case R.id.imageButton2:
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
startActivityForResult(intent, REQUEST_CODE);
int RESULT_LOAD_IMAGE = 1;
break;
case R.id.button2:
eiteText=(EditText)findViewById(R.id.editText2);
String result=eiteText.getText().toString();
MySQLiteEntity entity = new MySQLiteEntity(1,
"Random Post title",
"Image",
path of image ,
result);
MYSQLiteDataSource datasource = new MYSQLiteDataSource(getApplicationContext());
datasource.createPost(entity);
break;
}
}
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult1(requestCode, resultCode, data);
if(requestCode == RESULT_CANCELED) return;
ParcelFileDescriptor fd;
try {
fd = getContentResolver().openFileDescriptor(data.getData(), "r");
} catch (FileNotFoundException e) {
e.printStackTrace();
return;
}
Bitmap bmp = BitmapFactory.decodeFileDescriptor(fd.getFileDescriptor());
ImageButton imgButton = (ImageButton)findViewById(R.id.imageButton2);
imgButton.setImageBitmap(bmp);
}
}
答案 0 :(得分:1)
使用此代码从图库中选择图片:
public void photo(View v) {
Intent i = new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
RESULT_LOAD_IMAGE = 1;
startActivityForResult(i, RESULT_LOAD_IMAGE);
}
要获得可以使用的路径:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK &&null != data)
{
Uri selectedImage = data.getData(); String[]
filePathColumn = { MediaStore.Images.Media.DATA };
Cursor cursor = getContentResolver().query(selectedImage,filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String picturePath = cursor.getString(columnIndex); cursor.close();
}
}
其中RESULT_LOAD_IMAGE
是全局声明为0的整数!
然后尝试以下代码,将存储在SD卡中的文件中的Bitmap图像设置为ImageView。
File imgFile = new File(“/sdcard/Images/test_image.jpg”);
if(imgFile.exists()){
Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
ImageView myImage = (ImageView) findViewById(R.id.imageviewTest);
myImage.setImageBitmap(myBitmap);
}