0

我想实现动态壁纸,用户可以在手机桌面上设置自己的照片。

现在我已经成功实现了用户可以从 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。

我确定磁盘上存在图片并且位图不为空。如何解决这个问题?谢谢

4

1 回答 1

0

看看这个壁纸幻灯片源代码:

安卓壁纸幻灯片

于 2013-08-27T18:13:47.690 回答