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.(即设置>显示>壁纸>壁纸的功 ...
随机推荐
- new及placememt new 异同点
new与定位new 区别如下: 简单概括: new 分配的内存地址空间来自于heap堆,用完需使用delete 释放内存 定位new 使用的不是heap堆内存,因此不需要使用delete 释放 定位n ...
- Rhythmk 一步一步学 JAVA(4):Spring MVC -之拦截器
1.实现拦截器类(myInterceptor): package com.rhythmk.Interceptor; import javax.servlet.http.HttpServletReque ...
- python学习——练习题(6)
""" 题目:斐波那契数列. 程序分析:斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样一个数列:0.1.1.2.3.5.8.13.21 ...
- Django xadmin的使用 (一)
Django xadmin的使用 xadmin是django的一个第三方的管理后台实现,它的功能比自带的admin功能更加强大. xadmin项目在github上的地址为:https://githu ...
- 基本SQL命令 (1.SQL命令使用规则/2.库管理/3.表管理/4.表记录管理/5.更改库,库的默认字符集/6.连接数据库的过程/7.数据类型)
1.SQL命令的使用规则 1.每条命令必须以 ; 结尾 2.SQL命令不区分字母大小写 3.使用 \c 终止SQL命令的执行 2.库的管理 1.库的基本操作 ...
- 颜色模式中8位,16位,24位,32位色彩是什么意思?会有什么区别?计算机颜色格式( 8位 16位 24位 32位色)<转>
颜色模式中8位,16位,24位,32位色彩是什么意思?会有什么区别简单地说这里说的位数和windows系统显示器设置中的颜色位数是一样的.表示的是能够显示出来的颜色的多少. 8位的意思是说,能够显示出 ...
- hibernate相关方法
uniqueResult() 当确定返回的实例只有一个或者null时 用uniqueResult()方法 代码示例: Session session = factory.openSession(); ...
- Jquery.Ajax的使用方法
1.Get $('.manager_republish.notVIP').click(function () { $.ajax({ async: false, type: "get" ...
- SQL 数据库 学习 004 预备知识
数据库 预备知识 我的电脑系统: Windows 10 64位 使用的SQL Server软件: SQL Server 2014 Express 如果我们要学习这个数据库,我们需要学习什么知识. 预备 ...
- oracle数据库学习记录(持续更新中...)
--------------------------------------------day1------------------------------------------------- 1. ...