第三方框架ImageLoader顯示不同圖片風(fēng)格

  • 1.添加依賴(lài)包:

compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'

  • 2.添加權(quán)限

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:orientation="vertical">
        <ImageView
            android:id="@+id/iv_img1"
            android:layout_width="250dp"
            android:layout_height="150dp"
            android:layout_marginTop="5dp"/>
        <ImageView
            android:id="@+id/iv_img2"
            android:layout_width="250dp"
            android:layout_height="150dp"
            android:layout_marginTop="10dp"/>
        <ImageView
            android:id="@+id/iv_img3"
            android:layout_width="300dp"
            android:layout_height="200dp"
            />
        <ImageView
            android:id="@+id/iv_img4"
            android:layout_width="250dp"
            android:layout_height="150dp"
            />
    </LinearLayout>
</ScrollView>

MainActivity.java

public class MainActivity extends Activity {

    private ImageView mImageView1, mImageView2, mImageView3, mImageView4;
    private DisplayImageOptions mOptions1, mOptions2, mOptions3, mOptions4;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_image_loader);
        initView();
        initData();
    }

    private void initData() {
        String uri = "http://pic51.nipic.com/file/20141027/11284670_094822707000_2.jpg";
        ImageLoaderConfiguration configuration = ImageLoaderConfiguration.createDefault(this);

        ImageLoader.getInstance().init(configuration);

        DisplayImageOptions options = new DisplayImageOptions.Builder()
                .showImageOnFail(R.mipmap.ic_launcher)
                .showImageOnLoading(R.mipmap.ic_launcher)
                .cacheInMemory(true)
                .cacheOnDisk(true)
                .bitmapConfig(Bitmap.Config.RGB_565)
                .displayer(new CircleBitmapDisplayer())
                .build();

        ImageLoader.getInstance().displayImage(uri, mImageView1, options);

        //顯示圓形圖片叠纷,使用該效果,必須在布局中顯式指定顯示圖片控件的寬高
        mOptions1 = new DisplayImageOptions.Builder()
                .showImageOnFail(R.mipmap.ic_launcher)
                .showImageOnLoading(R.mipmap.ic_launcher)
                .cacheInMemory(true)
                .cacheOnDisk(true)
                .bitmapConfig(Bitmap.Config.RGB_565)
                .displayer(new CircleBitmapDisplayer())
                .build();
        ImageLoader.getInstance().displayImage(uri, mImageView1, mOptions1);

        //顯示圓角圖片扒寄,使用該效果,必須在布局中顯式指定顯示圖片控件的寬高
        mOptions2 = new DisplayImageOptions.Builder()
                .cacheOnDisk(true)
                .cacheOnDisk(true)
                .showImageForEmptyUri(R.mipmap.ic_launcher)
                .showImageOnFail(R.mipmap.ic_launcher)
                .bitmapConfig(Bitmap.Config.RGB_565)
                .displayer(new RoundedBitmapDisplayer(90))
                .build();
        ImageLoader.getInstance().displayImage(uri, mImageView2, mOptions2);

        //圓角縮放圖片圖片嗓违,使用該效果,必須在布局中顯式指定顯示圖片控件的寬高
        mOptions3 = new DisplayImageOptions.Builder()
                .cacheOnDisk(true)
                .cacheOnDisk(true)
                .showImageForEmptyUri(R.mipmap.ic_launcher)
                .showImageOnFail(R.mipmap.ic_launcher)
                .bitmapConfig(Bitmap.Config.RGB_565)
                .displayer(new RoundedVignetteBitmapDisplayer(200, 100))
                .build();
        ImageLoader.getInstance().displayImage(uri, mImageView3, mOptions3);

        //漸顯圖片
        mOptions4 = new DisplayImageOptions.Builder()
                .cacheOnDisk(true)
                .cacheOnDisk(true)
                .showImageForEmptyUri(R.mipmap.ic_launcher)
                .showImageOnFail(R.mipmap.ic_launcher)
                .bitmapConfig(Bitmap.Config.RGB_565)
                .displayer(new FadeInBitmapDisplayer(5000))
                .build();
        ImageLoader.getInstance().displayImage(uri, mImageView4, mOptions4);

    }

    private void initView() {
        mImageView1 = (ImageView) findViewById(R.id.iv_img1);
        mImageView2 = (ImageView) findViewById(R.id.iv_img2);
        mImageView3 = (ImageView) findViewById(R.id.iv_img3);
        mImageView4 = (ImageView) findViewById(R.id.iv_img4);
    }
}

ImageLoaderConfiguration 詳細(xì)配置

ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
                 .memoryCacheExtraOptions(480, 800) // 指定緩存到內(nèi)存時(shí)圖片的大小,默認(rèn)是屏幕尺寸的長(zhǎng)寬
                 .diskCacheExtraOptions(480, 800, null) // 指定緩存到硬盤(pán)時(shí)圖片的大小,并不建議使用
                 .taskExecutor(new Executor()) // 自定義一個(gè)線(xiàn)程來(lái)加載和顯示圖片
                 .taskExecutorForCachedImages(new Executor())// 自定義一個(gè)線(xiàn)程來(lái)緩存圖片
                 .threadPoolSize(3) // default, 指定線(xiàn)程池大小
                 .threadPriority(Thread.NORM_PRIORITY - 2) // default ,指定線(xiàn)程優(yōu)先級(jí)
                 .tasksProcessingOrder(QueueProcessingType.FIFO) // default , 指定加載顯示圖片的任務(wù)隊(duì)列的類(lèi)型
                 .denyCacheImageMultipleSizesInMemory() // 禁止在內(nèi)存中緩存同一張圖片的多個(gè)尺寸類(lèi)型
                 .memoryCache(new LruMemoryCache(2 * 1024 * 1024)) // 指定內(nèi)存緩存的大小,默認(rèn)值為1/8 應(yīng)用的最大可用內(nèi)存
                 .memoryCacheSize(2 * 1024 * 1024)
                 .memoryCacheSizePercentage(13) // default
                 .diskCache(new UnlimitedDiskCache(cacheDir)) // default , 指定硬盤(pán)緩存的地址
                 .diskCacheSize(50 * 1024 * 1024) // 指定硬盤(pán)緩存的大小
                 .diskCacheFileCount(100) // 指定硬盤(pán)緩存的文件個(gè)數(shù)
                 .diskCacheFileNameGenerator(new HashCodeFileNameGenerator()) // default , 指定硬盤(pán)緩存時(shí)文件名的生成器
                 .imageDownloader(new BaseImageDownloader(context)) // default , 指定圖片下載器
                 .imageDecoder(new BaseImageDecoder()) // default , 指定圖片解碼器
                 .defaultDisplayImageOptions(DisplayImageOptions.createSimple()) // default , 指定圖片顯示的配置
                 .writeDebugLogs() // 是否顯示Log
                 .build();

DisplayImageOptions 參數(shù)詳解:

DisplayImageOptions options = new DisplayImageOptions.Builder()
                .showImageOnLoading(R.drawable.ic_stub) // 圖片正在加載時(shí)顯示的圖片資源ID
                .showImageForEmptyUri(R.drawable.ic_empty) // URI為空時(shí)顯示的圖片資源ID
                .showImageOnFail(R.drawable.ic_error) // 圖片加載失敗時(shí)顯示的圖片資源ID
                .resetViewBeforeLoading(false)  // default 圖片在下載前是否重置,復(fù)位
                .delayBeforeLoading(1000) // 圖片開(kāi)始加載前的延時(shí).默認(rèn)是0
                .cacheInMemory(false) // default , 是否緩存在內(nèi)存中, 默認(rèn)不緩存
                .cacheOnDisk(false) // default , 是否緩存在硬盤(pán) , 默認(rèn)不緩存
                .preProcessor(new BitmapProcessor) // 設(shè)置圖片緩存在內(nèi)存前的圖片處理器
                .postProcessor(new BitmapProcessor) // 設(shè)置圖片在緩存到內(nèi)存以后 , 顯示在界面之前的圖片處理器
                .extraForDownloader(...) // 為圖片下載設(shè)置輔助參數(shù)
                .considerExifParams(false) // default , 設(shè)置是否考慮JPEG圖片的EXIF參數(shù)信息,默認(rèn)不考慮
                .imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2) // default , 指定圖片縮放的方式,ListView/GridView/Gallery推薦使用此默認(rèn)值
                .bitmapConfig(Bitmap.Config.ARGB_8888) // default , 指定圖片的質(zhì)量,默認(rèn)是 ARGB_8888
                .decodingOptions(...) // 指定圖片的解碼方式
                .displayer(new SimpleBitmapDisplayer()) // default , 設(shè)置圖片顯示的方式,用于自定義
                .handler(new Handler()) // default ,設(shè)置圖片顯示的方式和ImageLoadingListener的監(jiān)聽(tīng), 用于自定義
                .build();

運(yùn)行結(jié)果:


Screenshot_2016-10-07-16-51-34--569904048.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市背亥,隨后出現(xiàn)的幾起案子涨薪,更是在濱河造成了極大的恐慌待榔,老刑警劉巖屁使,帶你破解...
    沈念sama閱讀 212,383評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異匆瓜,居然都是意外死亡赢笨,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)驮吱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)茧妒,“玉大人,你說(shuō)我怎么就攤上這事左冬⊥┓ぃ” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,852評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵拇砰,是天一觀的道長(zhǎng)梅忌。 經(jīng)常有香客問(wèn)我狰腌,道長(zhǎng),這世上最難降的妖魔是什么牧氮? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,621評(píng)論 1 284
  • 正文 為了忘掉前任琼腔,我火速辦了婚禮,結(jié)果婚禮上踱葛,老公的妹妹穿的比我還像新娘丹莲。我一直安慰自己,他們只是感情好尸诽,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布甥材。 她就那樣靜靜地躺著,像睡著了一般性含。 火紅的嫁衣襯著肌膚如雪洲赵。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,929評(píng)論 1 290
  • 那天商蕴,我揣著相機(jī)與錄音板鬓,去河邊找鬼。 笑死究恤,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的后德。 我是一名探鬼主播部宿,決...
    沈念sama閱讀 39,076評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼瓢湃!你這毒婦竟也來(lái)了理张?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,803評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤绵患,失蹤者是張志新(化名)和其女友劉穎雾叭,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體落蝙,經(jīng)...
    沈念sama閱讀 44,265評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡织狐,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了筏勒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片移迫。...
    茶點(diǎn)故事閱讀 38,716評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖管行,靈堂內(nèi)的尸體忽然破棺而出厨埋,到底是詐尸還是另有隱情,我是刑警寧澤捐顷,帶...
    沈念sama閱讀 34,395評(píng)論 4 333
  • 正文 年R本政府宣布荡陷,位于F島的核電站雨效,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏废赞。R本人自食惡果不足惜徽龟,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評(píng)論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蛹头。 院中可真熱鬧顿肺,春花似錦、人聲如沸渣蜗。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,798評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)耕拷。三九已至讼昆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間骚烧,已是汗流浹背浸赫。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,027評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留赃绊,地道東北人既峡。 一個(gè)月前我還...
    沈念sama閱讀 46,488評(píng)論 2 361
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像碧查,于是被迫代替她去往敵國(guó)和親运敢。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,838評(píng)論 25 707
  • 一.榜單介紹 排行榜包括四大類(lèi): 單一框架:僅提供路由忠售、網(wǎng)絡(luò)層传惠、UI層、通信層或其他單一功能的框架 混合開(kāi)發(fā)框架:...
    偉子男閱讀 5,240評(píng)論 0 161
  • 附上原文作者連接:作者:金誠(chéng) 一.榜單介紹 排行榜包括四大類(lèi): 單一框架:僅提供路由稻扬、網(wǎng)絡(luò)層卦方、UI層、通信層或其他...
    這個(gè)美嘉不姓陳閱讀 2,254評(píng)論 1 35
  • 點(diǎn)絳唇·竹笛 紫竹空心泰佳,深居山野仙云客盼砍。精雕細(xì)刻,瘦管終為笛逝她。 雅韻輕吹衬廷,一曲長(zhǎng)天碧。人寂寂汽绢,臨風(fēng)玉立吗跋,卻把青春憶...
    不語(yǔ)不問(wèn)閱讀 275評(píng)論 0 2
  • 清晨,被噩夢(mèng)驚醒
    foll123閱讀 127評(píng)論 0 0