【问题标题】:Set Wallpaper from Image Url从图像 URL 设置壁纸
【发布时间】:2014-01-26 01:00:42
【问题描述】:

已经好几天了,试图弄清楚这个功能是如何工作的...... 当然,我也在堆栈溢出中搜索过它, Downloading and setting a wallpaper 试过了,但得到了 doInBackground 错误。 以及我尝试过的更多“似乎合法”的答案。但最后还是不知道怎么改

  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: E/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): 在 android.content.res.Resources.openRawResource(Resources.java:927)

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

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

错位还是我错过了什么? :(

【问题讨论】:

  • "下载并设置壁纸尝试过,但出现 doInBackground 错误。"你得到什么错误?
  • 哇,反应真快:D @Brontok 嗯...当我尝试按下图像时,我想像“AsyncTask #5”错误。这是昨天,我已经更改了代码...哇酷链接!好的,我会先在那里学习 :D 谢谢
  • 好吧,就我而言,我已经完成了 [从 URL 将图像加载到视图中:]。但问题是,如何告诉 Eclipse 实际使用新下载的图像将其设置为墙纸?这是回到[从视图中设置壁纸]的基础吗?同样的待遇?
  • 如何将这个 [displaynya.setImageUrl(url2);] 应用到这个 [myWallpaperManager.setResource(setWallp);]??它在我的掌握之中,但我不知道该怎么办,这种令人沮丧的感觉:'(

标签: android image url download wallpaper


【解决方案1】:

试试这个,我想这对你有帮助wallpaper

【讨论】:

  • 感谢您的回复!我几乎失去了希望......哇,我认为这是解决方案 Bitmap bitmap = BitmapFactory.decodeStream(getResources().openRawResource(R.id.iVDisplay)); .我在 Eclipse 中的实现没有错误,但是当我在手机上安装它并按下我的 [设置壁纸] 按钮时,它崩溃了 :( 这是为什么?我已经更新了问题中的 [更新 2] 我的代码,请帮助。再多一点。也许我错过了什么,但我不知道是什么..
  • 还是因为我的 iVDisplay 是 SmartImageView 而不是普通的 ImageView?但即使是这样,图像(或位图)仍然存在......嗯......
  • 在普通 ImageView 中使用预定的 R.drawable 进行测试。得到与上面相同的错误日志......那是什么问题? :(
  • 你会再过来帮忙吗? :(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-12
  • 1970-01-01
相关资源
最近更新 更多