導航:首頁 > 操作系統 > android酷炫控制項

android酷炫控制項

發布時間:2023-02-14 05:25:29

Ⅰ 如何系統的學習android自定義各種酷炫控制項

首先,為什麼需要自定義View?

1. 現有的View滿足不了你的需求,也沒有辦法從已有控制項派生一個出來;界面元素需要自己繪制。
2. 現有View可以滿足要求,把它做成自定義View只是為了抽象:為這個自定義View提供若干方法,方便調用著操縱View。通常做法是派生一個已有View,或者結合xml文件直接inflate。

目前常用的基本上是第二種方式,這種方式非常簡單,與通常的View使用方法基本相同,但是作用卻異常強大,擁有了這一層抽象,代碼更加整潔也更容易維護,通過抽取自定義View的公共操作方法也減少了冗餘代碼,雖然簡單,但不可忽視。

大多數人感覺神秘的應該是第一種,自繪控制項,完全自定義;但其實這兩種方式歸根結底全部都是自繪;不信你去看看TextView的源碼。只不過通常情況下系統幫我們繪制好了一些控制項給開發者使用;OK,接下來就是一個問題。

在講述之前我還是啰嗦地重申一下,復用已有View是最最常用也最有效的自定義View方式,必須熟練使用。

其次,如何自定義View?

想一下,一個View給用戶最直觀的感知是什麼?靜止的形態和動態的操作。靜止的形態意思就是一個View呈現到用戶眼裡長成啥樣子?動態操作指的是,用戶與View之間可以有哪些交互?點擊滑動View的不同地方會有什麼反應?

1. 靜態

如果一個自定義View的樣式都沒有辦法繪制出來,那麼後續的交互就是空談了;我們一步步分解這個問題。

1.1 你的自定義View分為哪幾個部分?是所有的部分都需要手動繪制還是只有一部分——找出需要完全自定義的部分,其他的部分用已有View實現。

1.2 你的自定義View的每個部分長成什麼樣,佔用多大空間——結合理論知識View的measure過程,比如match_parent, wrap_content結合父View的laout_params參數最終測量大小是多少?

1.3 你的自定義View每個部分擺放在哪?相對位置如何?——View的layout過程。

1.4 你的自定義View那些完全需要手動繪制的部分是什麼樣,如何繪制?

你得學會操縱Canvas,學會2D繪圖,什麼?你跟我說3D,OpenGL?學會這些再說。

Ⅱ Android自定義控制項總結

每個view的坐標系原點為左上角那個點,水平方向為x軸,右正左負,豎直方向為y軸,下正上負。

canvas.drawColor //繪制區域塗上顏色(設置底色/蒙層)

canvas.drawCircle(float centerX(圓心X坐標),float centerY(圓心Y坐標),float radius(圓的半徑,單位像素),Paint paint)

canvas.drawBitmap

canvas.drawRect(float left,float top,float right,float bottom,Paint paint) //畫矩形

canvas.drawRect(RecF rect,Paint paint)

canvas.drawRect(Rect rect,Paint paint)

canvas.drawPoint(float x(點X軸坐標),float y(點Y軸坐標),Paint paint)//畫點

點的大小 ->paint.setStrokeWidth(width)

點的形狀 ->paint.setStrokeCap(cap)

ROUND(圓形),BUTT(平頭),SQUARE(方頭)

canvas.drawPoints()//批量畫點

canvas.drawOval(float left(左邊界點),float top(上邊界點),float right(右邊界點),float bottom(下邊界點),Paint paint) //畫橢圓

canvas.drawLine(float startX(起點X軸坐標),float startY(起點Y軸坐標),float stopX(終點X軸坐標),float stopY(終點X軸坐標),Paint paint) (setStyle對直線沒有影響)

canvas.drawLines(批量畫線)

canvas.drawRoundRect(float left,float top,float right,float bottom,float rx(圓角的橫向半徑),float ry(圓角的縱向坐標),Paint paint)//畫圓角矩形

canvas.drawRoundRect(RectF rect,float rx, float ry,Paint paint)

canvas.drawArc(float left, float top, float right, float bottom, float startAngle(起始角度,順時針為正,逆時針為負), float sweepAngle(弧形劃過角度), boolean useCenter(是否連接到圓心), Paint paint) //繪制弧形或扇形 根據弧形所在橢圓進行繪制

canvas.drawPath() //通過描述路徑的方式來繪制圖形

path.addXxx() —添加子圖形

path.addCircle(x,y,radius,dir(路徑方向:順時針/逆時針))

path.xxxTo —畫線

path.lineTo()

path.rLineTo()

path.close() —封閉當前圖形

path.setFillType(Path.FillType ft) //設置填充模式

canvas.drawBitmap(Bitmap bitmap,float left,float top,Paint paint);//畫bitmap

canvas.drawBitmap(Bitmap bitmap,Rect src,RectF dst,Paint paint)

canvas.drawBitmap(Bitmap bitmap,Rect src,Rect dst,Paint paint)

canvas.drawBitmap(Bitmap bitmap,Matrix matrix,Paint paint)

canvas.drawText(String text,float x(起點x坐標),float y(起點y坐標),Paint paint) //繪制文字

Paint.setStyle //設置繪制模式

FILL 填充模式(默認)

STROKE 畫線模式

FILL_AND_STROKE 既畫線又填充

Paint.setStrokeWidth //設置線條寬度 (僅在style:Stroke、FILL_AND_STROLE下有效)

Paint.setTextSize //設置文字大小

Paint.setAntiAlias //設置抗鋸齒開關

Paint.setTextSize(float textSize)//設置文字大小

Paint.setStrokeJoin(Paint.Join join) //設置拐角的形狀

MITER//尖角(默認)

BEVEL//平角

ROUND//圓角

Paint.setStokeMiter(float miter)//設置MITER型拐角的延長線的最大值

設置顏色

直接設置顏色

Paint.setColor(int color)

Paint.setARGB(int a,int r,int g,int b)

Paint.setShader(Shader shader) //設置shader

LinearGradient 線性漸變

RadialGradient 輻射漸變

SweepGradient 掃描漸變

BitmapShader 用bitmap的像素來作為圖形或文字的填充

ComposeShader 混合著色器,多個shader混合使用

Paint.setColorFilter(ColorFilter colorFilter) //設置顏色過濾

Paint.setXfermode(Xfermode xfermode) //以要繪制的內容為源圖像,以View中已有內容作為目標圖像,選取一個PorterDuff.Mode作為繪制內容的顏色處理方案。

色彩優化

Paint.setDither(boolean dither) //設置抖動來優化色彩深度降低時的繪制效果

Paint.setFilterBitmap(boolean filter) //設置雙線性過濾優化Bitmap放大繪制的效果

可以理解為 由馬賽克變成模糊狀態

Paint.setPathEffect(PathEffect effect)//使用PathEffect設置形狀的輪廓效果

CornerPathEffect//把所有的拐角變成圓角

DiscretePathEffect//把線條進行隨機的偏離

DashPathEffect//使用虛線

PathDashPathEffect//使用一個Path來繪制虛線

SumPathEffect//組合效果

ComposePathEffect//組合效果,組合有先後順序

Paint.setShadowLayer(float radius,float dx,float dy,int shadowColor)//添加陰影

Paint.setMaskFilter(MaskFilter maskfilter)//在繪制層上方的附加效果

BlurMaskFilter //模糊效果

new BlurMaskFilter(float radius(模糊范圍),BlurMaskFilter.Blur style(模糊類型))

EmbossMaskFilter//浮雕效果

new EmbossMaskFilter(float[] direction(光源的方向),float ambient(環境光強度),float specular(炫光系數),float blurRadius(光線范圍))

獲取繪制的Path

getFillPath(Path src,Path dst)//實際path

getTextPath(Stirng text,int start,int end,float x,float y,Path)/getTextPath(char[] text,int index,int count,float x,float y,Path path)//文字的path

drawTextOnPath()//沿一條Path來繪制文字

StaticLayout //繪制文字,支持換行

paint.setFakeBoldText(booleab fakeBoldText)//是否使用偽粗體

paint.setStrikeThruText()//是否加刪除線

paint.setUnderLineText(boolean underlineText)//是否加下劃線

paint.setTextSkewX(float skewX)//設置文字橫向錯切角度

paint.setTextScaleX(float scaleX)//設置文字橫向放縮

paint.setLetterSpacing(float letterSpacing)//設置字元間距,默認為0

paint.setTextAlign(Paint.Align align)//LEFT、CENTER、RIGHT默認為LEFT

paint.setTextLocale(Locale locale)/paint.setTextLocales(LocaleList locales) //設置繪制所用的地域

paint.setHinting(int mode)//是否啟用字體微調

測量文字尺寸類:

paint.getFontSpacing();//獲取推薦的行距

paint.getFontMetrics();//獲取point的FontMetrics

baseline:基準線

ascent/descent:普通字元的頂部和底部范圍

top/bottom:限制字型的頂部和底部

leading:行的額外間距,即上一行字的bottm與下一行字的top距離

paint.getTextBounds(String text(測量的文字),int start(文字的起始位置),int end(文字的結束位置),Rect bounds(文字顯示範圍的對象))//獲取文字的顯示範圍

paint.measureText(String text)//測量文字佔用的寬度

measureText()>getTextBounds()

paint.getTextWidths(String text,float[] widths)//獲取字元串中每個字元的寬度,並把結果填入參數widths

paint.breakText(String text((要測量的文字),boolean measureForwards(測量的方向),float maxWidth(寬度上限(超出上限會截斷文字)),float[] measuredWidth(用於接受數據))//測量完成後會把文字寬度賦給measureWidth[0]

paint.getRunAdvance(CharSequence text,int start(文字的起始坐標),int end(文字的結束坐標),int contextStart(上下文的起始坐標),int ContextEnd(上下文的結束坐標),boolean isRtl(文字的方向),int offset(字數的偏移))//計算某個字元處游標的x坐標

paint.getOffsetForAdvance(CharSequence text, int start, int end, int contextStart, int contextEnd, boolean isRtl, float advance)//計算出文字中最接近這個位置的字元偏移量

paint.hasGlyph(String s)//檢查指定的字元串是否是一個單獨的字型

canvas.clipRect()//范圍裁剪

canvas.clipPath()//根據范圍裁剪

canvas.translate(float dx,float dy)//位移

canvas.rotate(float degrees,float px,float py)//旋轉

canvas.scale(float sx(橫向縮放倍數),float sy(縱向縮放倍數),float px,float py)//縮放

canvas.skew(float sx(x軸的錯切系數),float sy(y軸的錯切系數))//錯切

canvas.setMatrix(matrix)//用Matrix直接替換Canvas當前的變換矩陣

canvas.concat(matrix)//用Canvas當前的變換矩陣和Matrix相乘

Camera.rotate*()//三維旋轉

1、super.draw()//總調度方法

2、super.onDraw()

3、dispatchDraw()//繪制子View的方法

繪制順序:

draw()總調度方法,view的繪制過程都發生在draw()方法里

1、背景(drawBackground()不能重寫)-------android:background:/View.setBackgroundXxx()

2、主體(onDraw())

3、子View(dispatchDraw())

4、滑動邊緣漸變和滑動條(onDrawForeground())-------android:scrollbarXxx/View.setXXXScrollBarXXX()

5、前景(onDrawForeground())-------android:foreground/View.setForeground()

view.animate().translationX()//x軸偏移

1、如果是自定義控制項,需要添加setter、getter方法

2、ObjectAnimator.ofXXX()創建ObjectAnimator對象

3、用start()方法執行動畫

setDuration(int ration)//設置動畫時長

setInterpolator(Interpolator interpolator)//設置插值器

ViewPropertyAnimator.setListener()/ObjectAnimator.addListener()

ViewPropertyAnimator.setUpdateListener()/ObjectAnimator.addUpdateListener()

ObjectAnimator.addPauseListener()

ViewPropertyAnimator.withStartAction/EndAction()

ArgbEvaluator//顏色漸變動畫

PropertyValuesHolder//同一個動畫中改變多個屬性

PropertyValuesHolders.ofKeyframe()//把同一個屬性拆分

AnimatorSet//多個動畫配合執行

targetSdkVersion>=14,硬體加速默認開啟

view.setLayerType()

LAYER_TYPE_SOFTWARE:使用軟體來繪制View Layer,繪制到Bitmap,並順便關閉硬體加速

LAYER_TYPE_HARDWARE:使用GPU來繪制View Layer,繪制到OpenGL texture(如果硬體加速關閉,那麼行為和LAYER_TYPE_SOFTWARE一致)

LAYER_TYPE_NONE:關閉View Layer

View Layer可以加速無invalidate()(例如動畫)時的刷新效率,但對於需要調用invalidate()的刷新無法加速

硬體加速並不支持所有的繪制操作

1、測量(measure)

View:View在onMeasuer中會計算自己的尺寸然後保存

ViewGroup:ViewGroup在onMeasure中會調用所有子View的measure讓它們進行自我測量,並根據子View

計算出的期望尺寸來計算他們的事跡尺寸和位置然後保存。

2、布局(layout)

View:無子View所以onLayout不做任何處理

ViewGroup:ViewGroup在onLayout中會調用自己所有子View的layout方法,把他們的尺寸、位置傳給他們, 讓他們完成自我布局。

MeasureSpec = mode + size :父類傳遞過來給當前View的一個建議值

MeasureSpec.getMode(int spec)//獲取模式

MeasureSpec.getSize(int spec)//獲取數值

限制分類:

UNSPECIFIED(不限制)

AT_MOST(限制上限)->wrap_content

EXACTLY(限制固定值)->match_parent/具體值

1、重寫onMeasure來修改已有的View尺寸

(1)、重寫onMeasure方法,調用super.onMeasure觸發原有的自我測量。

(2)、在super.onMeasure下用getMeasureWidth與getMeasureHeigh獲取之前測量的結果,使用自己的演算法計算新結果。

(3)、調用setMeasureDimension保存新結果。

2、重寫onMeasure來全新定製自定義View的尺寸

與1區別,保證計算的同時,保證結果滿足父View給出的尺寸限制

(1)重寫onMeasure,計算出View的尺寸

(2)使用resolve讓子View的計算結果符合父View的限制,也可不使用該方法自己定義

3、重寫onMeasure和onLayout來全新定製自定義ViewGroup的內部布局

兩個注意點:

子控制項間的margin值

1、重寫generateLayoutParams()和generateDefaultLayoutParams()

2、獲取margin值 MarginLayoutParams lp = (MarginLayoutParams )child.getLayoutParams()

子控制項間的padding值

1、測量後直接getPaddingLeft、getPaddingTop、getPaddingRight、getPaddingBottom

重寫onMeasure來計算內部布局

(1)調用每個子View的measure來計運算元View的尺寸

結合layout_xxx和自己可用空間

(2)計運算元View的位置並保存子View的尺寸和位置

(3)計算自己的尺寸並用setMeasureDimension保存

重寫onLayout來擺放子View

(1)調用每個子View的layout,讓他們保存自己的位置和尺寸

view工作原理

觸摸事件

1、ACTION_DOWN:手指剛接觸屏幕,按下去的那一瞬間

2、ACTION_MOVE:手指在屏幕上移動

3、ACTION_UP:手指從屏幕上松開的瞬間

事件序列:從ACTION_DOWN -> ACTION_UP

ViewGroup:
DispatchTouchEvent
• return true:表示該View內部消化掉了所有事件
• return false:表示事件在本層不再繼續進行分發,並交由上層控制項的onTouchEvent方法進行消費
• return super.dispatchTouchEvent(ev):默認事件將分發給本層的事件攔截onInterceptTouchEvent方法 進行處理
OnInterceptTouchEvent
• return true:表示將事件進行攔截,並將攔截到的事件交由本層控制項的onTouchEvent進行處理
• return false:表示不對事件進行攔截,事件得以成功分發到子View
• return super.onInterceptTouchEvent(ev):默認表示不攔截該事件,並將事件傳遞給下一層View的 dispatchTouchEvent
OnTouchEvent 默認false
• return true:表示onTouchEvent處理完事件後消費了此次事件
• return fasle:表示不響應事件,那麼該事件將會不斷向上層View的onTouchEvent方法傳遞,直到某個View的 onTouchEvent方法返回true
• return super.dispatchTouchEvent(ev):表示不響應事件,結果與return false一樣
子View不存在分發:
• DispatchTouchEvent 事件分發
• OnTouchEvent 默認true

如下圖為事件分發流程圖:

---------------------- 以上總結部分源自Hencoder教程 ------------------------------

Ⅲ 怎麼快速簡單的打造一個炫酷的ListView

View動畫的特殊使用場景,比如:

在ViewGroup中可以控制子元素的出場效果

在Activity中可以實現不同Activity之間的切換效果,

關於Activity切換這點,這篇帖子就不細說了無非就是overridePendingTransition的使用,本文主要要說的是LayoutAnimation

LayoutAnimatioon

LayoutAnimation作用於ViewGroup,為ViewGroup指定一個動畫,這樣他的子元素出場時都會具有這種動畫

LayoutAnimatioon中的屬性:

android:delay="0.5"
表示子元素開始動畫的延遲時間,比如子元素入場動畫的時間周期為300ms,那麼0.5表示每個子元素都需要延遲150ms才能播放入場動畫,也就是說:第一個子元素延遲150ms,第二個子元素延遲300ms。

android:animationOrder="normal"
表示元素動畫的順序,有三種選項分別是:
A:nromal--表示順序顯示
B:reverse--表示逆向顯示
C:random--表示隨機顯示

android:animation="@anim/anim_item"
為子元素指定具體的入場動畫

LayoutAnimatioon的使用遵循以下幾個步驟:

定義LayoutAnimation
<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"
android:animation="@anim/anim_item"
android:animationOrder="normal"
android:delay="0.5">
</layoutAnimation>

為子元素指定具體的入場動畫
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:ration="600"
android:interpolator="@android:anim/accelerate_interpolator"
android:shareInterpolator="true">
<alpha
android:fromAlpha="0"
android:toAlpha="1.0" />
<translate
android:fromXDelta="500"
android:toXDelta="0" />
</set>

為ViewGroup指定android:layoutAnimation屬性:
在xml布局文件中指定android:layoutAnimation屬性:
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#fff4f7f9"
android:cacheColorHint="#00000000"
android:divider="#dddbdb"
android:dividerHeight="1.0px"
android:layoutAnimation="@anim/layout_animation"
android:listSelector="@android:color/transparent"
/>
或者,可以在java代碼中通過LayoutAnimationController來指定:
ListView listview = (ListView) findViewById(R.id.listview);
Animation animation = AnimationUtils.loadAnimation(TestAnimActivity.this, R.anim.anim_item);
LayoutAnimationController controller = new LayoutAnimationController(animation);
controller.setDelay(0.5f);
controller.setOrder(LayoutAnimationController.ORDER_NORMAL);
listview.setLayoutAnimation(controller);

然後正常使用ViewGroup(比如ListView)即可

怎麼樣,如此簡單就能做出一個炫酷的ListView特效,so easy!

Ⅳ Android酷炫動畫是怎麼實現的

會定義控制項、動畫的最好,不會這些就網上找一些別人的三方框架!其實那些三方框架底層代碼也是通過自定義控制項、動畫去實現了,這個難度系數比較高,想要做好一款酷炫的動畫,需要對安卓底層源碼有清晰的認識。

Ⅳ 32個實用酷炫的Android開源UI框架

1.Side-Menu.Android

分類側滑菜單 , Yalantis 出品。

項目地址: https://github.com/Yalantis/Side-Menu.Android

2.Context-Menu.Android

可以方便快速集成漂亮帶有動畫效果的上下文菜單, Yalantis 出品。

項目地址: https://github.com/Yalantis/Context-Menu.Android

3.Pull-to-Refresh.Rentals-Android

提供一個簡單可以自定義的 下拉刷新 實現,Yalantis 出品。

項目地址: https://github.com/Yalantis/Pull-to-Refresh.Rentals-Android

4.Titanic

可以顯示水位上升下降的TextView

項目地址: https://github.com/RomainPiel/Titanic

5.AndroidSwipeLayout

滑動Layout ,支持單個View,ListView,GridView

項目地址: https://github.com/daimajia/AndroidSwipeLayout

Demo地址: Download Demo

6.Android Typeface Helper

可以幫你輕松實現自定義字體的庫

項目地址: https://github.com/norbsoft/android-typeface-helper

7.android-lockpattern

Android的圖案密碼解鎖

項目地址: https://code.google.com/p/android-lockpattern/

Demo地址: https://play.google.com/store/apps/details?id=group.pals.android.lib.ui.lockpattern.demo

文檔介紹: https://code.google.com/p/android-lockpattern/wiki/QuickUse

APP示例:Android開機的圖案密碼解鎖,支付寶的密碼解鎖

8.ToggleButton

狀態切換的 Button,類似 iOS,用 View 實現

項目地址: https://github.com/zcweng/ToggleButton

9.WilliamChart

繪制圖表的庫,支持LineChartView、BarChartView和StackBarChartView三中圖表類型,並且支持 Android 2.2及以上的系統。

項目地址: https://github.com/diogobernardino/WilliamChart

Demo地址: https://play.google.com/store/apps/details?id=com.db.williamchartdemo

Demo項目: https://github.com/diogobernardino/WilliamChart/tree/master/sample

10.實現滑動ViewPager漸變背景色

項目地址: https://github.com/TaurusXi/GuideBackgroundColorAnimation

11.Euclid

用戶簡歷界面, Yalantis 出品。

項目地址: https://github.com/Yalantis/Euclid

12. InstaMaterial

Instagram的一組Material 風格的概念設計

項目地址: https://github.com/frogermcs/InstaMaterial

13. SpringIndicator

使用bezier實現粘連效果的頁面指示

項目地址: https://github.com/chenupt/SpringIndicator

14. BezierDemo

仿qq消息氣泡拖拽 消失的效果。

項目地址: https://github.com/chenupt/BezierDemo

15. FoldableLayout

折疊的信紙被打開一樣的動畫效果

項目地址: https://github.com/alexvasilkov/FoldableLayout

16.Taurus

下拉刷新,Yalantis 出品。(是不是有點似曾相識呢?)

項目地址: https://github.com/Yalantis/Taurus

17. PersistentSearch

在點擊搜索的時候控制項在原有位置顯示輸入框。

項目地址: https://github.com/Quinny898/PersistentSearch

18. circular-progress-button

帶進度顯示的Button

項目地址: https://github.com/dmytrodanylyk/circular-progress-button

19. discrollview

當上下滾動的時候子元素會呈現不同動畫效果的scrollView,網頁上稱之為:視差滾動

項目地址: https://github.com/flavienlaurent/discrollview

20. sweet-alert-dialog

一個帶動畫效果的 自定義對話框樣式

項目地址: https://github.com/pedant/sweet-alert-dialog

21. android-floating-action-button

Material Desig風格的 浮動操作按鈕

項目地址: https://github.com/futuresimple/android-floating-action-button

22. android-collapse-calendar-view

可以在月視圖與周視圖之間切換的calendar控制項

項目地址: https://github.com/blazsolar/android-collapse-calendar-view

22. android-collapse-calendar-view

可以在月視圖與周視圖之間切換的calendar控制項

項目地址: https://github.com/blazsolar/android-collapse-calendar-view

23. NumberProgressBar

個簡約性感的數字進度條

項目地址: https://github.com/daimajia/NumberProgressBar

24. CircularProgressView

CircularProgressView 是通過自定義view的方式實現的Material風格的載入提示控制項,兼容任何版本。

項目地址: https://github.com/rahatarmanahmed/CircularProgressView

25. OriSim3D-Android

opengl 實現了各種折紙效果,模擬了從一張紙折疊成一條船的整個過程

項目地址: https://github.com/RemiKoutcherawy/OriSim3D-Android

26、萬能日歷控制項:CalendarView

GitHub: https://github.com/huanghaibin-dev/CalendarView

中文使用文檔: https://github.com/huanghaibin-dev/CalendarView/blob/master/QUESTION_ZH.md

27、大圖查看器: BigImage ImageView ViewPager

Github: https://github.com/SherlockGougou/BigImageViewPager

地址: https://www.jianshu.com/p/b15e65791c3f

支持超長圖、超大圖的圖片瀏覽器,優化內存,支持手勢放大、下拉關閉、查看原圖、載入百分比、保存圖片等功能。現已支持androidx。

28、安卓工具包androidUntilCode(安卓必備)

Github: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/README-CN.md

29、萬能適配器-BRAVH

官網: http://www.recyclerview.org

GitHub: https://github.com/CymChad/BaseRecyclerViewAdapterHelper

RecyclerView

作為Android最常用的控制項之一,是否常常為「她」操碎了心

BRVAH受益群體是所有Android開發者,希望更多開發者能夠一起來把這個項目做得更好幫助更多人

30、智能刷新控制項--SmartRefreshLayout

GitHub: https://github.com/scwang90/SmartRefreshLayout

中文: https://gitee.com/scwang90/SmartRefreshLayout

SmartRefreshLayout以打造一個強大,穩定,成熟的下拉刷新框架為目標,並集成各種的炫酷、多樣、實用、美觀的Header和Footer。 正如名字所說,SmartRefreshLayout是一個「聰明」或者「智能」的下拉刷新布局,由於它的「智能」,它不只是支持所有的View,還支持多層嵌套的視圖結構。 它繼承自ViewGroup 而不是FrameLayout或LinearLayout,提高了性能。 也吸取了現在流行的各種刷新布局的優點,包括谷歌官方的 SwipeRefreshLayout , 其他第三方的 Ultra-Pull-To-Refresh 、 TwinklingRefreshLayout 。 還集成了各種炫酷的 Header 和 Footer。

31、內存泄漏檢測工具--leakcanary

使用方式: https://www.jianshu.com/p/b83ddffcb3b5

LeakCanary是Square公司基於MAT開源的一個工具,用來檢測Android App中的內存泄露問題。官方地址: https://github.com/square/leakcanary

32、 1218683832 / AndroidSlidingUpPanel

SlidingUpPanelLayout:可以上下滑動的菜單布

https://github.com/1218683832/AndroidSlidingUpPanel

Ⅵ android有帶箭頭的按鈕控制項嗎

沒有自帶箭頭的按鈕,都是依靠圖片。可以做一個箭頭圖片,然後按鈕背景設置為這個圖片就行了。
步驟:
1、在drawable下放入箭頭圖片arrow.png(http://www.jitu5.com/vector/201403/362739.html)
2、按鈕設置android:background="@drawable/arrow"

Ⅶ 平常收藏的酷炫的Android開源特效庫

       現在github上面越來越多大神,開源了各種特效庫出來,真的很炫很贊呀,經常看到一些,收藏了不少,項目中總用得著的,統一記錄一下,嘖嘖嘖~作為我在上的第一篇文章,哇咔咔咔~很喜歡的UI,小清新,給人一種干凈舒服的感覺,哈哈。

1. AndroidViewAnimations   動畫效果,提供了各種類型的動畫效果

2. material-ripple   點擊波紋效果,讓指定View顯示Material Ripple 效果的控制項,適用於所有的view

3. MaterialEditText ​   Material Design風格的輸入框控制項,可以設置圖標,支持懸浮文字提示

4. MaterialViewPager    Material 風格的ViewPager庫

5. Android圓形進度按鈕,有時候項目中經常有一些圓形的按鈕啊,還要自己在drawable中寫個xml文件來給自己的按鈕設置背景,有了這個真的是方便很多耶

6. MaterialDateTimePicker    日期選擇器,Material風格,很漂亮,包括日歷選擇器和時間選擇器,很強大 

7. SCViewPager    引導頁,每個應用都有引導頁吧,很方便,很好用

8. AndroidImageSlider   Android的圖像滑塊 ​ ,一個多姿勢的輪播組件 

9. MaterialSearchView   非常漂亮的Material搜索視圖

10. material-dialogs

11. material-calendarview    日歷視圖

12. NiftyDialogEffects    高顏值的動畫效果的Dialog

13. Android-PickerView    仿iOS的PickerView控制項,有時間選擇和選項選擇並支持一二三級聯動效果

14. BottomNavigation    底部導航欄,很酷炫喲~

15. InfiniteCycleViewPager    一個有趣的ViewPager,超級酷炫

16. RecyclerViewCardGallery    RecyclerView實現Card Gallery效果,替代ViewPager方案。能夠快速滑動並最終定位到居中位置

17. WaveSideBar     一個效果非常酷炫的索引側邊欄

18. 3dTagCloudAndroid    一個完全基於Android ViewGroup編寫的控制項,支持將一組View展示為一個3D球形集合,並支持全方向滾動

19. AndroidTagView

20. VideoListPlayer 實現了在列表控制項(ListView, RecyclerView)中載入並播放視頻,並支持滑動時自動播放/暫停的功能, 利用該項目,可以輕松實現類似Instagram的視頻播放功能

21. EditTextFirework-Demo 一個絢麗易用的輸入框煙花效果,模仿網頁360搜索框

22. Android-SpinKit Android 載入動畫庫

閱讀全文

與android酷炫控制項相關的資料

熱點內容
centos開機命令行模式 瀏覽:695
遍歷所有listpython 瀏覽:660
力控加密文件夾 瀏覽:515
如何更改移動伺服器密碼 瀏覽:686
蘋果8p手機加密 瀏覽:749
ipad建文件夾怎麼弄 瀏覽:833
iphone13對wap3加密 瀏覽:555
pdf文件打開失敗 瀏覽:913
dubbo怎麼調用不同伺服器介面 瀏覽:40
全能解壓王app歷史版本 瀏覽:75
優先隊列與拓撲排序演算法 瀏覽:281
pdf轉換formacbook 瀏覽:871
pdf文件內容怎麼編輯 瀏覽:48
134壓縮機排氣溫度多少 瀏覽:256
unity等待編譯後 瀏覽:806
黑鯊手機鎖屏視頻在哪個文件夾 瀏覽:781
wow地圖解壓後怎麼壓縮 瀏覽:823
有pdf卻打不開 瀏覽:461
七星彩軟體app怎麼下載 瀏覽:219
32單片機的重映射哪裡改 瀏覽:817