1. 程式人生 > >Android----各種效果的3DViewPager效果(二)

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"