導航:首頁 > 操作系統 > androidcenterx

androidcenterx

發布時間:2023-01-25 08:58:15

1. android關於shape的gradient屬性詳解

<gradient>
shape的顏色漸變屬性
attributes:
Integer, 代表漸變顏色的角度, 0 is left to right, 90 is bottom to top. 必須是45的整數倍.
默認是 0.該屬性只有在type=linear情況下起作用,默認的type為linear。
默認情況下,從左到右:

angle=270,從上到下 :

android:startColor
Color. 顏色漸變的開始顏色,如angle=270中的 android:startColor="#000000"
android:endColor
Color. 顏色漸變的結束顏色,如angle=270中的 android:endColor="#ffffff"
android:centerColor
Color. 顏色漸變的中間顏色,主要用於多彩。

android:centerX
Float.(0 - 1.0) 相對X的漸變位置。
android:centerY
Float.(0 - 1.0) 相對Y的漸變位置。
這兩個屬性只有在type不為linear情況下起作用。
android:gradientRadius
Float. 漸變顏色的半徑,單位應該是像素點. 需要 android:type="radial".
如果android:type="radial",沒有設置android:gradientRadius,將會報錯,error inflating class.

加入android:centerColor屬性

android:type

centerX="0.2" centerX="0.2"

2. Android studio中怎麼將方形按鈕設置成圓角以及漸變效果

一、在 studio中res 包下的drawable中建立一個shape的文件,系統會給你一個默認的方形然後你就可以開始設置你需要的效果。
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.android.com/apk/res/android">

<!--填充背景色 -->
<solid android:color="#ffff00" /> //solid 指的是背景顏色的設置

<!--描邊 他需要 2個參數,顏色 第二參數 寬度 -->
<stroke
android:width="2dp" //width 指的是邊框的寬度
android:color="#ff00ff" /> //color指的是邊框的顏色

<!-- 設置弧度 Radius設置所有角的弧度 --> //radius 指的就是角的弧度
<corners //方形存在四個角,我們可以同時設置四個角,也可以分開設置
android:bottomLeftRadius="20dp" //左下角
android:bottomRightRadius="20dp" //右下角
android:topLeftRadius="20dp" //左上角
android:topRightRadius="20dp" /> //右上角

//同時設置:<corners
android:Radius="20dp" /> //四個角同時設置

<!-- 漸變色 startColor 啟示顏色 endColor最終顏色 type類型(如果類型為radial(徑向漸變,一個圓心以半徑的方式漸變),必須加上 android:gradientRadius="**")-->
<gradient
android:startColor="#ff0000" //開始顏色
android:endColor="#ffffff" //結束顏色
android:type="linear" /> //水平漸變 從左到右 type 指的是漸變的模式

<!--內容與邊框的間距-->
<padding
android:bottom="15dp"
android:left="15dp"
android:right="15dp"
android:top="15dp" />

<!--如果設置了漸變色 那麼背景顏色將不顯示 -->

</shape>
<gradient>
shape的顏色漸變屬性
attributes:

android:angle
Integer,代表漸變顏色的角度, 0 is left to right, 90 is bottom to top. 必須是45的整數倍.
默認是 0.該屬性只有在type=linear情況下起作用,默認的type為linear。
默認情況下,從左到右:

xml代碼:<gradient
android:startColor="#000000"
android:endColor="#ffffff"
/>

angle=270,從上到下 :

xml代碼:<gradient
android:startColor="#000000"
android:endColor="#ffffff"
android:angle="270"
/>
android:startColor
Color. 顏色漸變的開始顏色,如angle=270中的 android:startColor="#000000"
android:endColor
Color. 顏色漸變的結束顏色,如angle=270中的 android:endColor="#ffffff"
android:centerColor
Color. 顏色漸變的中間顏色,主要用於多彩。

<gradient
android:startColor="#000000"
android:endColor="#ffffff"
android:centerColor="#ff0000"
/>
android:centerX
Float.(0 - 1.0) 相對X的漸變位置。
android:centerY
Float.(0 - 1.0) 相對Y的漸變位置。
這兩個屬性只有在type不為linear情況下起作用。
android:gradientRadius
Float. 漸變顏色的半徑,單位應該是像素點. 需要 android:type="radial".
如果android:type="radial",沒有設置android:gradientRadius,將會報錯,error inflating class.

xml代碼:
<gradient
android:startColor="#ff0000"
android:endColor="#ffffff"
android:centerX="0.5"
android:centerY="0.5"
android:gradientRadius="30"
android:type="radial"
/>
加入Android:centerColor屬性

<gradient
android:startColor="#ff0000"
android:endColor="#ffffff"
android:centerColor="#000000"
android:centerX="0.5"
android:centerY="0.5"
android:gradientRadius="30"
android:type="radial"
/>
android:type
Value Description
"linear" 線性漸變.可以理解為 y=kx+b.
"radial" A radial gradient.圓形漸變,起始顏色從cenralX,centralY點開始。
"sweep" A sweeping line gradient.

centerX="0.2" centerX="0.2"

xml代碼:
<gradient
android:startColor="#ff0000"
android:endColor="#ffffff"
android:centerX="0.2"
android:centerX="0.2"
android:gradientRadius="30"
android:type="radial"
/>
type="sweep":

xml代碼:
<gradient
android:startColor="#ff0000"
android:endColor="#ffffff"
android:centerX="0.5"
android:centerY="0.5"
android:type="sweep"
/>

3. 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教程 ------------------------------

4. Android繪圖之RadialGradient 放射漸變(11)

LinearGradient 和 SweepGradient,這次講解RadialGradient;
RadialGradient被稱為放射漸變,就是從中心向外圓形漸變。
兩個構造函數,第一個構造函數可以實現兩種顏色的漸變,第二個構造函數可以實現多個顏色的漸變。

參數說明:
centerX ,centerY:shader的中心坐標,開始漸變的坐標。
radius:漸變的半徑,
centerColor,edgeColor:中心點漸變顏色,邊界的漸變顏色,
colors:漸變顏色數組,
stoops:漸變位置數組,類似掃描漸變的positions數組,取值[0,1],中心點為0,半徑到達位置為1.0f,
tileMode:shader未覆蓋以外的填充模式。

構造函數:
RadialGradient(float centerX, float centerY, float radius, @ColorInt int centerColor, @ColorInt int edgeColor, @NonNull TileMode tileMode);

提供中心坐標,半徑,顏色值,TileMode

Stops數組取值為[0-1],一般為從小到大,表示每個位置對應的顏色值,如果stops不為null,colors必須和stops一一對應,否則可能導致崩潰,如果stops為null,各顏色從中心到邊界線性漸變。

stops數組為null,四種顏色線性漸變:

stops數組不為null:

如果數組多餘顏色個數:

大致做個小例子,如果需要線上使用需要考慮很多問題,類似ondraw最好不要聲明對象等:

替換為多顏色 private int[] colors = {Color.YELLOW, Color.RED, Color.BLUE, Color.GREEN};

android繪圖之Paint(1)
android繪圖之Canvas基礎(2)
Android繪圖之Path(3)
Android繪圖之drawText繪制文本相關(4)
Android繪圖之Canvas概念理解(5)
Android繪圖之Canvas變換(6)
Android繪圖之Canvas狀態保存和恢復(7)
Android繪圖之PathEffect (8)
Android繪圖之LinearGradient線性漸變(9)
Android繪圖之SweepGradient(10)
Android繪圖之RadialGradient 放射漸變(11)
Android繪制之BitmapShader(12)
Android繪圖之ComposeShader,PorterDuff.mode及Xfermode(13)
Android繪圖之drawText,getTextBounds,measureText,FontMetrics,基線(14)
Android繪圖之貝塞爾曲線簡介(15)
Android繪圖之PathMeasure(16)
Android 動態修改漸變 GradientDrawable

5. android怎麼設置字體漸變色 不是背景漸變

●使用XML的方式為背景添加漸變效果
1、在res/drawable文件夾里添加一個jbshape.xml文件,然後寫入如下代碼:
<?xml version="1.0" encoding="utf-8"?>

<gradient
android:angle="270"
android:centerColor="#00FFFF"
android:centerX="0.5"
android:centerY="0.5"
android:endColor="#666666"
android:startColor="#0099FF" />

<padding
android:bottom="7dp"
android:left="7dp"
android:right="7dp"
android:top="7dp" />

<corners android:radius="4dp" />

</shape>
說明:
(1)shape節點配置的是圖形的形式,主要包括方形、圓形等,上邊代碼為方形。
(2)gradient節點主要配置起點顏色、終點顏色及中間點的顏色、坐標、漸變效果(0,90,180從左到右漸變,270從上到下漸變)默認從左到右。
(3)corners節點配置四周圓角的半徑。

6. android 圓角邊框 陰影邊框怎麼設置

所謂添加陰影,就是兩個畫布從重疊,上方的畫布小於下方的畫布,陰影顏色為下方的畫布的顏色。
item 中shape 的屬性 (rectangle:矩形;line:線性;oval:橢圓;ring:環形),默認為矩形
corners //設置圓角幅度,必須是在shape=rectangle的時候,corners才有效
<corners
Android:radius="dimension" //全部的圓角半徑
android:topLeftRadius="dimension" //左上角的圓角半徑
android:topRightRadius="dimension" //右上角的圓角半徑
android:bottomLeftRadius="dimension" //左下角的圓角半徑
android:bottomRightRadius="dimension" /> //右下角的圓角半徑
eg:<corners android:radius="10dp" />
solid用以指定內部填充色
e.g:<solid android:color="color" />
gradient //定義漸變色,可以定義兩色漸變和三色漸變,及漸變樣式
linear(線性漸變)、radial(放射性漸變)、sweep(掃描式漸變), 在構造放射性漸變時,要加上android:gradientRadius屬性(漸變半徑),即必須指定漸變半徑的大小才會起作用。
<gradient
android:type=["linear" | "radial" | "sweep"] //共有3中漸變類型
android:angle="integer" //漸變角度,必須為45的倍數,0為從左到右,90為從上到下
android:centerX="float" //漸變中心X的相當位置,范圍為0~1
android:centerY="float" //漸變中心Y的相當位置,范圍為0~1
android:startColor="color" //漸變開始點的顏色
android:centerColor="color" //漸變中間點的顏色,在開始與結束點之間
android:endColor="color" //漸變結束點的顏色
android:gradientRadius="float" //漸變的半徑,只有當漸變類型為radial時才有效
android:useLevel=["true" | "false"] /> //使用LevelListDrawable時就要設置為true。設為false時才有漸變效果
stroke //這是描邊屬性,可以定義描邊的寬度,顏色,虛實線等
<stroke
android:width="dimension" //描邊的寬度
android:color="color" //描邊的顏色 // 以下兩個屬性設置虛線
android:dashWidth="dimension" //虛線的寬度,值為0時是實線
android:dashGap="dimension" /> //虛線的間隔

7. android顏色漸變如何實現從四周往中心漸變 或者從中心往四周漸變 都行,不是 從左往右

android 顏色漸變是指通知xml或者java代碼,設置相關參數,是界面的某個指定的視圖顯示成從開始位置的顏色,逐漸過度到結尾位置的顏色的技術。

android顏色漸變的分類有:

LinearGradient線性漸變

RadialGradient鏡像漸變

SweepGradient角度漸變


一、LinearGradient線性漸變
顧名思義,是只顏色在一個直線方向上逐漸改變。

文件代碼:

<?xmlversion="1.0"encoding="utf-8"?>
<shapexmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">

<gradient
android:endColor="#0000FF"
android:startColor="#FF0000"
android:type="linear"/>

</shape>

效果:

8. 怎麼給android 設置邊框

給view設置邊框的代碼:

1.創建xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >

2.設置<!-- 圓角 -->
<corners
android:radius="9dp"
android:topLeftRadius="2dp"
android:topRightRadius="2dp"
android:bottomLeftRadius="2dp"
android:bottomRightRadius="2dp"/><!-- 設置圓角半徑 -->

3.設置<!-- 漸變 -->
<gradient
android:startColor="@android:color/white"
android:centerColor="@android:color/black"
android:endColor="@android:color/black"
android:useLevel="true"
android:angle="45"
android:type="radial"
android:centerX="0"
android:centerY="0"
android:gradientRadius="90"/>

4.設置<!-- 間隔 -->
<padding
android:left="2dp"
android:top="2dp"
android:right="2dp"
android:bottom="2dp"/><!-- 各方向的間隔 -->

5.設置大小精細<!-- 大小 -->
<size
android:width="50dp"
android:height="50dp"/><!-- 寬度和高度 -->

6.設置<!-- 填充 -->
<solid
android:color="@android:color/white"/><!-- 填充的顏色 -->

7.設置邊框<!-- 描邊 -->
<stroke
android:width="2dp"
android:color="@android:color/black"
android:dashWidth="1dp"
android:dashGap="2dp"/>
</shape>

9. 如何自定義Android Dialog的樣式

如何自定義Android Dialog的樣式? Android 中自定義Dialog的樣式,主要是通過自定義的xml,然後載入到dialog的背景中,如下步驟:

1、自定義Dialog
final Dialog dialog = new Dialog(this, R.style.Theme_dialog);
2、窗口布局
View contentView = LayoutInflater.from(this).inflate(R.layout.select_list_dialog,null);
3、把設定好的窗口布局放到dialog中
dialog.setContentView(contentView);
4、設定點選視窗空白處取消會話

dialog.setCanceledOnTouchOutside(true);
5、具體的操作
ListView msgView = (ListView)contentView.findViewById(R.id.listview_flow_list);
6、展示視窗
dialog.show();例:final Dialog dialog = new Dialog(this,R.style.Theme_dialog);View contentView =LayoutInflater.from(this).inflate(R.layout.select_list_dialog, null);dialog.setContentView(contentView);dialog.setCanceledOnTouchOutside(true);ListView msgView = (ListView)contentView.findViewById(R.id.listview_flow_list);TextView titleText = (TextView)contentView.findViewById(R.id.title);titleText.setText("請選擇銀行卡");SelectBankCardDialogAdapter adapter =new SelectBankCardDialogAdapter(this, mBankcardList);msgView.setAdapter(adapter);msgView.setOnItemClickListener(newOnItemClickListener() {@Overridepublic void onItemClick(AdapterViewparent, View view, int position, long id) {Toast.makeText(RechargeFlowToMobileActivity.this, position+"",0).show();mSelectCard =mBankcardList.get(position);String area = mSelectCard.getBank_card();mCardNumberText.setText(area);dialog.di *** iss();}});Button closeBtn = (Button)contentView.findViewById(R.id.close);closeBtn.setClickable(true);closeBtn.setOnClickListener(newView.OnClickListener() {@Overridepublic void onClick(View v) {dialog.di *** iss();}});dialog.show();
以上就是在Android開發自定義dialog樣式的方法和步驟,android很多的控制元件都提供了介面或者方法進行樣式的定義和修改。
如何自定義android Button樣式
返回部落格列表
轉 android自定義button樣式
sumpower
釋出時間: 2014/02/25 19:56
閱讀: 4162

收藏: 0

點贊: 0

評論: 0
摘要
android自定義button樣式
在Android開發應用中,預設的Button是由系統渲染和管理大小的。而我們看到的成功的移動應用,都是有著酷炫的外觀和使用體驗的。因此,我們在開發產品的時候,需要對預設按鈕進行美化。在本篇里,筆者結合在應用開發中的經驗,探討一下自定義背景的按鈕、自定義形狀按鈕的實現方法。
首先看實現效果截圖:
自定義背景的按鈕目前有2種方式實現,向量和點陣圖。
1. 向量圖形繪制的方式
向量圖形繪制的方式實現簡單,適合對於按鈕形狀和圖案要求不高的場合。步驟如下:
(a) 使用xml定義一個圓角矩形,外圍輪廓線實線、內填充漸變色,xml程式碼如下。
view plain
bg_alibuybutton_default.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="地址">
<item>
<shape android:shape="rectangle">
<solid android:color="#FFEC7600" />
<corners
android:LeftRadius="5dip"
android:RightRadius="5dip"
android:bottomLeftRadius="5dip"
android:bottomRightRadius="5dip" />
</shape>
</item>
<item android:="1px" android:bottom="1px" android:left="1px" android:right="1px">
<shape>
<gradient
android:startColor="#FFEC7600" android:endColor="#FFFED69E"
android:type="linear" android:angle="90"
android:centerX="0.5" android:centerY="0.5" />
<corners
android:LeftRadius="5dip"
android:RightRadius="5dip"
android:bottomLeftRadius="5dip"
android:bottomRightRadius="5dip" />
</shape>
</item>
</layer-list>
同樣定義bg_alibuybutton_pressed.xml和bg_alibuybutton_selected.xml,內容相同,就是漸變顏色不同,用於按鈕按下後的背景變化效果。
(b) 定義按鈕按下後的效果變化描述檔案drawable/bg_alibuybutton.xml,程式碼如下。
view plain
<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="地址">
<item android:state_pressed="true"
android:drawable="@drawable/bg_alibuybutton_pressed" />
<item android:state_focused="true"
android:drawable="@drawable/bg_alibuybutton_selected" />
<item android:drawable="@drawable/bg_alibuybutton_default" />
</selector>
(c) 在你需要的介面定義檔案中,如layout/main.xml中定義一個Button控制元件。
view plain
<Button
android:layout_width="120dip"
android:layout_height="40dip"
android:text="向量背景按鈕" android:background="@drawable/bg_alibuybutton" />
這樣,自定義背景的按鈕就可以使用了,在實現onClick方法後就可以響應操作。

android自帶的樣式比較難看,如何能夠自定義按鈕的樣式,使其顯示的跟美工設計的效果一樣,現與大家分享下
在layout中新增2個按鈕,從下圖中可以看出在按鈕中呼叫了style和android:background屬性,這兩個屬性一個是自定義樣式,一個是給按鈕新增背景圖片
展開res目錄,可以看到在values目錄下有styles.xml檔案,該檔案用於自定義樣式,雙擊開啟
標注的是我自定義的樣式,name為BtnStyle,當按鈕呼叫自定義樣式的時候訪問這個name
在button中呼叫自定義樣式的方法,比較簡單
如何往按鈕中新增自定義圖片,使按鈕看起來更漂亮些,因不同手機解析度不同,那必然牽扯到圖片的拉伸,在android系統下有個很好的技術「九宮格「,可以對圖片進行處理,只對區域性進行拉伸,給工具目錄儲存在android\sdk\tools\draw9patch.bat,經過該工具處理的圖片以.9.png結尾,放到drawable資料夾中
在Button中通過android:background屬性載入圖片的方法,至此我們自定義的按鈕樣式也就完成了,當然這只是個引子,在具體的專案工程中實現的效果要比這個demo復雜很多,有好的設計思路歡迎交流。

10. Android 縮放一個Imageview控制項中中心點問題

縮放效果我沒記錯的話是默認保持你設置之後的效果,你要設置縮放完成後返回本來的樣子,你試試呢!

閱讀全文

與androidcenterx相關的資料

熱點內容
怎麼買賣副圖源碼 瀏覽:660
廣東農信app怎麼更改預留手機號碼 瀏覽:777
嵌套頁面php 瀏覽:566
安卓手機怎麼調到微信聊天模式 瀏覽:857
java博客開源系統 瀏覽:719
男人之間的加密對話日語 瀏覽:359
怎麼連遠程連接伺服器 瀏覽:11
安卓二手手機該如何檢測 瀏覽:213
微信可以共享圖片文件夾嗎 瀏覽:80
聯通wifi加密碼 瀏覽:643
錄屏文件夾小米 瀏覽:548
車上的app怎麼重設 瀏覽:24
指定文件夾屬性 瀏覽:131
linuxphp編程 瀏覽:337
以下不正確的是雲伺服器 瀏覽:909
琉璃神社壓縮密碼 瀏覽:715
大一學生解壓視頻 瀏覽:376
單位電腦e盤加密輸入正確密碼 瀏覽:873
phpfileupload 瀏覽:634
刑拘程序員 瀏覽:617