為控件設(shè)置一個(gè)有陰影感的背景圖片即可,可以使用shape
創(chuàng)新互聯(lián)建站是一家專注于網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)與策劃設(shè)計(jì),阿克塞哈薩克族自治網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)建站做網(wǎng)站,專注于網(wǎng)站建設(shè)十載,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:阿克塞哈薩克族自治等地區(qū)。阿克塞哈薩克族自治做網(wǎng)站價(jià)格咨詢:13518219792
在自定義shape中增加一層或多層,并錯(cuò)開(kāi),即可顯示陰影效果。為增加立體感,按鈕按下的時(shí)候,只設(shè)置一層。我們可以通過(guò)top, bottom, right 和 left 四個(gè)參數(shù)來(lái)控制陰影的方向和大小
//自定義兩種陰影效果
第一種
?xml?version="1.0"?encoding="utf-8"?
selector?xmlns:android=""??
item?android:state_pressed="true"?
layer-list?
item?android:left="4dp"?android:top="4dp"
shape?
solid?android:color="#ff58bb52"/??
corners?android:radius="30dip"/?
/shape
/item?
/layer-list?
/item??
item?
layer-list?
!--?第一層?--??
item?android:left="4dp"?android:top="4dp"
shape?
solid?android:color="#66000000"/??
corners?android:radius="30dip"/??
!--?描邊?--??
stroke?android:width="1dp"?android:color="#ffffffff"/?
/shape
/item??
!--?第二層?--??
item?android:bottom="4dp"?android:right="4dp"
shape?
solid?android:color="#ff58bb52"/??
corners?android:radius="30dip"/??
!--?描邊?--??
stroke?android:width="1dp"?android:color="#ffffffff"/?
/shape
/item?
/layer-list
/item?
/selector
第二種
?xml?version="1.0"?encoding="utf-8"?
selector?xmlns:android=""??
!--?點(diǎn)擊之后?--??
item?android:state_pressed="true"?
layer-list?
item?android:left="4dp"?android:top="4dp"?
shape?
solid?android:color="#ff58bb52"/??
corners?android:radius="3dp"/?
/shape?
/item?
/layer-list
/item??
!--?正常狀態(tài)?--??
item?
layer-list?
!--?第一層?--??
item?android:left="2dp"?android:top="2dp"?
shape?
solid?android:color="#66000000"/??
corners?android:radius="3dp"/?
/shape?
/item??
!--?第二層?--??
item?android:bottom="4dp"?android:right="4dp"?
shape?
solid?android:color="#ff58bb52"/??
corners?android:radius="3dp"/?
/shape?
/item??
!--?第三層?--??
item?android:bottom="6dp"?android:right="6dp"?
shape?
solid?android:color="#ffcccccc"/??
corners?android:radius="3dp"/?
/shape?
/item?
/layer-list?
/item?
/selector
設(shè)置后的效果圖如下
Android自定義邊框,可以設(shè)置任意邊框的角度和陰影。我下面分為 四個(gè)角度設(shè)置邊框、兩個(gè)角度設(shè)置邊框、半圓球設(shè)置邊框加兩層陰影等。
效果圖:
效果圖:
效果圖:
elevation 設(shè)置陰影需要注意兩點(diǎn):
1、view需要設(shè)置背景
2、陰影是繪制在父控件上的,子控件和父控件之間要留空隙,用padding也不行
在開(kāi)發(fā)過(guò)程中有過(guò)這樣的布局:
我子Linearlayout是設(shè)置的圓角背景,結(jié)果這樣的效果是:只有圓角的便便才有一丁點(diǎn)的陰影,原因是父布局設(shè)置的是padding,子控件是match_parent,空隙不足導(dǎo)致,將子布局改為margin,去掉父控件的padding就行了
設(shè)置陰影需要按照以下步驟:
1、設(shè)置eleavation值;
2、添加一個(gè)背景或者outline。
可以在xml中通過(guò)定義一個(gè)背景來(lái)設(shè)置outline:
TextView
android:id="@+id/myview"
...
android:elevation="2dp"
android:background="@drawable/myrect" /
!-- res/drawable/myrect.xml --
shape xmlns:android=""
android:shape="rectangle"
solid android:color="#42000000" /
corners android:radius="5dp" /
/shape
也可以通過(guò)代碼來(lái)創(chuàng)建一個(gè)outline:
/* Get the size of the shape from resources. */
int shapeSize = getResources().getDimensionPixelSize(R.dimen.shape_size);
/* Create a circular outline. */
mOutlineCircle = new Outline();
mOutlineCircle.setRoundRect(0, 0, shapeSize, shapeSize, shapeSize / 2);
/* Create a rectangular outline. */
mOutlineRect = new Outline();
mOutlineRect.setRoundRect(0, 0, shapeSize, shapeSize, shapeSize / 10);