我想实现动态壁纸,用户可以在手机桌面上设置自己的照片。
现在我已经成功实现了用户可以从 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();
}
}
在我的三星 Note 2 预览图上可能显示 1 次从 ~10。
我确定磁盘上存在图片并且位图不为空。如何解决这个问题?谢谢