ユーザーが電話のデスクトップに自分の写真を設定できるライブ壁紙を実装したいと思います。
現在、ユーザーがAndroidギャラリーまたはカメラ自体から写真をトリミングできるロジックを正常に実装しました。
ライブ壁紙の設定ページで、トリミングした写真のプレビューを実装したいと考えています。この目的のために、SelectImagePreference を実装しました。
public class SelectImagePreference extends Preference {
public SelectImagePreference(Context context, AttributeSet attributeSet) {
this(context, attributeSet, 0);
}
public SelectImagePreference(Context context, AttributeSet attributeSet, int paramInt) {
super(context, attributeSet, paramInt);
setLayoutResource(R.layout.select_image_preference);
}
}
レイアウトあり
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:attr/theme"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:minHeight="?android:listPreferredItemHeight"
android:paddingRight="?android:scrollbarSize" >
<ImageView
android:id="@+id/picture"
android:layout_width="200px"
android:layout_height="250px"
android:layout_margin="5dp"
android:background="@drawable/pic_border"
android:contentDescription="@string/picture" />
</LinearLayout>
onActivityResult メソッドの WallpaperSettings アクティビティで、返されたビットマップを ImageView に設定しようとしています
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode != RESULT_OK) {
return;
} else if (requestCode == PICK_CROP) {
try {
Bundle extras = data.getExtras();
Bitmap croppedPicture = extras.getParcelable("data");
File saveFilePath = FileUtils.createNewFile(this, FOLDER, FileUtils.getUniqueFileName(CROPPED_IMAGE_PREFIX, CROPPED_IMAGE_EXTENSION));
FileOutputStream out = new FileOutputStream(saveFilePath);
croppedPicture.compress(Bitmap.CompressFormat.JPEG, 100, out);
saveCroppedImageUrl(saveFilePath.getAbsolutePath());
ImageView pictureView = (ImageView) findViewById(R.id.picture);
pictureView.setImageBitmap(croppedPicture);
} catch (Exception e) {
e.printStackTrace();
}
}
私のSamsung Note 2プレビュー画像では、おそらく10回から1回表示されます。
ピクチャがディスク上に存在し、ビットマップが null ではないことは確かです。この問題を解決するには?ありがとう