我是Android新手并构建了一个小应用程序,可以从相机中拍照并将其保存到图库中。
这是捕获图像的功能。
private void onCaptureImageResult(Intent data) {
Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
thumbnail.compress(Bitmap.CompressFormat.JPEG, 90, bytes);
File destination = new File(Environment.getExternalStorageDirectory(),
System.currentTimeMillis() + ".jpg");
FileOutputStream fo;
try {
destination.createNewFile();
fo = new FileOutputStream(destination);
fo.write(bytes.toByteArray());
fo.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
这是activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="10dp" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:padding="5dp" >
<Button
android:id="@+id/btnSelectPhoto"
android:background="#149F82"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Select Photo" />
</LinearLayout>
</LinearLayout>
我想在捕获图像时想要这样做我想在另一个活动(页面)上显示图像,而不是在具有捕获图像按钮的同一活动上。如何做到这一点。
提前致谢
答案 0 :(得分:2)
您只需将路径传递给方法中的新活动。
Intent intent = new Intent(this, NewActivity.class);
intent.putExtra("MyImagePath", destination.getAbsoluteFile());
startActivity(intent);
并在新活动中
File imgFile = new File(filePath);
if(imgFile.exists()){
Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
ImageView myImage = (ImageView) findViewById(R.id.imageviewTest);
myImage.setImageBitmap(myBitmap);
}
答案 1 :(得分:1)
简单,捕捉照片后,你的照片将被保存。现在,在活动结果方法中,您只需使用意图转到第二个活动。
在第二个Activity中,只需获取已保存图像的路径并将其设置为ImageView。
答案 2 :(得分:1)
<强> MainActivity 强>
String filePath;
@Override
protected void onCreate(Bundle savedInstanceState) {
...
}
private void onCaptureImageResult(Intent data) {
Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
thumbnail.compress(Bitmap.CompressFormat.JPEG, 90, bytes);
String fileName = System.currentTimeMillis() + ".jpg"
filePath = Environment.getExternalStorageDirectory().getAbsolutePath() + fileName;
File destination = new File(filePath);
...
}
yourButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getApplicationContext(), AnotherActivity.class);
intent.putExtra("filePath", filePath)
startActivity(intent);
}
});
<强> AnotherActivity 强>
String filePath;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = this.getIntent();
filePath = intent.getStringExtra("filePath");
File imgFile = new File(filePath);
if(imgFile.exists()){
Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
ImageView myImage = (ImageView) findViewById(R.id.imageviewTest);
myImage.setImageBitmap(myBitmap);
}
}
答案 3 :(得分:0)
我假设您知道如何从意图中获取捕获的图像信息。
如果你不知道的话。谷歌它,你会发现很多解决方案。
您可以采用两种方式在下次激活时显示捕获图像。
1 =&gt; 启动您要在其中显示图片的新活动。并在onCreate方法中打开相机并从onActivityResult中的相机获取结果并显示图像。
2 =&gt; 在onActivityResult中打开相机和getIntent数据,并将此信息传递给下一个活动,并在onCreate方法中显示图片。
答案 4 :(得分:0)
以下是一个解决方案。您可以将捕获的位图传递给意图,然后启动新活动。像下面的这个。一旦从捕获中获取图像,就可以在onCaptureImageResult()中实现此逻辑。
Intent intent = new Intent(this, NewActivity.class);
intent.putExtra("MyImage", bitmap);
startActivity(intent);
然后,您可以按照以下步骤从意图中获取位图。并将图像设置为ImageView或使用它做其他事情。
ImageView imgView = (ImageView) img.findViewById(R.id.myIMageView); /* Called inside OnCreate() using the parent View */
Intent intent = getIntent();
Bitmap bitmap = (Bitmap) intent.getParcelableExtra("MyImage");
我希望它可以帮到你。享受。