Android-获取网络图片设置壁纸
下载图片,设置壁纸 的代码:
package liudeli.async; import android.app.Activity;
import android.app.ProgressDialog;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast; import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL; public class MainActivity4 extends Activity { // 图片地址
private final String PATH = "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000" +
"&sec=1544714792699&di=3c2de372608ed6323f583f1c1b445e51&imgtype=0&src=http%3A%2F%2Fp" +
"2.qhimgs4.com%2Ft0105d27180a686e91f.jpg"; private ImageView imageView;
private Button bt_set_wallpaper;
private ProgressDialog progressDialog; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); setContentView(R.layout.activity_main4); imageView = findViewById(R.id.iv_image);
bt_set_wallpaper = findViewById(R.id.bt_set_wallpaper); Button bt_get_image = findViewById(R.id.bt_get_image);
bt_get_image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 让异步任务执行耗时操作
new DownloadImage().execute(PATH);
}
}); bt_set_wallpaper.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (null != bitmap) {
try {
setWallpaper(bitmap);
Toast.makeText(MainActivity4.this, "壁纸设置成功", Toast.LENGTH_LONG).show();
} catch (IOException e) {
e.printStackTrace();
Toast.makeText(MainActivity4.this, "壁纸设置失败", Toast.LENGTH_LONG).show();
}
}
}
});
} private Bitmap bitmap; class DownloadImage extends AsyncTask<String, Void, Object> { /**
* 执行耗时操作前执行
*/
@Override
protected void onPreExecute() {
super.onPreExecute();
// 弹出进度条
progressDialog = new ProgressDialog(MainActivity4.this);
progressDialog.setMessage("Download ...");
progressDialog.show();
} /**
* 执行耗时操作
* @param strings
* @return
*/
@Override
protected Object doInBackground(String... strings) {
try {
// 封装成网络地址
URL url = new URL(PATH); // 打开一个连接
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection(); // 设置连接时长
httpURLConnection.setConnectTimeout(5000); // 设置请求方式
httpURLConnection.setRequestMethod("GET"); /**
* 注意:⚠️ 不要肤浅的任务 打开连接对象 设置连接时长 设置请求方式 就向服务器发送Http请求了
* 是要执行httpURLConnection.getResponseCode()才会向服务器发送Http请求
*/
if (httpURLConnection.getResponseCode() == HttpURLConnection.HTTP_OK) {
// 得到服务器返回过来的流对象
InputStream inputStream = httpURLConnection.getInputStream();
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
return bitmap;
} } catch (Exception e) {
e.printStackTrace();
}
return null;
} /**
* 耗时执行过程中 更新进度条刻度操作
* @param values
*/
@Override
protected void onProgressUpdate(Void... values) {
super.onProgressUpdate(values);
} /**
* 耗时操作执行完成,用于更新UI
* @param o
*/
@Override
protected void onPostExecute(Object o) {
super.onPostExecute(o); if (o != null) { // 成功
bitmap = (Bitmap) o; // 故意放慢两秒,模仿网络差的效果
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
// 设置从网上下载的图片
imageView.setImageBitmap(bitmap);
// 设置为可以点击
bt_set_wallpaper.setEnabled(true); // 关闭进度条
progressDialog.dismiss();
}
}, 2000);
} else { //失败
bt_set_wallpaper.setEnabled(false);
Toast.makeText(MainActivity4.this, "下载失败,请检查原因", Toast.LENGTH_LONG).show();
// 关闭进度条
progressDialog.dismiss();
}
}
}
}
Layout:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"> <Button
android:id="@+id/bt_get_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="获取图片"
android:onClick="getImage"
android:layout_marginLeft="20dp"
/> <Button
android:id="@+id/bt_set_wallpaper"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="设置壁纸"
android:layout_alignParentRight="true"
android:layout_marginRight="20dp"
android:enabled="false"
/> <ImageView
android:id="@+id/iv_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/bt_get_image" /> </RelativeLayout>
AndroidManifest.xml 权限:
<!-- 访问网络是危险的行为 所以需要权限 -->
<uses-permission android:name="android.permission.INTERNET" /> <!-- 设置壁纸是危险的行为 所以需要权限 -->
<uses-permission android:name="android.permission.SET_WALLPAPER" />
Android-获取网络图片设置壁纸的更多相关文章
- Android-HttpClient-Get请求获取网络图片设置壁纸
第一种方式使用httpclient-*.jar (需要在网上去下载httpclient-*.jar包) 把httpclient-4.5.jar/httpclient-4.4.1.jar包放入到libs ...
- Android获取网络图片应用示例
1.养成好习惯,配置字符串资源文件 strings.xml <?xml version="1.0" encoding="utf-8"?> <r ...
- Android——获取网络图片
布局 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:too ...
- Android · 获取网络图片
import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import j ...
- Android获取网络图片
/** * * 访问网络的操作,必须放在工作线程中完成 * */ public class MainActivity extends Activity { static List<HashMap ...
- Android-okhttp下载网络图片并设置壁纸
在AndroidManifest.xml配置网络访问权限: <!-- 访问网络是危险的行为 所以需要权限 --> <uses-permission android:name=&quo ...
- android 获取http网络图片保存png
1.android 获取网络图片的方式很多,普通网络通信的方式都可以用在获取网络图片上. android http获取数据常用的方式: 1.Apache接口(HttpClient) 2.标准Jav ...
- [转]Android 如何根据网络地址获取网络图片方法
http://blog.csdn.net/xiazdong/article/details/7724103 目录(?)[-] h2pre namecode classhtml stylefont-we ...
- 【起航计划 013】2015 起航计划 Android APIDemo的魔鬼步伐 12 App->Activity->SetWallpaper 设置壁纸 WallpaperManager getDrawingCache使用
SetWallpaper介绍如何在Android获取当前Wallpaper,对Wallpaper做些修改,然后用修改后的图像重新设置Wallpaper.(即设置>显示>壁纸>壁纸的功 ...
随机推荐
- Linux常用命令大全(全面)
笔者在这篇文章中跟大家分享一下接近 100 个 Linux 常用命令大全,希望可以帮助到大家. 1.ls [选项] [目录名 | 列出相关目录下的所有目录和文件 1 2 3 4 5 6 7 8 9 1 ...
- Python实践练习目录
缘由 做中学才是最好的方法,通过这些项目来加强自己的Python掌握程度. 原则 成体系地学,不搞"题海战术" 通所有不如精一物,精一物方可通所有 走心学,忌浮躁 项目列表 字符串 ...
- Django timezone问题
今天用django做个blog碰到了问题,提交内容后浏览提示Database returned an invalid value in QuerySet.datetimes(). Are time z ...
- 塔防游戏 Day2
1. 创建炮塔选择的 UI 使用 UI -> Toggle .注意指定同一 group. 2. 创建炮台的数据类 [System.Serializable] // 序列化 public clas ...
- 将DataTable中的数据导出成Excel
public bool ExportFile(System.Data.DataTable dt){ SaveFileDialog sfd = new SaveFileDialog(); s ...
- Scala开发Hadoop示例
import org.apache.hadoop.conf.{Configuration, Configured}; import org.apache.hadoop.util.{ToolRunner ...
- Python与Go选择排序
#!/usr/bin/env python # -*- coding: utf-8 -*- # 选择排序 # 时间复杂度O(n^2) def selection_sort(array): length ...
- Python 爬虫之 Scrapy 分布式原理以及部署
Scrapy分布式原理 关于Scrapy工作流程 Scrapy单机架构 上图的架构其实就是一种单机架构,只在本机维护一个爬取队列,Scheduler进行调度,而要实现多态服务器共同爬取数据关键就是共享 ...
- javascript运算符优先级顺序
1 ()2 !.-(负号).++.-- 3 *./.%4 +.- 10-55 <.<=.<.>=6 ==.!=.===.!==.7 &&8 ||9 ?:10 = ...
- Java中String类型详解
这篇博客是我一直想总结的,这两天一直比较忙,先上传下照片吧,过后有时间再弄成正常的. 本文主要是对Java中String类型的总结,包括其在JVM中是怎么存储的...