您好,登錄后才能下訂單哦!
最近在做一個(gè)項(xiàng),有一個(gè)收藏的功能。后來(lái)看到了一點(diǎn)資訊的收藏動(dòng)畫,感覺不錯(cuò),所有自己就實(shí)現(xiàn)了一下。
這是效果:
附上完整的代碼,其中Animation_Toast為動(dòng)畫:
<div ><span ></span></div><pre name="code" class="java">public class CollectToast { private static CollectToast toastCollectSucceed = null; private Toast toast = null; private TextView text; private CollectToast() {} /** * 單例模式 * * @return */ public static CollectToast createToast() { if (toastCollectSucceed == null) { toastCollectSucceed = new CollectToast(); } return toastCollectSucceed; } /** * 顯示Toast * * @param context * @param root * @param tvString * @param result 是否成功 */ public Toast showToast(Context context, ViewGroup root, String tvString, int duration, boolean result) { toast = null; int styleId = R.style.Animation_Toast; if (toast == null) { View layout = LayoutInflater.from(context).inflate(R.layout.toast_collect_layout, root); text = (TextView) layout.findViewById(R.id.title_tv); ImageView imageView = (ImageView) layout.findViewById(R.id.iv); if (result) imageView.setBackgroundDrawable(DrawableUtil.getImageDrawable(context, R.mipmap.doneicon_popup_textpage)); else imageView.setBackgroundDrawable(DrawableUtil.getImageDrawable(context, R.mipmap.close_popup_textpage)); text.setText(tvString); toast = new Toast(context); toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0); toast.setDuration(duration); toast.setView(layout); toast.show(); } else { text.setText(tvString); toast.show(); } //通過(guò)反射給Toast設(shè)置動(dòng)畫 try { Object mTN = null; mTN = getField(toast, "mTN"); if (mTN != null) { Object mParams = getField(mTN, "mParams"); if (mParams != null && mParams instanceof WindowManager.LayoutParams) { WindowManager.LayoutParams params = (WindowManager.LayoutParams) mParams; params.windowAnimations = styleId; } } } catch (Exception e) { e.printStackTrace(); } return toast; } /** * 反射字段 * * @param object 要反射的對(duì)象 * @param fieldName 要反射的字段名稱 * @return * @throws NoSuchFieldException * @throws IllegalAccessException */ private static Object getField(Object object, String fieldName) throws NoSuchFieldException, IllegalAccessException { Field field = object.getClass().getDeclaredField(fieldName); if (field != null) { field.setAccessible(true); return field.get(object); } return null; } }</pre><br> <div ><span ></span></div> <pre></pre> <br> <br>
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。