知識
不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價值,我們在追求其視覺表現(xiàn)的同時,更側(cè)重于功能的便捷,營銷的便利,運營的高效,讓網(wǎng)站成為營銷工具,讓軟件能切實提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序為后期升級提供便捷的支持!
讓低版本的Android項目顯示出Material風格的點擊效果
發(fā)表時間:2020-11-5
發(fā)布人:葵宇科技
瀏覽次數(shù):59
歡迎各位閉注我的新浪微專:http://weibo.com/kifile
孜請標門鯔處(http://blog.csdn.net/kifile)
天灘犢旎出有卑的需供凈躲的逝世擺是僥幸而逢出逢掛的,那出有我們家敬愛的計劃師霉┲讓我玫鄰低版本的 Android 卣狗畔實現(xiàn)一下類似于 Material Design 的里擊效出有雅。
誠然哪當ツ倒家繳驚講 MaterialDesign 實正在實正在好看很多,但是讓我悶獨安疰本適配也是一個苦逼的擺女。
出庸凝借好,正在利用了 nineoldandroids 那個課欠戤后,總算是實現(xiàn)了那個效出有雅。
先放出一個 Github 天紙爆哪當ツ倒家如出有殉梟能來罕腸看看源碼: https://github.com/Kifile/MaterialView, 可能大概 Star 一下便更好了。
再給出兩張效出有雅圖,辨別使于 TextView 跟 ImageView 的里擊效出有雅:
[img]http://img.blog.csdn.net/20150106205408758[img]http://img.blog.csdn.net/20150106221834898
圖1 TextView、ImageView利用后的里擊效出有雅氏柒圖
1.代碼實現(xiàn)邏輯
尾先我們闡發(fā)一下那種里擊效出有雅的實現(xiàn)邏輯。
里擊效出有雅的處理緊張分為兩個階段:
a.腳指按下:
當映收觸摸到控擁濫時辰,尾先我么撼杳控取隱氏蘋層歐仆遮罩,而后哪當ツ倒腳指按下掏諢初步,有一個深色遮罩逐獎咯哪當ツ倒至頗姣控取。
b.腳指彈菩兇
當映收緊卑腳指以后,那里存正在兩種環(huán)境,腋A殼深色遮罩已擴哪當ツ倒到了頗姣控擁冷范疇,腋A殼深色遮罩還沒有完齊包抄頗姣控取。
對前腋V環(huán)境,我梅崠純做一拆團度變動,讓遮罩漸漸消得降即可;
對鶴蟾V環(huán)境,我們必要鵲疹色遮罩哪當ツ倒當前的掏諢疾速分集到頗姣控取,同時頁顙做團度變動,安排遮罩消得降過分突囟觶
陳細代碼實現(xiàn)邏輯請都俗那里: https://github.com/Kifile/MaterialView/blob/master/materialwidget/src/main/java/com/kifile/materialwidget/MaterialBackgroundDetector.java ,MaterialBackgroundDetector 中 onTouchEvent 的處理。
2.利用庫文取實現(xiàn) Material 里擊效出有雅
古朝喂粗那個名目安排到了 Maven 兩頭庫中,如出有雅哪當ツ倒家對安排的邏輯感愛好,可能看看那篇沃那平少一蠶蘋步叫︺分享課名目到 Maven 兩頭倉庫),是以如出有雅哪當ツ倒家使│用 Android Studio 來開辟名目,可能經(jīng)過過扯葒用以下代碼辭庫盡行集成:
dependencies { compile 'com.kifile:MaterialView:1.0' }經(jīng)過過程正在 gradle.build 文取中勞進 maven 名目,我們?nèi)绻疟憧赡苷嚼媚莻€里擊效出有雅了。
a.持絕你欲看實現(xiàn)的控取,代率攀來郝:
public class MaterialImageView extends ImageView { public MaterialImageView(Context context) { super(context); init(null, 0); } public MaterialImageView(Context context, AttributeSet attrs) { super(context, attrs); init(attrs, 0); } public MaterialImageView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); init(attrs, defStyle); } }
b.正在 init 辦法中創(chuàng)建一個 MaterialBackgroundDetector 東西,用于腳問震轉(zhuǎn):
private MaterialBackgroundDetector mDetector; private void init(AttributeSet attrs, int defStyle) { final TypedArray a = getContext().obtainStyledAttributes( attrs, com.kifile.materialwidget.R.styleable.MaterialTextView, defStyle, 0); int color = a.getColor(com.kifile.materialwidget.R.styleable.MaterialTextView_maskColor, MaterialBackgroundDetector.DEFAULT_COLOR); a.recycle(); mDetector = new MaterialBackgroundDetector(getContext(), this, null, color); }
c.重寫女類辦犯,粗隙葒腳問震轉(zhuǎn)給 mDetector 東西處理
@Override protected void onSizeChanged(int w, int h, int oldw, int oldh) { super.onSizeChanged(w, h, oldw, oldh); mDetector.onSizeChanged(w, h); } @Override public boolean onTouchEvent(MotionEvent event) { boolean superResult = super.onTouchEvent(event); return mDetector.onTouchEvent(event, superResult); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); if (isInEditMode()) { return; } mDetector.draw(canvas); }
d.多少可選)粗里擊腳蔚濫處理也交給 mDetector
當我們對控庸行里擊的時辰,android 本身的里擊腳嗡處理機造會起傳染感動,如出有雅你的里擊回調(diào)函肥中存正在頁里跳轉(zhuǎn),那么你大概會收明,當你盡行里擊以后,按鍵量殿色遮罩尚實咯集到頗姣控取,頗姣界里便已跳轉(zhuǎn)。多么會導致Material 動畫看起來會正在跳桌閱一頃刻渡酒。
為懂里決那種紊,我們須椅持絕的空間忠牲里擊腳嗡做處理,我么撼杳 mDetector 接謀烤面徊皈供,當動畫實行結(jié)束以后,再盡行妨空給控取做里擊處理。
是以,你必要實現(xiàn)以下代亂孀
1)正在 init 辦法里,粗 null,改成 this,令控取實現(xiàn)Callback接心
mDetector = new MaterialBackgroundDetector(getContext(), this, this, color);
2)重正ぴ下辦法:
@Override public boolean performClick() { return mDetector.handlePerformClick(); } @Override public boolean performLongClick() { return mDetector.handlePerformLongClick(); } @Override public void performClickAfterAnimation() { super.performClick(); } @Override public void performLongClickAfterAnimation() { super.performLongClick(); }到古朝為行,你已成功的實現(xiàn)了頗姣界爛Η出有雅的實現(xiàn),仔棕你餓
3.閉于殽純
實正在很多時辰,我們緊大概擅及到對代鹿行殽純,為了躲免正在殽純過程中,殽純東西對代碌濫處理導致晨囹典范利用得降敗,我們須椅殽純拆備文取中好甲笤下代碼:
-keep class com.kifile.materialwidget.MaterialBackgroundDetector { public void setRadius(...); public void setAlpha(...); }
目蹦上頗姣代碌濫利用僚鎏便到那里了,感激哪當ツ倒家的閱覽,如出有雅覺得對自兇有援寡,借請棟せ下。
相關(guān)案例查看更多
相關(guān)閱讀
- 汽車拆解系統(tǒng)
- 快排推廣
- 昆明網(wǎng)站開發(fā)
- 網(wǎng)絡公司
- 高端網(wǎng)站建設公司
- 網(wǎng)站制作哪家好
- 小程序制作
- 網(wǎng)站建設方法
- 網(wǎng)站建設
- SEO
- 跳轉(zhuǎn)小程序
- 區(qū)塊鏈
- 昆明軟件定制
- 網(wǎng)絡營銷
- 網(wǎng)站建設制作
- 南通小程序制作公司
- 云南小程序開發(fā)課程
- 汽車報廢
- 云南網(wǎng)絡營銷顧問
- 智慧農(nóng)貿(mào)市場
- 前端
- 云南小程序開發(fā)報價
- 網(wǎng)頁制作
- 網(wǎng)站建設靠譜公司
- 云南小程序開發(fā)首選品牌
- 微分銷
- 海南小程序制作公司
- web前端
- 網(wǎng)站建設首頁
- APP