Android View 仿iOS SwitchButton和各種效果集合
iOS SwitchButton。 說實話功能也不過就個開關功能而已。但是為什麼讓人感覺不錯,因為效果看起來賞心悅目呀:
~~~~~~~~~~~~~~~~~
好了,為了實現它,首先要分析它。
這個按鈕被我玩來玩去最後靜止的時候都會停留在下面的樣子:
那麼怎麼把這個實現出來呢?觀察一番會發現上圖是極其規律的,只是一些基礎幾何圖形的組合。所以具備純程式碼實現可能性,同時如果用圖片實現這個效果需要對應的png檔案輔助,相信大家一定覺得麻煩。
那麼就把它畫出來!如何畫出來的分析路線:
1. 位置固定不變的背景,像田徑場一樣的形狀。
2. 圓圓的按鈕,壓在“田徑場”上面。 【之後背景全稱作"田徑場",比較形象,不服solo 囧】
3. 淡淡的按鈕陰影,夾在他們之間。
ps:哎,我還是分析的那麼透徹,贊一個。
開始動手!新建
- public class SwitchView extends View {
- public SwitchView(Context context) {
- this(context, null);
-
}
- public SwitchView(Context context, AttributeSet attrs) {
- super(context, attrs);
- setLayerType(LAYER_TYPE_SOFTWARE, null);
- }
- }
- public class SwitchView extends View {
- public SwitchView(Context context) {
- this(context, null);
-
}
- public SwitchView(Context context, AttributeSet attrs) {
- super(context, attrs);
- setLayerType(LAYER_TYPE_SOFTWARE, null);
- }
- }
之後為自己確定大小~ 截圖量了一下 算上陰影寬高比例是 149:92 。即 height = width * 0.65 左右
- @Overrideprotectedvoid onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
- int widthSize = MeasureSpec.getSize(widthMeasureSpec);
- int heightSize = (int) (widthSize * 0.65f);
- setMeasuredDimension(widthSize, heightSize);
- }
- @Overrideprotectedvoid onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
- int widthSize = MeasureSpec.getSize(widthMeasureSpec);
- int heightSize = (int) (widthSize * 0.65f);
- setMeasuredDimension(widthSize, heightSize);
- }
- @Overrideprotectedvoid onDraw(Canvas canvas) {
- super.onDraw(canvas);
- canvas.drawColor(0xffcccccc);
- }
- @Overrideprotectedvoid onDraw(Canvas canvas) {
- super.onDraw(canvas);
- canvas.drawColor(0xffcccccc);
- }
ps: 如果我說,剩下的大家自己思考,你們不會打我吧。
第二步,畫田徑場!
- privatefinal Paint paint = new Paint();
- privatefinal Path sPath = new Path();
- privateint mWidth, mHeight;
- privatefloat sWidth, sHeight;
- privatefloat sLeft, sTop, sRight, sBottom;
- privatefloat sCenterX, sCenterY;
- @Overrideprotectedvoid onSizeChanged(int w, int h, int oldw, int oldh) {
- super.onSizeChanged(w, h, oldw, oldh);
- mWidth = w; // 檢視自身寬度
- mHeight = h; // 檢視自身高度
- sLeft = sTop = 0; // 田徑場 左和上的座標
- sRight = mWidth; // 田徑場 右佔自身的全部
- sBottom = mHeight * 0.8f; // 田徑場底部 佔全身的百分之八十, 下面預留百分之二十的空間畫按鈕陰影。
- sWidth = sRight - sLeft; // 田徑場的寬度
- sHeight = sBottom - sTop; // 田徑場的高度
- sCenterX = (sRight + sLeft) / 2; // 田徑場的X軸中心座標
- sCenterY = (sBottom + sTop) / 2; // 田徑場的Y軸中心座標
- RectF sRectF = new RectF(sLeft, sTop, sBottom, sBottom);
- sPath.arcTo(sRectF, 90, 180);
- sRectF.left = sRight - sBottom;
- sRectF.right = sRight;
- sPath.arcTo(sRectF, 270, 180);
- sPath.close(); // path準備田徑場的路徑
- }
- @Overrideprotectedvoid onDraw(Canvas canvas) {
- super.onDraw(canvas);
- paint.setAntiAlias(true);
- paint.setStyle(Style.FILL);
- paint.setColor(0xffcccccc);
- canvas.drawPath(sPath, paint); // 畫出田徑場
- paint.reset();
- }
- privatefinal Paint paint = new Paint();
- privatefinal Path sPath = new Path();
- privateint mWidth, mHeight;
- privatefloat sWidth, sHeight;
- privatefloat sLeft, sTop, sRight, sBottom;
- privatefloat sCenterX, sCenterY;
- @Overrideprotectedvoid onSizeChanged(int w, int h, int oldw, int oldh) {
- super.onSizeChanged(w, h, oldw, oldh);
- mWidth = w; // 檢視自身寬度
- mHeight = h; // 檢視自身高度
- sLeft = sTop = 0; // 田徑場 左和上的座標
- sRight = mWidth; // 田徑場 右佔自身的全部
- sBottom = mHeight * 0.8f; // 田徑場底部 佔全身的百分之八十, 下面預留百分之二十的空間畫按鈕陰影。
- sWidth = sRight - sLeft; // 田徑場的寬度
- sHeight = sBottom - sTop; // 田徑場的高度
- sCenterX = (sRight + sLeft) / 2; // 田徑場的X軸中心座標
- sCenterY = (sBottom + sTop) / 2; // 田徑場的Y軸中心座標
- RectF sRectF = new RectF(sLeft, sTop, sBottom, sBottom);
- sPath.arcTo(sRectF, 90, 180);
- sRectF.left = sRight - sBottom;
- sRectF.right = sRight;
-
相關推薦
Android View 仿iOS SwitchButton和各種效果集合
自學android差不多有一年了,從最初的小白菜鳥,摸爬滾打,看大神們的部落格,android官網的api,某網站的視訊教學,github開源專案。奮鬥這麼久隱隱感覺自己可以脫離新手的身份了,交出這篇文章權當作andriod小學水準的畢業典禮。 iOS Switch
android ListView 仿IOS 回彈效果
最近看IOS的下拉效果感覺很不錯,當拉倒最上面和最下面的時候繼續拉動會有緩衝,想在android裡面也做一個,到網上到處找,沒有找到好的方法,據說android新的API對ListView有這樣的支援,感覺不是特別好用。 自己利用scroller實現了一下,廢話不多說了直接
android仿IOS頁面回彈效果
碼農同學們做過手機開發的相比一定對ios平臺頁面的上下回彈效果印象深刻,特別是android開發對此是各種嫉妒羨慕恨啊,在特效方面蘋果做的很好,做了很多,當然谷歌也不差,神馬特效咱們都能做出來,因為android開放更多,移植性也更好,so..我特麼手賤自己寫了一個上下拉動
前端 html h5 移動端 手機端 仿ios左滑刪除效果
es2017 b- open translate def sna 技術 9.png replace 實現功能:左滑列表項(<li class="route-item" ></li>),出現刪除按鈕(<div class="removeJs"&
Android View 的工作流程和原理
生成 它的 isl canvas mask lis mat cep 少見 參考資料 << Android 開發藝術探索 >> 前言 在日常開發中,我們每天都在和各種 View 打交道,比如TextView,Button等,我們直接拿過來就可以使用
[譯]Android view 測量布局和繪制的流程
註意 images draw can www -i str 中一 opengl-es 原文鏈接 創造優秀的用戶體驗是我們開發者的主要目標之一.為此, 我們首先要了解系統是如何工作的, 這樣我們才可以更好的與系統配合, 從它的優點中獲益, 規避它的缺陷.
高仿ios SwitchButton----(自認為仿的還不錯)
這篇文章來介紹這兩天的成果,android自帶的switchbutton太難看了,於是照著ios的switchbutton做了一個高仿的自定義switchbutton,目前還不是很完美,程式碼也還比較亂,但還是分享出來,望大家指教! 先看效果圖(不知道怎麼搞gif圖片,就先
【Android】仿IOS的滑動按鈕
專案結構 MainActivity public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedIns
仿IOS的地區選擇效果
,練習了一下地區選擇器。首先非常感謝這位童鞋的無私分享!之所以重新動手練習下,是因為該開源專案裡面沒有完整的json資料串,我從網上找了一份二級地區的json,我的專案地址為:https://github.com/xyzlf/AreaSelector 效果圖:
Android實現仿qq側邊欄效果
public class MenuActivity extends FragmentActivity implements View.OnClickListener{ private ResideMenu resideMenu; private MenuActivity mContext;
android 高仿IOS水滴版上下拉重新整理的Listview
之前有分享一些重新整理的Demo,最近找到一個重新整理的例子,分享給大家。同時感謝原作者的分享! 現在給大家分享一個高仿IOS的Listview重新整理效果,支援上下拉重新
各種效果集合
1. 美團Android自動化之旅-生成渠道包:http://tech.meituan.com/mt-apk-packaging.html 1.1新一代Android渠道打包工具:1000個渠道包只需要5秒:http://www.finalshares.com/read-6735?f=
【Android開發】安卓炫酷效果集合
1. android-ripple-background 能產生波浪效果的背景圖片控制元件,可以自定義顏色,波浪擴充套件的速度,波浪的圈數。 github地址 2. android-shapeLoadingView-master 高仿新版58 載入動畫 github地址 3. Arr
【Android】Android開發實現帶有反彈效果,仿IOS反彈scrollview詳解教程
作者:程式設計師小冰,GitHub主頁:https://github.com/QQ986945193 新浪微博:http://weibo.com/mcxiaobing 首先給大家看一下我們今天這個最終實現的效果圖: 這個是ios中的反彈效果。當然我
Android 實現高仿iOS桌面效果之可拖動的GridView(上)
最近專案中遇到一個LIstview的拖動效果,github上一搜發現有叫DragListview的開源專案,然後自己再小手一搜拖動排序的GridView,卻沒發現什麼很全很好的開源專案,後
Android仿ios底部彈出框效果
準備: public class ActionSheet { public interface OnActionSheetSelected { void onClick(int whichButton); } private ActionShee
Android自定義載入等待Dialog彈窗控制元件(仿ios效果實現)
效果圖 使用說明 1、專案下的build.gradle新增 allprojects { repositories { ... maven { url 'https://www.ji
實現自定義view(2):仿Android QQ多螢幕顯示ListView的效果
本文在《仿 UC,墨跡天氣左右拖動 多螢幕顯示效果》的基礎上對程式碼進行修改,模仿Android QQ主介面的分屏ListView滑動效果。 當進行橫向滑動時,會切換螢幕,當縱向滑動時,ListView會滾動。 效果圖如下: 程式碼如下: FlingGallery.
Android自定義View-仿華為手機管家病毒查殺類似於雷達掃描動畫效果
最近在使用華為手機管家病毒查殺時有一個類似雷達掃描的動畫,發現該動畫旋轉軸未對準圓心,如下圖: 這樣不仔細看,看不出來,咱們放大看一下,放大後如下: 現在我們可以清楚看到這個問題,於是想自己實現一把,好了,為了便於理解,這裡就按照動畫所見內容依次展開來說。 先簡單的分析一
android 仿 ios 搜尋介面跳轉效果
最新寫專案的時候,看到搜尋介面的跳轉基本都是點選搜尋然後跳轉到下個頁面,android 微信上則是 類似toolbar的效果,而ios 上則是一個搜尋框上移然後顯示新介面的一個效果。仔細研究了下發現和android 的 共享元素的過渡實現 的效果很像,所以在此模