android仿支付寶界面
㈠ Android自定義View - 仿支付寶月賬單折線圖
支付寶有個查看月賬單的功能,最近一直在學習自定義View,於是就嘗試著自己實現了一個類似的折線圖。
下面是支付寶消費分析功能截圖和自己實現的折線效果截圖:
在繪制折線圖之前首先要分析折線圖需要繪制哪些部分以及如何繪制這些部分,確定了各繪制部分及繪制方法之後再開始具體的繪制。
將折線圖分為四個繪制區域:
現在已經知道了折線需要繪制哪些部分以及各部分的繪制方法,接下來要做的就是確定繪制折線各部分所需要的點的坐標。
從下面繪制分析圖可以直觀地看到月份文字中間點x坐標,數據點x坐標,數據點處圓的圓心x坐標以及消費金額文字中間點x坐標的值是相同的,所以只需要確定數據點的x坐標就行了。
觀察支付寶的折線圖可以看到第一個數據點距離屏幕左側和最後一個數據點距離屏幕右側的寬度是相等的,我們將這個寬度定義為基準寬度mBaseWidth。
將相鄰兩個數據點之間的寬度定義為mItemWidth,仔細觀察可以看出這個寬度大概為 3*mBaseWidth,因為折線圖固定顯示5個月份的數據,所以mBaseWidth值就確定了:
得到mBaseWidth值後各個數據點的x坐標也就確定了:
從支付寶折線圖上可以看到月份的y坐標是固定的,數據點的y坐標是通過消費金額確定的,圓心y坐標和消費金額文字y坐標都依賴於數據點的y坐標。
下面我們就來分別確定月份的y坐標和數據點的y坐標。在繪制分析圖中定義了幾個參考變數,各變數的含義如下:
從繪制分析圖可以看到月份的y坐標范圍在區間 [3/4*mHeight, mHeight] 之間,只要以 3/4*mHeight 為基準值加上一個偏移量就可得到月份的y軸坐標,那麼如何確定這個偏移量的大小呢?
首先通過下面的方法計算月份文字的高度:
計算出文字高度後選取 fontHeight * 3 / 2 作為偏移量,讓月份文字的頂部距離 3/4*mWidth 基準線的高度剛好為 fontHeight。這個偏移量的值不是固定的,如果對最後繪制效果不滿意,可以調整該值到自己滿意的效果。
依然先定義一些控制參數:
先說數據點y坐標的確定方法,接下來再給出分析:
從計算公式可以看出數據點y坐標是通過mMaxLineHeight減去一個偏移量得到的,只需要確定偏移量的計算方法就可以了。
首先計算出當前月消費金額和最低消費金額的差值,然後用這個差值除以消費金額的極差mBillRange得到一個比例值,再用這個比例值去乘以mMaxLineSpace就是偏移值,然後用mMaxLineHeight減去偏移值就是數據點的y軸坐標。
數據點y坐標確定之後其它幾個點的坐標也就確定了。圓心的y坐標就是數據點y坐標,消費金額文字y坐標通過數據點y坐標減去消費金額文字的 fontHeight * 3 / 2得到。
上面得到的僅僅是在賬單金額已經出來情況下數據點的y坐標,那麼月份的消費金額數還沒出來時數據點y坐標該如何確定呢?因為只是為了演示效果,所以我採用下面的計算方法來得到未出賬單月份的數據點y坐標。
確定繪制點的坐標之後,剩下的就是一些需要注意的細節,比如已出賬單月份數據點處的圓是實心的,未出賬單月份數據點處的圓是空心的。還有數據點之間的連線有虛線和實線之分,實線的顏色也有不同,繪制的時候注意這些細節就可以了。
順帶介紹一下Android中虛線繪制是通過設置畫筆的路徑效果來實現的:
關於DashPathEffect可以參考我的另一篇文章 Android PathEffect - DashPathEffect 了解一下。
折線圖的目的是學習繪制自定義View,跟支付寶的實際邏輯肯定是完全不同的。另外目前項目並沒有並沒有在onMeasure進行特殊的繪制處理,等以後再優化改進。
項目地址: https://github.com/IvanRich/MonthBill
2017-06-20 增加onMeasure測量過程的處理 diff
㈡ 這8款Android桌面小部件,能讓你的Android好用很多倍
安卓手機一直以來以其可玩性高而受到歡迎,即使是簡單的桌面小部件,也有人能玩出花來。強大如 Zooper Widget 和 KWGT 等復雜且定製性極強的美化類桌面插件應用,抑或是朴實無華但又必不可少的時間和天氣小部件,桌面小部件實實在在地佔據著每一部安卓手機桌面的一部分。
手機畢竟是拿來用的,對於大部人來說,是否實用、美觀和方便才是考量一個小部件能否在桌面上生存的必要條件。本文就旨在介紹一些值得我們放置在桌面的應用小部件。
這些小部件更實用
Another Widget
自 Pixel Launcher 推出以後,簡潔實用的 At A Glance 桌面插件便成為了諸多安卓用戶心頭的一顆硃砂痣,奈何高貴的 Pixel 用戶專屬這一限制使得我等只得望洋興嘆。好在,萬能的 XDA 大神們動手破除了 Pixel Launcher 的諸多限制,使得更多人得以享用這一特性。但是面對更改圖標困難、界面相對簡陋的 Pixel Launcher ,廣大人民群眾日益增長的對於高自定義的需求和現有的不足之間的矛盾日益凸顯。 Another Widget 的出現便很好地解決了這一矛盾:
Another Widget 的設置界面
Another Widget 是一款像素級模仿 At A Glance 這一特性的桌面小部件,對比 At A Glance ,它還有如下優點:支持更換字體顏色,可自定義顯示的日歷,設置即將到來的事件最早何時可以顯示在桌面,還可以切換天氣源。
顯示效果
Google Calender 的日程列表
Google Calendar 的小部件有兩種,一種為月視圖,另一種為日程列表。相比於月視圖,將日程列表放置在桌面更能幫助我們了解接下來的日程,起到良好的提醒作用。
Google Calender 日程列表
倒計時類
每個人的人生中總有些特殊而重要的時刻值得我們銘記和回顧,這個時候,把它們放置在桌面就顯得很有必要。放置重要考試的倒計時能讓我們每次看到桌面都「膽戰心驚」,提醒我們滾去學習;同樣也可以放置親人或男/女朋友的生日倒計時乃至你們共同度過了多久的甜蜜歲月。萬一被男/女朋友「不小心」看到沒准還會被誇很有心。
我們可以使用「何時」、「倒數日」、「Hurry」等應用來添加倒計時小部件到桌面。
單事件效果對比
幫你更快地觸發所需功能的小部件
iOS 於 2015 年宣布了 3D Touch 這一特性,旨在提高手機操作效率,幫助用戶更快地從桌面進入所需功能。一年後,谷歌也推出了 Shortcuts 這一特性,其一度被看作是安卓版的 3D Touch 功能。不過不同於 3D Touch 對於手機硬體的硬性需要, Shortcuts 則只需要系統(Android 7.1 及以上)和應用支持,門檻低上了不少(安裝 Nova Launcher 等第三方桌面更是可以讓低安卓版本也享受這一特性)。
App Shortcuts
事實上,無論是 3D Touch 還是 App Shortcuts ,用戶的實際利用率一直不高,一是因為每個應用長按調出的菜單功能不一樣,記憶難度大;二是因為用戶難以形成習慣。更不必說,許多國產定製 UI 直接閹割掉了這一功能。當然,我們還是可以盡可能地把這一特性利用起來,使之服務於我們。谷歌允許用戶將 Shortcuts 中的某一項通過拖拽固定在桌面,這為用戶提供了不少方便。那麼哪些快捷方式值得我們單獨將其放置在寸土寸金的桌面上呢?
支付寶「掃一掃」和「付款碼」等小部件
移動支付的燎原之火早已燒遍全國,連門口賣雞蛋灌餅的大爺都知道讓你掃他的紅包碼了。掃碼已經變成了手機攝像頭所承擔的重要功能之一,把「掃一掃」的小部件放在桌面,我們便無需再靠著一指禪點點點,只需一步,就能瀟灑地付款走人。同樣,「付款碼」小部件放置在桌面也能在一定程度上減少操作。每次在超市排隊的時候,看到大爺大媽們手忙腳亂地找付款碼,都不禁感嘆,所謂的科技進步帶來的便捷究竟何時才能被所有人共享。
支付寶掃一掃
在這里不得不批評一下「生活方式應用」某信了,時至今日安卓版的微信也不支持 Shortcuts ,落後支付寶不是一點半點,是半年啊。想要快速打開微信掃一掃或者付款碼我們只能等待官方支持了,當然了,MIUI 等國產系統的負一屏支持快速打開這些活動。對於原生或類原生系統的用戶來說,現有方式均需要獲取 root 許可權,考慮到安全性,在此不做推薦。
蝦米的「每日播放 30 首」和網易雲的「私人 FM」
如果只是想要聽歌,為了躲開漫長的開屏廣告,我們可以把相應的快捷方式放置於桌面。這樣只需一鍵便可開始暢享音樂。
通過常規方式打開:
常規方式打開
通過快捷方式打開:
快捷方式打開
同樣實用的還有一閃的「相機」快捷方式,手機默認設置的「電池使用情況」快捷方式,適合更新強迫症的 Play Store 的「我的應用」快捷方式等等。我們可以根據自己使用某一功能的頻率來決定是否需要放置相應的小部件,對於一些使用率不高的功能,我們通過長按圖標調出即可。
值得一試的快捷方式
為了好玩,沒卵用也要放的小部件
有些時候,為了好玩和個性,許多人會花費大量時間來美化桌面。這種行為我認為屬於個人的愛好,尊重即可。不過,如果你只是想要小小地折騰一下,這里也推薦一款好玩的應用:會話微件。
會話微件支持在桌面放置「對話」、「單句」和「卡片」,甚至支持和同樣使用這一應用的人在桌面上「聊天」。我們可以利用會話微件放置自己喜歡的歌詞或名言,還能夠查看天氣甚至查詢物流情況,根據會話微件的教程,我們能夠做出各種效果的桌面小部件。具體實用與否還要由你來定奪。
㈢ android仿支付寶銀行卡重疊功能
安卓仿支付寶銀行卡沒有重疊功能的。
安卓仿支付寶銀行卡不是各手機銀行疊加,而是與各家行APP相互補充、互相導流。
在新版APP上,消費者可以綁定和管理各類銀行賬戶,將銀聯和各大銀行的支付工具、支付場景及特色服務集中在一起。