下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
【移動應(yīng)用開發(fā)技術(shù)】android仿QQ個人主頁下拉回彈效果
先看效果:
效果不錯吧!進入主題之前,先了解ImageView的scaleType的center_crop,網(wǎng)絡(luò)上說的已經(jīng)很清楚了:以下抄自網(wǎng)絡(luò):1.Android:scaleType=”centerCrop”
以填滿整個ImageView為目的,將原圖的中心對準(zhǔn)ImageView的中心,等比例放大原圖,直到填滿ImageView為止(指的是ImageView的寬和高都要填滿),原圖超過ImageView的部分作裁剪處理。均衡的縮放圖像(保持圖像原始比例),使圖片的兩個坐標(biāo)(寬、高)都大于等于相應(yīng)的視圖坐標(biāo)(負(fù)的內(nèi)邊距)。圖像則位于視圖的中央。在XML中可以使用的語法:android:scaleType=”centerCrop”。不說廢話,直接進入主題?。∷悸?.先將topView的布局和listview平級,然后將topview以及topview包裹的imageView中傳listview,即一般是activity的layout
2.重寫listView的ontoucEvent()方法,但不做任何攔截,只在action時,控制imageView以及topView的高度,使其重新layout然后重新布局就可以了。
3.以上是大概思路,這里具體分析:當(dāng)action_down時記錄其初始位置,action_move時得到dy,通過dy來判斷是上啦還是下拉:
(1)dy>0,則是下拉,不斷重新設(shè)置topView和imageView的高度,又因為imageView的scaleType=center_crop,所以圖片會按照這個規(guī)則進行等比拉伸,當(dāng)?shù)竭_(dá)圖片最大時就會有不斷放大的過程
當(dāng)松開手或者手指移出屏幕外時(action_up|action_outside|action_cancel)時讓其回到初始位置,并伴著回彈過程,這里通過自定義動畫讓其具備回彈效果
(2)dy<0,則是上拉,上推的過程,由于topView和Imageview不具備滾動的效果,所以上推也是通過控制topView和ImageView的高度,并且當(dāng)TopVIew和ImageView滑出屏幕時就不在更改高度防止不斷的繪制,提高性能。
ok,大體思路就這樣。具體分析代碼如下:實現(xiàn):activity的xml
stretch_act.xml:
看看StretchListView:通過這個對外的方法,將topView以及ImageView的id傳進來分析:重新ListView的onTouchEvent():只是進行一些初始化操作:
1.startY:相對于屏幕頂部的高度
2.childAt0Top,獲取listview的第一個view的top距離、
3.ivInitHeight:獲取ImageView的初始高度,即剛進來時的高度
ACTION_MOVE:當(dāng)下拉時:主要條件如下:1.dy>0&&0==getFirstVisiblePosition()&&childAt0Top==
getChildAt(0).getTop()
意思是當(dāng)下拉時,并且listview的第一個位置顯示全了,才能下拉放大圖片,這是避免,listview已經(jīng)發(fā)生滾動了,需要回到初始位置才能下拉放大,否則會出現(xiàn),立即下拉放大,體驗不好
2.當(dāng)上拉時主要條件
if(translationY<=0&&currHeight>0)
currHeight>0:當(dāng)前ImageView的高度,如果已經(jīng)滾動到頂部或者超出,則不再進行滾動,防止已經(jīng)滾出屏幕不可視了,還在進行滾動。
translationY<=0:這個值是滾動的距離,這個距離不能超過ImageView的高度,由于上拉時dy是負(fù)值,所以要判斷是否小于0;其主要方法如下:
ACTION_UP:isChangedHeight:當(dāng)發(fā)生ImageView發(fā)生改變,并且是下拉時,這是松開手或者手指移出屏幕,則讓其回彈到初始位置;這里是通過自定義動畫來改變其變化的高度,達(dá)到回彈效果代碼如下其實主要是applyTransformation(floatinterpolatedTime,Transformationt)這個方法
主要是通過這個漸變因子interpolatedTime來控制,其值范圍是(0~1)所以計算漸變的高度如下
intdy=(int)((ivCurrHeight-ivInitHeight)*interpolatedTime);
然后一定要記得調(diào)用topView.requestLayout(),讓其重新布局繪制。這樣就完成了,所有代碼,也就一百行代碼左右,是不是很簡單。而且通過這個demo,可以很好的拓展到scrollview中。注意:
網(wǎng)上有些demo是通過overScrollBy()這個方法中搞事情,因為其自帶dy,還有一些其它的參數(shù),應(yīng)有盡有。但是由于android系統(tǒng)是
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 校長在迎國慶歌唱比賽上的總結(jié)發(fā)言
- 小學(xué)2025年度教學(xué)工作計劃
- 《小小營養(yǎng)師》課件大班健康活動
- 路基施工質(zhì)量控制措施
- 二零二五年度講師兼職與全職工作合同3篇
- 2024年深圳信息職業(yè)技術(shù)學(xué)院高職單招語文歷年參考題庫含答案解析
- 二零二五年度新型城鎮(zhèn)化建設(shè)項目裝飾勞務(wù)分包合同模板3篇
- 二零二五年度金融借貸履約擔(dān)保合同3篇
- 三節(jié)光譜法儀器與光學(xué)器件培訓(xùn)講學(xué)
- 2024年濟南工程職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測驗歷年參考題庫(頻考版)含答案解析
- 大學(xué)面試口頭自我介紹
- 廣告宣傳物料投標(biāo)方案(技術(shù)方案)
- 集合復(fù)習(xí)-章課件
- 策略家庭治療案例
- 數(shù)學(xué)優(yōu)生培養(yǎng)計劃與措施
- 消防控制室值班服務(wù)各項管理制度
- 三年級下冊口算天天100題(A4打印版)
- 在眼科護理中的病人安全管理
- 商業(yè)秘密保護指導(dǎo)意見宣傳培訓(xùn)方案書
- 《腫瘤流行病學(xué)》課件
- 采購缺乏計劃性的整改措施
評論
0/150
提交評論