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" />

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM