【发布时间】: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