Android xUtils3使用 - 擷取網狀圖片

來源:互聯網
上載者:User

標籤: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使用 - 擷取網狀圖片

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.