Android自定義控件打造絢麗平行空間引導(dǎo)頁(yè)
本文實(shí)例為大家分享了Android自定義控件打造平行空間引導(dǎo)頁(yè)的具體代碼,供大家參考,具體內(nèi)容如下
先上圖,動(dòng)圖太大傳不上來(lái),在項(xiàng)目中有動(dòng)圖

首先解釋下工程的主要部分。
首先谷歌的百分比布局做了部分修改,因?yàn)槲以O(shè)置的寬高都是相對(duì)于屏幕的寬度,而谷歌的百分比布局不能實(shí)現(xiàn),只需要修改一部分代碼就可以實(shí)現(xiàn)。下面貼出修改的部分代碼
public static class PercentLayoutInfo
{
private enum BASEMODE
{
BASE_WIDTH, BASE_HEIGHT, BASE_SCREEN_WIDTH, BASE_SCREEN_HEIGHT;
/**
* width_parent
*/
public static final String PERCENT = "%";
/**
* width_parent
*/
public static final String W = "w";
/**
* height_parent
*/
public static final String H = "h";
/**
* width_screen
*/
public static final String SW = "sw";
/**
* height_screen
*/
public static final String SH = "sh";
}
..............
首先我修改了寬高標(biāo)識(shí)的基類(lèi),增加了一些識(shí)別字段,當(dāng)然僅增加這些還不能實(shí)現(xiàn),還要在識(shí)別字段后返回相應(yīng)的標(biāo)準(zhǔn)
PercentLayoutInfo.PercentVal percentVal = new PercentLayoutInfo.PercentVal();
percentVal.percent = percent;
if (percentStr.endsWith(PercentLayoutInfo.BASEMODE.SW))
{
percentVal.basemode = PercentLayoutInfo.BASEMODE.BASE_SCREEN_WIDTH;
} else if (percentStr.endsWith(PercentLayoutInfo.BASEMODE.SH))
{
percentVal.basemode = PercentLayoutInfo.BASEMODE.BASE_SCREEN_HEIGHT;
} else if (percentStr.endsWith(PercentLayoutInfo.BASEMODE.PERCENT))
{
if (isOnWidth)
{
percentVal.basemode = PercentLayoutInfo.BASEMODE.BASE_WIDTH;
} else
{
percentVal.basemode = PercentLayoutInfo.BASEMODE.BASE_HEIGHT;
}
} else if (percentStr.endsWith(PercentLayoutInfo.BASEMODE.W))
{
percentVal.basemode = PercentLayoutInfo.BASEMODE.BASE_WIDTH;
} else if (percentStr.endsWith(PercentLayoutInfo.BASEMODE.H))
{
percentVal.basemode = PercentLayoutInfo.BASEMODE.BASE_HEIGHT;
} else
{
throw new IllegalArgumentException("the " + percentStr + " must be endWith [%|w|h|sw|sh]");
}
return percentVal;
}
這兩段代碼就能幫助我們實(shí)現(xiàn)設(shè)置寬高可以相對(duì)于屏幕的寬和高,代碼不太復(fù)雜,后面會(huì)貼出項(xiàng)目的完整代碼。
工程中使用了transformPage(View view,float position)首先我介紹一下這個(gè)函數(shù),這個(gè)函數(shù)在布局滑動(dòng)時(shí)會(huì)觸發(fā)這個(gè)函數(shù),position代表每個(gè)viewpager中每個(gè)view布局距離屏幕左邊的距離,setOffScreenPageLimit(int number)可以設(shè)置viewpage緩沖頁(yè)面,當(dāng)前頁(yè)面左右兩邊能緩沖幾個(gè)頁(yè)面,比如number=2,代表當(dāng)前頁(yè)面左右兩邊最多可以緩沖兩個(gè),這個(gè)number數(shù)量和transformPage中的view有聯(lián)系。
首先看一張圖

每次移動(dòng)view都會(huì)調(diào)用transform這個(gè)函數(shù),id0,1,2代表三個(gè)頁(yè)面,position代表三個(gè)頁(yè)面距離屏幕左邊的距離。
其他的也就是用一些屬性動(dòng)畫(huà),背景顏色的漸變用了插值器,看完代碼就會(huì)明白
項(xiàng)目地址
有不懂的可以隨時(shí)提問(wèn)
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Android實(shí)現(xiàn)過(guò)渡動(dòng)畫(huà)、引導(dǎo)頁(yè) Android判斷是否第一次啟動(dòng)App
- Android使用ViewPager實(shí)現(xiàn)啟動(dòng)引導(dǎo)頁(yè)
- Android開(kāi)發(fā)實(shí)戰(zhàn)之漂亮的ViewPager引導(dǎo)頁(yè)
- Android開(kāi)發(fā)實(shí)現(xiàn)的ViewPager引導(dǎo)頁(yè)功能(動(dòng)態(tài)加載指示器)詳解
- Android控件ViewPager實(shí)現(xiàn)帶有動(dòng)畫(huà)的引導(dǎo)頁(yè)
- Android引導(dǎo)頁(yè)面的簡(jiǎn)單實(shí)現(xiàn)
- Android實(shí)現(xiàn)繞球心旋轉(zhuǎn)的引導(dǎo)頁(yè)效果
- Android實(shí)現(xiàn)漸變啟動(dòng)頁(yè)和帶有指示器的引導(dǎo)頁(yè)
- RxJava兩步打造華麗的Android引導(dǎo)頁(yè)
- Android簡(jiǎn)單實(shí)現(xiàn)引導(dǎo)頁(yè)
相關(guān)文章
Android UI體驗(yàn)之全屏沉浸式透明狀態(tài)欄樣式
這篇文章主要介紹了Android UI體驗(yàn)之全屏沉浸式透明狀態(tài)欄效果的相關(guān)資料,需要的朋友可以參考下2017-01-01
Android實(shí)現(xiàn)手勢(shì)滑動(dòng)多點(diǎn)觸摸縮放平移圖片效果
這篇文章主要介紹了Android實(shí)現(xiàn)手勢(shì)滑動(dòng)多點(diǎn)觸摸縮放平移圖片效果,實(shí)現(xiàn)圖片支持多點(diǎn)觸控,自由的進(jìn)行縮放、平移的注意事項(xiàng),感興趣的小伙伴們可以參考一下2016-02-02
Android實(shí)現(xiàn)單選與多選對(duì)話(huà)框的代碼
這篇文章主要介紹了Android實(shí)現(xiàn)單選與多選對(duì)話(huà)框的代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-01-01
替換so文件來(lái)動(dòng)態(tài)替換Flutter代碼實(shí)現(xiàn)詳解
這篇文章主要為大家介紹了替換so文件來(lái)動(dòng)態(tài)替換Flutter代碼實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01
Android開(kāi)發(fā) 旋轉(zhuǎn)屏幕導(dǎo)致Activity重建解決方法
Android開(kāi)發(fā)文檔上專(zhuān)門(mén)有一小節(jié)解釋這個(gè)問(wèn)題。簡(jiǎn)單來(lái)說(shuō),Activity是負(fù)責(zé)與用戶(hù)交互的最主要機(jī)制,接下來(lái)為您詳細(xì)介紹2012-11-11
Android 解決監(jiān)聽(tīng)home鍵的幾種方法
Android Dialog仿ios9中UIAlertController控件

