1. 程式人生 > 其它 >安卓開發學習——day10

安卓開發學習——day10

技術標籤:安卓學習

文章目錄

Volley

1.簡介:

Volley是一個網路通訊框架,適合進行資料量不大但是通訊頻繁的網路操作,不適用於資料量比較大的網路操作。

2.使用

(1).新增依賴

(2).清單檔案裡授權訪問因特網

(3).程式碼

package net.tyao.download_image_by_volley;

import android.graphics.Bitmap;
import android.os.Bundle; import android.util.LruCache; import android.view.View; import android.widget.EditText; import android.widget.ImageView; import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; import com.android.volley.RequestQueue; import com.android.volley.Response;
import com.android.volley.VolleyError; import com.android.volley.toolbox.ImageLoader; import com.android.volley.toolbox.ImageRequest; import com.android.volley.toolbox.Volley; public class MainActivity extends AppCompatActivity { private EditText edtImageUrl; // 網址編輯框 private ImageView ivImage;
// 顯示網路圖片的影象控制元件 private RequestQueue mRequestQueue; // 請求佇列 private ImageLoader imageLoader; private ImageLoader.ImageListener imageListener; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 利用佈局資原始檔設定使用者介面 setContentView(R.layout.activity_main); // 通過資源識別符號獲取控制元件例項 edtImageUrl = findViewById(R.id.edtImage); ivImage = findViewById(R.id.ivImage); // 建立請求佇列 mRequestQueue = Volley.newRequestQueue(getApplicationContext()); } /** * 下載按鈕單擊事件處理方法 * * @param view */ public void doDownload(View view) { // 獲取使用者輸入的網址 String strImageUrl = edtImageUrl.getText().toString(); // 網址非空校驗 if (strImageUrl.length() == 0) { Toast.makeText(getApplicationContext(), "請輸入網址", Toast.LENGTH_SHORT).show(); edtImageUrl.requestFocus(); return; } //建立影象載入器物件 imageLoader = new ImageLoader(mRequestQueue,new BitmapCache()); //獲取影象監聽器物件 imageListener = imageLoader.getImageListener( ivImage, R.drawable.ic_launcher_background, android.R.drawable.ic_delete ); imageLoader.get(strImageUrl, imageListener); } class BitmapCache implements ImageLoader.ImageCache { private LruCache<String, Bitmap> mCache; public BitmapCache() { int maxSize = 10 * 1024 * 1024; mCache = new LruCache<String, Bitmap>(maxSize) { @Override protected int sizeOf(String key, Bitmap bitmap) { return bitmap.getRowBytes() * bitmap.getHeight(); } }; } @Override public Bitmap getBitmap(String url) { return mCache.get(url); } @Override public void putBitmap(String url, Bitmap bitmap) { mCache.put(url, bitmap); } } /** * 清空單擊事件處理方法 * * @param view */ public void doClear(View view) { // 清空網址編輯框 edtImageUrl.setText(""); // 清空影象控制元件內容 ivImage.setImageBitmap(null); // 讓網址編輯框獲取焦點 edtImageUrl.requestFocus(); } }

(4).效果:

更多


JSONObject

1.使用

(1).讀取解析JSON

package net.tyao.gson;

import androidx.appcompat.app.AppCompatActivity;

import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonObject;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.IOException;
import java.io.InputStream;

public class MainActivity extends AppCompatActivity {

    private TextView tvContent;
    private String content;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        tvContent = findViewById(R.id.tvContent);
    }

    /***
     * 讀取JSOn
     * @param view
     */
    public void doReadJSON(View view) {
        try {
            //讀取assets目錄下的檔案,獲取位元組輸出流
            InputStream is = getResources().getAssets().open("textbook.json");
            //獲取位元組輸出流長度
            int length = is.available();
            //定義位元組緩衝區
            byte[] buffer = new byte[length];
            //讀取位元組輸出流,將資料儲存在位元組緩衝區
            is.read(buffer);
            //將位元組緩衝區的資料轉換為字串
            content = new String(buffer, "utf-8");
            //將字串寫入標籤
            tvContent.setText(content);
            //關閉位元組流
            is.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public void doParseJSON(View view) {
        if (content == null) {
            Toast.makeText(this,"請先讀取JSON",Toast.LENGTH_LONG).show();
        } else {
            try {
                tvContent.setText("");
                JSONArray jsonArray = new JSONArray(content);

                for (int i = 0; i < jsonArray.length(); i++) {
                    JSONObject jsonObject = jsonArray.getJSONObject(i);
                    String id = jsonObject.getString("id");
                    String name = jsonObject.getString("name");
                    String press = jsonObject.getString("press");
                    String author = jsonObject.getString("author");
                    String price = jsonObject.getString("price");

                    String book = "編號:" + id + "\n書名:《" + name + "》\n出版社:"
                            + press + "\n作者:" + author + "\n價格:" + price;

                    tvContent.append(book);

                    tvContent.setTextColor(Color.RED);
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }
}

(3).效果:


GSON

總結:

今天簡單的瞭解了下Volley和jsonObject這些,能夠使我在用客戶端訪問網路和解析json,由於時間的問題,Gson只有明天學習,然後完成訪問介面實現資料顯示。