標籤:lin ntop 擷取網狀圖片 ted bsp 需要 cal oncreate 屬性
這篇主要記錄xUtils架構的BitmapUtils模組
BitmapUtils模組:用於網狀圖片的載入和本地圖片的引用,使用這個架構可以不需要考慮記憶體溢出和圖片錯位這些情況了,而且可以自己設定緩衝的大小,可以說很方便。
載入圖片只需要用到一個x.image().bind( ,)方法就行了
上面bind方法中有兩個參數,第一個參數是ImageView對象 ,第二個參數是URL字串地址
下面我通過使用一個自訂的ListView來載入網狀圖片,簡單的對xUtils的這個BitmapUtils模組進行使用
步驟一:當然還是先引入架包,然後在全域類Application類的子類中進行xUtils的初始化
這裡我自訂了一個MyApp類繼承Application
package com.contentprovide.liuliu.myapplication;import android.app.Application;import org.xutils.x;/** * Created by liuliu on 2018/6/22. */public class MyApp extends Application { @Override public void onCreate() { super.onCreate(); x.Ext.init(this); }}
有一個地方要注意的是這個MyApp類得在AndroidManifest檔案中註冊
步驟二:接下來我們就可以把用來放圖片的ListView的相關內容寫好
首先是activity_main.xml檔案的內容
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.contentprovide.liuliu.myapplication.MainActivity">
<ListView
android:id="@+id/my_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:dividerHeight="10dp"></ListView>
</LinearLayout>
然後是Listview中自訂欄表的布局內容,item.xml檔案
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal"> <ImageView android:id="@+id/my_ima" android:layout_width="200dp" android:layout_height="200dp" /> <TextView android:id="@+id/my_te" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="30dp" android:layout_marginTop="30dp" android:textColor="#000000" /></LinearLayout>
步驟三:現在就可以在MainActivity.java檔案中進行載入網狀圖片的操作了了
package com.contentprovide.liuliu.myapplication;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.ListView;import android.widget.TextView;import org.xutils.image.ImageOptions;import org.xutils.x;public class MainActivity extends AppCompatActivity {// 定義一個ImageOptions對象,用於設定更多的屬性 ImageOptions imageOptions; ListView my_list; public String[] str = {"圖片一", "圖片二", "圖片三", "圖片四"}; public String[] pic = {"https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=1690800971,3082549883&fm=27&gp=0.jpg", "https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=3932266323,1616123448&fm=27&gp=0.jpg", "https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=3555104010,781975830&fm=27&gp=0.jpg", "https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=3725021825,1940836077&fm=27&gp=0.jpg"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); my_list = (ListView) findViewById(R.id.my_list); MyAdapt myAdapt = new MyAdapt(); my_list.setAdapter(myAdapt); } // 建立適配器,用於給自訂的ListView新增內容 public class MyAdapt extends BaseAdapter { @Override public int getCount() { return str.length; } @Override public Object getItem(int i) { return i; } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { Myholder myholder; if (view == null) {// 將自訂好的視圖轉換為view,體現自訂配接器的靈活性 view = LayoutInflater.from(getApplicationContext()).inflate(R.layout.item, null); myholder = new Myholder(); myholder.my_ima = view.findViewById(R.id.my_ima); myholder.my_te = view.findViewById(R.id.my_te); view.setTag(myholder); } else { myholder = (Myholder) view.getTag(); }// 通過xUtils的對象設定當圖片載入失敗時顯示預設的圖片 imageOptions = new ImageOptions.Builder() .setFailureDrawableId(R.mipmap.ic_launcher).build();// 通過xUtils給ListView中的Item設定圖片 x.image().bind(myholder.my_ima, pic[i],imageOptions); myholder.my_te.setText(str[i]); return view; } // 定義一個內部類,擷取自訂Item中的空間對象 class Myholder { ImageView my_ima; TextView my_te; } }}
上面MainActivity檔案中真正和載入圖片有關的代碼就是幾行紅色的代碼,其他的都是關於ListView的使用的。
下面是最終的實現效果:
因為我設定了載入圖片失敗時的預設圖片,所以我關掉了網路再載入的效果是下面這樣的
下面是一些關於ImageOptions類的對象的一些使用方法
.setSize(300, 300) // 如果ImageView的大小不是定義為wrap_content, 不要crop. .setCrop(true) // 載入中或錯誤圖片的ScaleType //.setPlaceholderScaleType(ImageView.ScaleType.MATRIX) .setImageScaleType(ImageView.ScaleType.CENTER_CROP) //設定載入過程中的圖片 .setLoadingDrawableId(R.mipmap.ic_launcher) //設定載入失敗後的圖片 .setFailureDrawableId(R.mipmap.ic_launcher) //設定使用緩衝 .setUseMemCache(true) //設定支援gif .setIgnoreGif(false) //設定顯示圓形圖片 .setCircular(true)
//設定邊角的弧度
.setRadius(DensityUtil.dip2px(5))
Android xUtils3使用 - 擷取網狀圖片