編輯:關於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();
}
}
微信群如何顯示名字
大家都玩微信,避免不了都多多少少會有幾個微信群,尤其是人數較多的群如果只看頭像肯定分不清楚誰是誰,只要我們在微信裡設置一下就可以將群裡面的好友名字顯示出來,
Android基礎——JSON數據的全方位解析
本篇文章包括以下內容: JSON是什麼 JSONObject的解析和存儲 JSONObject的解析和存儲(抽象) JSONArray的解析和存儲 模擬周邊加油站JSO
使用Android studio創建你的第一個項目
1.創建HelloWorld項目任何編程語言寫出的第一個程序毫無疑問都會是Hello World,這已經是自20世紀70年代一直流傳下來的傳統,在編程界已成為永恆的經典,
Qt on Android Episode 7(翻譯)
在最近的兩篇Qt on Android中學習了怎麼使用基礎的JNI以及如何使用外部IDE來管理Qt應用的Java部分。這章呢,我們繼續前進,關注如何擴展我們的
Android Widget 小部件(四---完結) 使用ListView、GridView、StackView、ViewFlipper展示Widget
官方有話這樣說: A RemoteViews object (and