2013-01-23 56 views
0

我想实现动态壁纸,用户可以在手机桌面上设置自己的照片。android图像裁剪和壁纸设置页面

现在我已经成功实现了逻辑,用户可以从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预览图片显示可能是从〜10的一次。

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

回答