2014-01-08 114 views
0

它已经几天了,试图弄清楚这个功能是如何工作的? 我已经在堆栈溢出寻找它太ofcourse, Downloading and setting a wallpaper 尝试过,但得到doInBackground错误。 和更多“似乎合法”的答案,我已经尝试过。但最终,我仍然不知道如何改变我的设置壁纸从图片URL

final String url2 = "http://icons.iconarchive.com/icons/3xhumed/mega-games-pack-26/256/Call-of-Duty-World-at-War-5-icon.png"; 

       displaynya.setImageUrl(url2); 

,当我把它在我的按钮

case R.id.BTsetWalp: 
             WallpaperManager myWallpaperManager 
             = WallpaperManager.getInstance(getApplicationContext()); 
      try { 

           myWallpaperManager.setResource(// what should i do with this?); 

如此混乱.. 过去的日子里使用,我试图只使用已存储在应用中的图像,使用该情况2

case R.id.ivwall02: 
       displaynya.setImageResource(R.drawable.a2); 

       setWallp = R.drawable.a2; 
       break; 

此代码正在工作。但如果我使用它,我的应用程序的大小将变得非常大,因为所有巨大的壁纸图像都存储在应用程序中。所以我想用案例1中的方法(首先下载图像,然后将其设置为壁纸),但我卡在那里..

============== ====================================

编辑2,更新了我的代码到目前为止

下面是完整的代码

public class CopyOfGallery extends Activity implements View.OnClickListener { 
private SmartImageView displaynya; 

Button bWalp; 



@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
setContentView(R.layout.gallery); 


    bWalp = (Button) findViewById(R.id.BTsetWalp); 

    displaynya = (SmartImageView)findViewById(R.id.iVDisplay); 


    ImageView image01 = (ImageView) findViewById(R.id.ivwall01); 
    ImageView image02 = (ImageView) findViewById(R.id.ivwall02); 


    image01.setOnClickListener(this); 
    image02.setOnClickListener(this); 


    bWalp.setOnClickListener(this); 


     } 

      @Override 
      public void onClick(View vImage) { 
       // TODO Auto-generated method stub 

       switch (vImage.getId()){ 

       case R.id.ivwall01: 

        final String url1 ="http://i100.photobucket.com/albums/m21/keitaro3660/komari/Komari02/km_happy.jpg" ; 
       displaynya.setImageUrl(url1); 




        break; 
       case R.id.ivwall02: 

        final String url2 ="http://i100.photobucket.com/albums/m21/keitaro3660/komari/Komari02/km_awkward.jpg" ; 

        displaynya.setImageUrl(url2); 


        break; 



       case R.id.BTsetWalp: 


         // get the Image to as Bitmap 
          Bitmap bitmap = BitmapFactory.decodeStream(getResources().openRawResource(R.id.iVDisplay)); 

           DisplayMetrics metrics = new DisplayMetrics(); 
           getWindowManager().getDefaultDisplay().getMetrics(metrics); 
           // get the height and width of screen 
           int height = metrics.heightPixels; 
           int width = metrics.widthPixels; 

          WallpaperManager wallpaperManager = WallpaperManager.getInstance(this); 
       try { 

        wallpaperManager.setBitmap(bitmap); 

         wallpaperManager.suggestDesiredDimensions(width, height); 

       } catch (IOException e) { 
       // TODO Auto-generated catch block 
            e.printStackTrace(); 
       } 



          }} 

Bitmap bitmap = BitmapFactory.decodeStream(getResources().openRawResource(R.id.iVDisplay)); 

这个函数是用来获取我的R.id.iVDisplay中显示的任何图像都不是?正是我需要的。但为什么它会崩溃? :'(

这里是我的日志

01-08 23:39:51.529:E/AndroidRuntime(22803):致命异常:主要

01-08 23:39:51.529:电子/ AndroidRuntime(22803): 显示java.lang.NullPointerException

01-08 23:39:51.529:E/AndroidRuntime(22803):在 android.content.res.Resources.openRawResource(Resources.java:951)

01-08 23:39:51.529:E/AndroidRuntime(22803):at android.content.res.Resources.openRawResource(Resources.java:927)

01-08 23:39:51.529:E/AndroidRuntime(22803):at preff.Gallery.onClick(Gallery.java:355)01-08 23:39:51.529: E/AndroidRuntime(22803):at android.view.View.performClick(View.java: 3526)

01-08 23:39:51.529:E/AndroidRuntime(22803):在 android.view.View $ PerformClick.run(View.java:14133)

missplaceme nt或者我错过了什么?:(

+0

“下载并设置壁纸尝试过,但得到doInBackground错误。”你做了什么错误? –

+0

通过这个去https://github.com/loopj/android-smart-image-view –

+0

哇真的很快响应:D @Brontok嗯......我想像“AsyncTask#5”错误,当我尝试按下图像时,这是昨天,我已经改变了代码。哇,很酷的链接!好吧,我会尝试在那里学习第一:D谢谢 – keitaro3660

回答

0

试试这个,我认为这是帮助你wallpaper

+0

thx为回复!我几乎失去了希望...哇,我认为这是解决方案位图位图= BitmapFactory.decodeStream(getResources ().openRawResource(R.id.iVDisplay));我在eclipse中的实现没有错误,但是当我在我的手机上启动它,然后按我的[Set Wallpaper]按钮,它就崩溃了:(为什么?我已经更新了[UPDATE 2]我的代码在这个问题上,请帮助。只是一点点。也许我想错过什么,但我不知道什么.. – keitaro3660

+0

或者是因为我的iVDisplay是SmartImageView而不是一个普通的ImageView? ?但即使是这样的话,图像(或位图)仍然存在......嗯...... – keitaro3660

+0

在普通的ImageView中用预先确定的R.drawable进行了测试,得到了与上面相同的错误日志......所以问题是什么? ( – keitaro3660