Android----各種效果的3DViewPager效果(二)
公司專案中有如下效果的需求
我在網上找了好多文章,終於找到一篇實現的效果和這個效果一樣的,但是程式碼的篇幅同樣不短,也沒有去看具體的程式碼,只是copy過來用。現在我用上一篇介紹的知識點同樣可以實現這個效果,而且理解起來比較簡單,程式碼篇幅小,效果如下
我只是實現了主要的效果,具體細節的地方沒有做處理,比如無限輪播等地方,我只是提供一種思路,由需要的夥伴自己處理一下就好,也是比較容易的。全篇幅的程式碼我在上一篇已經貼出來了,這裡我只貼一下核心的程式碼和註釋
CoverFlowViewPager.java的程式碼如下
/** * 設定顯示的資料,進行一層封裝 * @param lists */ public void setViewList(List<View> lists){ if(lists==null){ return; } mViewList.clear(); for(View view:lists){ FrameLayout layout = new FrameLayout(getContext()); //設定縮放的倍數和透明度的倍數 layout.setScaleX(0.83f); layout.setScaleY(0.83f); layout.setAlpha(0.5f); //這裡設定位移,實現中間的pager蓋住兩邊pager的效果 layout.setTranslationX(mAdapter.dp2px(-60)); layout.addView(view); mViewList.add(layout); } // 重新整理資料 mAdapter.notifyDataSetChanged(); mViewList.get(0).bringToFront(); }
CoverFlowAdapter.java的程式碼如下
@Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { // 該方法回撥ViewPager 的滑動偏移量 if (mViewList.size() > 0 && position < mViewList.size()) { //這裡是中間pager所實現的效果,根據positionOffset進行縮放,位移,透明度動畫的設定 mViewList.get(position).setScaleX(1 - positionOffset * 0.17f); mViewList.get(position).setScaleY(1 - positionOffset * 0.17f); mViewList.get(position).setAlpha(1 - positionOffset * 0.5f); mViewList.get(position).setTranslationX(dp2px(60) * positionOffset); // position+1 為即將顯示的頁面,越來越大 if (position < mViewList.size() - 1) { //這裡是兩邊pager所實現的效果 mViewList.get(position + 1).setScaleX(0.83f + positionOffset * 0.17f); mViewList.get(position + 1).setScaleY(0.83f + positionOffset * 0.17f); mViewList.get(position + 1).setAlpha(0.5f + positionOffset * 0.5f); mViewList.get(position + 1).setTranslationX(dp2px(60) * (positionOffset - 1)); //下面的程式碼比較重要,如果不加如下程式碼,最上面的pager有時候並不是中間的pager,根據positionOffset進行左右滑動的判定,來決定那個pager此時應該在最上面 //bringToFront就是view在最上面的方法 if(positionOffset>=mPositionOffset) { if (positionOffset >= 0.7f) { mViewList.get(position + 1).bringToFront(); }else if(positionOffset==0&&position==0){ mViewList.get(position).bringToFront(); } }else{ if(positionOffset<=0.6f){ mViewList.get(position).bringToFront(); } } //這裡的程式碼可加可不加,這裡是從中間數第三個pager的動畫效果,如果螢幕只顯示三個頁,可以不設定,如果是五個頁可以設定,具體效果可以自己除錯 if (position < mViewList.size() - 2) { mViewList.get(position + 2).setScaleX(0.66f + positionOffset * 0.17f); mViewList.get(position + 2).setScaleY(0.66f + positionOffset * 0.17f); mViewList.get(position + 2).setTranslationX(dp2px(30) * (positionOffset - 1)); } } } mPositionOffset=positionOffset; }
mPositionOffset用來記錄每次滑動的postionOffset,用來和下次的positionOffset作比較,mPositionOffset大說明右滑動,反之左滑動。關於為什麼要做左右滑動的判斷,註釋中已作說明。
如有疑問可以加我QQ:954831816或留言
相關推薦
Android----各種效果的3DViewPager效果(二)
公司專案中有如下效果的需求 我在網上找了好多文章,終於找到一篇實現的效果和這個效果一樣的,但是程式碼的篇幅同樣不短,也沒有去看具體的程式碼,只是copy過來用。現在我用上一篇介紹的知識點同樣可以實現這個效果,而且理解起來比較簡單,程式碼篇幅小,效果如下 我只是實現了主要
Android項目實戰(二十):淺談ListView懸浮頭部展現效果
save Coding 布局 相同 mar state clas pla stat 原文:Android項目實戰(二十):淺談ListView懸浮頭部展現效果 先看下效果:需求是 滑動列表 ,其中一部分視圖(粉絲數,關註數這一部分)在滑動到頂端的時候不消失,而是停留在整個
Android用RecyclerView實現的二維Excel效果組件
eight main AS UC alt 包括 data github AD excelPanel 二維RecyclerView。不僅可以加載歷史數據,而且可以加載未來的數據。 包括在您的項目中 excelPanel 二維RecyclerView。不僅可以加載
Android 基於google Zxing實現二維碼 條形碼掃描,仿微信二維碼掃描效果
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
2014-11-6Android學習------Android 模擬翻頁效果實現--------貝塞爾曲線(二)
寫一篇文章很辛苦啊!!! 轉載請註明,聯絡請郵件[email protected] 我學習Android都是結合原始碼去學習,這樣比較直觀,非常清楚的看清效果,覺得很好,今天的學習原始碼是網上找的原始碼 百度搜就知道很多下載的地方 網上原始碼的名字叫:A
Android 基於google Zxing實現二維碼、條形碼掃描,仿微信二維碼掃描效果(現在正做個掃描App、收藏)
瞭解二維碼這個東西還是從微信中,當時微信推出二維碼掃描功能,自己感覺挺新穎的,從一張圖片中掃一下竟然能直接加好友,不可思議啊,那時候還不瞭解二維碼,呵呵,然後做專案的時候,老闆說要加上二維碼掃描功能,然後自己的屁顛屁顛的去百度,google啥的,發現很多朋友都
android 實現水波紋效果(二) 優化篇
在我的上一篇文章中,初步介紹了一下水波紋的實現,確實也實現了,剛開始我表示很滿意啊,但是後來看了一下系統的實現效果,我開始發現有點不對勁;來對比一下: 這是優化前的效果 這是優化後的效果 區別看不出來?仔細看一下,系統的實現效果是
Pro Android學習筆記(四二):Fragment(7):切換效果
利用fragment transaction進行切換,很方便提供切換的效果。 利用setTransition() 通過setTransition()我們可以設定有限幾個切換效果,程式碼如下: protected void addFragmentToStack(int index){
高仿仿微信介面二維碼掃描效果 之 Android 基於google Zxing實現二維碼、條形碼掃描
絕大多數android開發者都是使用google Zxing來實現二維碼、條形碼掃描,但官方和網上很多demo的掃描介面讓人不忍直視,今天我也做了一個,介面和執行效都是高仿微信最新版的掃描效果,執行效果圖如下: 主要是修改了ViewfindView類,我就不多解
Android中xml實現效果二:邊框效果
邊框效果是通過定義一個背景為xml檔案來實現的; #1 menu_border.xml 白色邊框效果,可修改color的值來改變邊框顏色; <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http:/
Android ScrollView回彈效果(二)
上一篇文章說了那個效果不怎麼好,現在實現方法稍微變一下: import android.content.Context; import android.os.Handler; import android.util.AttributeSet; import android.
Android進階:十二、最簡單的方式實現自定義陰影效果
clas new round war port scale dimens tro hdr 網話說UI設計有三寶 :透明,陰影,加圓角。很多UI在做設計的時候都喜歡做卡片形式,然後添加陰影。卡片UI確實挺好看,但是對Android開發者來說,顯示陰影卻並不那麽手到擒來,因為A
巧用Drawable 實現Android UI 元素間距效果
purple 固定 展示 .com otto 技巧 log contain dev 源文地址: 巧用Drawable 實現Android UI 元素間距效果 在大部分的移動UI或者Web UI都是基於網格概念而設計的。這種網格一般都是有一些對其的方塊組成,然後
在Android中實現陰影效果
sta 技術 wid 語言 mat floating 大表 ado sch 在Android L推出後,Google提出了全新的設計語言:材質設計。其中很重要的一點就是陰影效果的使用,你可以為每一個View設置一個elevation值,相當於除了x、y之外的z值,z值決定
android中實現毛筆效果(View 中畫圖)
方法 繪畫 object android中 validate 滑動 一個 lineto 效果 近期有一個項目設計一個APP實現通過觸摸屏實現毛筆寫字效果。傳統的繪畫板程序直接通過Path的moveTo和LineTo便可實現簡單的線條繪畫程序。然而要達到毛筆的筆鋒效果
Android自定義View效果目錄
class 重寫 自定義 textview 居中 url 冒泡 and 雷達圖 1、絢麗的loading動效的實現 2、Android自定義View:進度條+冒泡文本 3、Android雷達圖(蜘蛛網圖) 4、Android文本閃爍 5、Android繪制圓形進度條 6、重
Xamarin.android Activity動畫切換效果實現
omx over tails detail ons too ide xamarin Coding http://blog.csdn.net/esunshine1985/article/details/44302903 1.在Resources——values下新建sty
Android 輪播UI效果框架
Android 好用的框架與UI效果demo收集 1.萬能的公告欄輪播 View :BulletinView github https://github.com/Bakumon/BulletinView 2. RecyclerBanner 一個使用Rec
Android學習——Button填充效果加圓角
在drawable下新建資料夾tab_line.xml,如下: <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android">
android 圓 如圖效果
程式碼如下 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"