-1
私は知っているが、このような投稿はたくさんあるが、私はちょっと特別だ。Android - ImageView/ImageButtonの画像がギャラリーやカメラから
問題の説明:
私がイメージソース、カメラやギャラリーを選択するための小さなダイアログを示しパブリッククラスをしたいです。選択すると、ImageViewに画像が表示され、画像はアプリフォルダに保存されます。このクラスは多くのアクティビティから呼び出されます。だから、私はこのコードを持っている:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
その他のactivitesは、このようなImageViewのかのImageButtonを持っている:
PhotoActivity.javaを私はマニフェストファイルに追加する必要があり
package com.app.test;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.provider.MediaStore;
import java.util.ArrayList;
import java.util.List;
public class PhotoActivity {
private Context context;
public PhotoActivity(Context current){
this.context = current;
}
//this will be called from other activities
public void Change_Photo(final Activity a) {
List<String> options = new ArrayList<String>();
options.add(context.getResources().getString(R.string.camera));
options.add(context.getResources().getString(R.string.gallery));
options.add(context.getResources().getString(R.string.cancel));
//Create sequence of items
final CharSequence[] Sources = options.toArray(new String[options.size()]);
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(context);
dialogBuilder.setTitle(context.getResources().getString(R.string.select_image_source));
dialogBuilder.setItems(Sources, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
if (item==0) {//camera
Intent takePicture = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
a.startActivityForResult(takePicture, 0);//zero can be replaced with any action code
}else if (item == 1) {//gallery
Intent pickPhoto = new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
a.startActivityForResult(pickPhoto , 1);//one can be replaced with any action code
}
}
});
//Create alert dialog object via builder
AlertDialog alertDialogObject = dialogBuilder.create();
//Show the dialog
alertDialogObject.show();
}
}
<ImageButton
android:id="@+id/btn_picture"
android:layout_width="140dp"
android:layout_height="140dp"
android:layout_alignParentRight="true"
android:layout_alignParentTop="false"
android:elevation="0dp"
android:gravity="center_horizontal"
android:src="@drawable/camera" />
最初にカメラ画像がありますが、どのように最後に選択された画像。
選択または撮影した写真をこのImageButtonに表示するには、次に行う必要があることはありますか?
'getBitmap()'や 'setImageBitmap()'よりも良い選択肢は、Picassoのような[画像読み込みライブラリ](https://android-arsenal.com/tag/46)です。答えに表示されたコードは、メインのアプリケーションスレッドにイメージをロードし、UIをフリーズします。 – CommonsWare
これは仕事をしました。小さな質問。新しい写真を撮ると、ImageButtonは90度左に回転したことを示します。どうして? –
これは写真のサイズによって異なりますが、小さな写真を撮ってもう一度やり直してください –