android - 為 AppBarLayout 設(shè)置的背景圖片 TransitionDrawable 為什么只在第一次打開的時(shí)候有效?
問題描述
預(yù)期的效果是點(diǎn)擊用戶頭像后使用 ImageRequest 下載圖片,然后給新的 Activity AppBayLayout 背景切換設(shè)置一個(gè)過渡效果,大致的實(shí)現(xiàn)代碼如下:
mQueue = CustomVolleyRequestQueue.getInstance(getApplicationContext()) .getRequestQueue();mAppBarLayout = (AppBarLayout) findViewById(R.id.app_bar_layout);ImageRequest imageRequest = new ImageRequest(mProfile.getString('profile_image_url'), new Response.Listener<Bitmap>() { @Override public void onResponse(Bitmap response) {Drawable[] drawables = new Drawable[2];drawables[0] = mAppBarLayout.getBackground();drawables[1] = new BitmapDrawable(getResources(), StackBlur.blur(response, 20, false));TransitionDrawable trans = new TransitionDrawable(drawables);mAppBarLayout.setBackground(trans);trans.startTransition(400); }}, 0, 0, null, null, null);mQueue.add(imageRequest);
現(xiàn)在遇到的問題時(shí)第一次點(diǎn)擊用戶頭像啟動(dòng)用戶頁面 Activity 可以正確看到過渡效果,按返回鍵彈出之后再次點(diǎn)擊同一個(gè)用戶頭像就不再顯示過渡效果了,而是直接由 drawables[0] 變?yōu)?drawables[1]。
請(qǐng)問這個(gè)問題應(yīng)該怎么解決?是因?yàn)轭^像圖片被緩存引起了什么問題嗎?
問題解答
回答1:會(huì)不會(huì)是因?yàn)槟泓c(diǎn)返回鍵后 drawables[0] = mAppBarLayout.getBackground();得到的drawable就是你之前設(shè)置的TransitionDrawable
回答2:打斷點(diǎn)調(diào)試下
回答3:目測是圖片緩存,不過你可以自己先不進(jìn)行網(wǎng)絡(luò)請(qǐng)求下載圖片,設(shè)置個(gè)本地圖片替代網(wǎng)絡(luò)圖片進(jìn)行測試下。
回答4:動(dòng)畫時(shí)間調(diào)長一點(diǎn)呢?
回答5:這上面用到的模糊類StackBlur,是開源的嗎? 求地址
相關(guān)文章:
1. 為什么HTML5規(guī)范中會(huì)包含一些和html無關(guān)的東西?如本地存儲(chǔ)等。2. javascript - 微信IOS頁面中input type=number輸入數(shù)字無法顯示,安卓顯示正常3. css3 - 寬度設(shè)置的都是百分比,為什么還是不適配移動(dòng)端?4. Java。根據(jù)WSDL驗(yàn)證SOAP消息5. html5 - 求一個(gè)獲取手機(jī)定位的小demo,web端的 Geolocation6. javascript - perfect-scrollbar 插件的使用7. javascript - 一個(gè)JS的算法,求大神解答8. javascript - web網(wǎng)頁版app返回上一頁按鈕在ios設(shè)備失效怎么辦?安卓上可以,代碼如下,請(qǐng)大神幫助,萬分感謝。9. javascript - h5頁面微信授權(quán)登錄后用戶關(guān)閉頁面再次進(jìn)入又要授權(quán)10. html - 關(guān)于bootstrap中container、row、col的應(yīng)用
