編輯:關於Android編程
因為項目裡用的Glide的地方比較多,所有簡單的封裝了以下,其實也沒什麼,就是寫了個工具類,但是還是要把基礎說下
1.JARGlide有三種集成的方式
Gradle(推薦)點擊下載Glide.jar
首先需要在你model的build.gradle裡添加
repositories { // jcenter() works as well because it pulls from Maven Central mavenCentral() }
然後在我們的app的build.gradle裡添加
compile 'com.github.bumptech.glide:glide:3.7.0' compile 'com.android.support:support-v4:24.2.1'
Maven這裡要注意的是Glide需要V4包的支持,V4包的版本根據你的開發環境來決定
com.github.bumptech.glide glide3.7.0 com.google.android support-v4r7
Glide是在Picasso的基礎上進行改良的,我們來看下他最基礎的使用方法
ImageView imageView = (ImageView) findViewById(R.id.my_image_view); Glide.with(this).load("http://goo.gl/gEgYUd").into(imageView);
Context Activity Fragment FragmentActivity其實很簡單,with裡支持的比Picasso多很多
lode是需要加載的圖片地址,into是賦予的控件,當然還有很多其他的方法,我們等下說
public static void loadImageView(Context mContext, String path, ImageView mImageView) { Glide.with(mContext).load(path).into(mImageView); }
public static void loadImageViewSize(Context mContext, String path, int width, int height, ImageView mImageView) { Glide.with(mContext).load(path).override(width, height).into(mImageView); }
public static void loadImageViewLoding(Context mContext, String path, ImageView mImageView, int lodingImage, int errorImageView) { Glide.with(mContext).load(path).placeholder(lodingImage).error(errorImageView).into(mImageView); }
public static void loadImageViewLodingSize(Context mContext, String path, int width, int height, ImageView mImageView, int lodingImage, int errorImageView) { Glide.with(mContext).load(path).override(width, height).placeholder(lodingImage).error(errorImageView).into(mImageView); }
public static void loadImageViewCache(Context mContext, String path, ImageView mImageView) { Glide.with(mContext).load(path).skipMemoryCache(true).into(mImageView); }
public static void loadImageViewPriority(Context mContext, String path, ImageView mImageView) { Glide.with(mContext).load(path).priority(Priority.NORMAL).into(mImageView); }
all:緩存源資源和轉換後的資源 none:不作任何磁盤緩存 source:緩存源資源 result:緩存轉換後的資源策略分為:
public static void loadImageViewDiskCache(Context mContext, String path, ImageView mImageView) { Glide.with(mContext).load(path).diskCacheStrategy(DiskCacheStrategy.ALL).into(mImageView); }
api也提供了幾個常用的動畫:比如crossFade()
public static void loadImageViewAnim(Context mContext, String path, int anim, ImageView mImageView) { Glide.with(mContext).load(path).animate(anim).into(mImageView); }
public static void loadImageViewThumbnail(Context mContext, String path, ImageView mImageView) { Glide.with(mContext).load(path).thumbnail(0.1f).into(mImageView); }
api提供了比如:centerCrop()、fitCenter()等
public static void loadImageViewCrop(Context mContext, String path, ImageView mImageView) { Glide.with(mContext).load(path).centerCrop().into(mImageView); }
public static void loadImageViewDynamicGif(Context mContext, String path, ImageView mImageView) { Glide.with(mContext).load(path).asGif().into(mImageView); }
public static void loadImageViewStaticGif(Context mContext, String path, ImageView mImageView) { Glide.with(mContext).load(path).asBitmap().into(mImageView); }
設置監聽的用處 可以用於監控請求發生錯誤來源,以及圖片來源 是內存還是磁盤
public static void loadImageViewListener(Context mContext, String path, ImageView mImageView, RequestListenerrequstlistener) { Glide.with(mContext).load(path).listener(requstlistener).into(mImageView); }
項目中有很多需要先下載圖片然後再做一些合成的功能,比如項目中出現的圖文混排
public static void loadImageViewContent(Context mContext, String path, SimpleTargetsimpleTarget) { Glide.with(mContext).load(path).centerCrop().into(simpleTarget); }
public static void GuideClearDiskCache(Context mContext) { //理磁盤緩存 需要在子線程中執行 Glide.get(mContext).clearDiskCache(); }
public static void GuideClearMemory(Context mContext) { //清理內存緩存 可以在UI主線程中進行 Glide.get(mContext).clearMemory(); }
當然,我們後續肯定會功能越來越多的,我把項目開源在Github上了,為了使用起來方便自己封裝了下,同時也分享以下
package com.liuguilin.gankclient.util; /* * 項目名: GankClient * 包名: com.liuguilin.gankclient.util * 文件名: GlideUtils * 創建者: LGL * 創建時間: 2016/10/20 16:45 * 描述: Glide封裝 */ import android.content.Context; import android.widget.ImageView; import com.bumptech.glide.Glide; import com.bumptech.glide.Priority; import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.bumptech.glide.load.resource.drawable.GlideDrawable; import com.bumptech.glide.request.RequestListener; import com.bumptech.glide.request.target.SimpleTarget; public class GlideUtils { /** * Glide特點 * 使用簡單 * 可配置度高,自適應程度高 * 支持常見圖片格式 Jpg png gif webp * 支持多種數據源 網絡、本地、資源、Assets 等 * 高效緩存策略 支持Memory和Disk圖片緩存 默認Bitmap格式采用RGB_565內存使用至少減少一半 * 生命周期集成 根據Activity/Fragment生命周期自動管理請求 * 高效處理Bitmap 使用Bitmap Pool使Bitmap復用,主動調用recycle回收需要回收的Bitmap,減小系統回收壓力 * 這裡默認支持Context,Glide支持Context,Activity,Fragment,FragmentActivity */ //默認加載 public static void loadImageView(Context mContext, String path, ImageView mImageView) { Glide.with(mContext).load(path).into(mImageView); } //加載指定大小 public static void loadImageViewSize(Context mContext, String path, int width, int height, ImageView mImageView) { Glide.with(mContext).load(path).override(width, height).into(mImageView); } //設置加載中以及加載失敗圖片 public static void loadImageViewLoding(Context mContext, String path, ImageView mImageView, int lodingImage, int errorImageView) { Glide.with(mContext).load(path).placeholder(lodingImage).error(errorImageView).into(mImageView); } //設置加載中以及加載失敗圖片並且指定大小 public static void loadImageViewLodingSize(Context mContext, String path, int width, int height, ImageView mImageView, int lodingImage, int errorImageView) { Glide.with(mContext).load(path).override(width, height).placeholder(lodingImage).error(errorImageView).into(mImageView); } //設置跳過內存緩存 public static void loadImageViewCache(Context mContext, String path, ImageView mImageView) { Glide.with(mContext).load(path).skipMemoryCache(true).into(mImageView); } //設置下載優先級 public static void loadImageViewPriority(Context mContext, String path, ImageView mImageView) { Glide.with(mContext).load(path).priority(Priority.NORMAL).into(mImageView); } /** * 策略解說: * <p> * all:緩存源資源和轉換後的資源 * </p><p> * none:不作任何磁盤緩存 * </p><p> * source:緩存源資源 * </p><p> * result:緩存轉換後的資源 */ //設置緩存策略 public static void loadImageViewDiskCache(Context mContext, String path, ImageView mImageView) { Glide.with(mContext).load(path).diskCacheStrategy(DiskCacheStrategy.ALL).into(mImageView); } /** * api也提供了幾個常用的動畫:比如crossFade() */ //設置加載動畫 public static void loadImageViewAnim(Context mContext, String path, int anim, ImageView mImageView) { Glide.with(mContext).load(path).animate(anim).into(mImageView); } /** * 會先加載縮略圖 */ //設置縮略圖支持 public static void loadImageViewThumbnail(Context mContext, String path, ImageView mImageView) { Glide.with(mContext).load(path).thumbnail(0.1f).into(mImageView); } /** * api提供了比如:centerCrop()、fitCenter()等 */ //設置動態轉換 public static void loadImageViewCrop(Context mContext, String path, ImageView mImageView) { Glide.with(mContext).load(path).centerCrop().into(mImageView); } //設置動態GIF加載方式 public static void loadImageViewDynamicGif(Context mContext, String path, ImageView mImageView) { Glide.with(mContext).load(path).asGif().into(mImageView); } //設置靜態GIF加載方式 public static void loadImageViewStaticGif(Context mContext, String path, ImageView mImageView) { Glide.with(mContext).load(path).asBitmap().into(mImageView); } //設置監聽的用處 可以用於監控請求發生錯誤來源,以及圖片來源 是內存還是磁盤 //設置監聽請求接口 public static void loadImageViewListener(Context mContext, String path, ImageView mImageView, RequestListener<string, glidedrawable=""> requstlistener) { Glide.with(mContext).load(path).listener(requstlistener).into(mImageView); } //項目中有很多需要先下載圖片然後再做一些合成的功能,比如項目中出現的圖文混排 //設置要加載的內容 public static void loadImageViewContent(Context mContext, String path, SimpleTarget<glidedrawable> simpleTarget) { Glide.with(mContext).load(path).centerCrop().into(simpleTarget); } //清理磁盤緩存 public static void GuideClearDiskCache(Context mContext) { //理磁盤緩存 需要在子線程中執行 Glide.get(mContext).clearDiskCache(); } //清理內存緩存 public static void GuideClearMemory(Context mContext) { //清理內存緩存 可以在UI主線程中進行 Glide.get(mContext).clearMemory(); } }
大家都玩微信,避免不了都多多少少會有幾個微信群,尤其是人數較多的群如果只看頭像肯定分不清楚誰是誰,只要我們在微信裡設置一下就可以將群裡面的好友名字顯示出來,
本篇文章包括以下內容: JSON是什麼 JSONObject的解析和存儲 JSONObject的解析和存儲(抽象) JSONArray的解析和存儲 模擬周邊加油站JSO
1.創建HelloWorld項目任何編程語言寫出的第一個程序毫無疑問都會是Hello World,這已經是自20世紀70年代一直流傳下來的傳統,在編程界已成為永恆的經典,
在最近的兩篇Qt on Android中學習了怎麼使用基礎的JNI以及如何使用外部IDE來管理Qt應用的Java部分。這章呢,我們繼續前進,關注如何擴展我們的
官方有話這樣說: A RemoteViews object (and