怎么为android控件边缘添加阴影

怎么为android控件边缘添加阴影,第1张

为控件设置一个有阴影感的背景图片即可,可以使用shape

在自定义shape中增加一层或多层,并错开,即可显示阴影效果。为增加立体感,按钮按下的时候,只设置一层。我们可以通过top, bottom, right 和 left 四个参数来控制阴影的方向和大小

//自定义两种阴影效果

第一种

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/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="http://schemas.android.com/apk/res/android">  

  <!-- 点击之后 -->  

  <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>  

  <!-- 正常状态 -->  

  <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>

设置后的效果图如下

重写ImageView

public class HKImageView extends ImageView {

public HKImageView(Context context, AttributeSet attrs) {

super(context, attrs, 0)

}

public HKImageView(Context context) {

super(context)

}

@Override

protected void onDraw(Canvas canvas) {

Log.d("lg", "onDraw")

super.onDraw(canvas)

/物态/ 画边框

Rect rect1 = getRect(canvas)

Paint paint = new Paint()

paint.setColor(Color.GRAY)

paint.setStyle(Paint.Style.STROKE)

// 画边框

canvas.drawRect(rect1, paint)

paint.setColor(Color.LTGRAY)

// 画一条竖线,模拟右边的阴影

canvas.drawLine(rect1.right + 1, rect1.top + 2, rect1.right + 1,

rect1.bottom + 2, paint)

//羡做 画一条横线,模拟下边的阴影

canvas.drawLine(rect1.left + 2, rect1.bottom + 1, rect1.right + 2,

rect1.bottom + 1, paint)

// 画一条竖线,模拟右边的阴影

canvas.drawLine(rect1.right + 2, rect1.top + 3, rect1.right + 2,

rect1.bottom + 3, paint)

// 画一条横线,模拟下边的阴影

canvas.drawLine(rect1.left + 3, rect1.bottom + 2, rect1.right + 3,

rect1.bottom + 2, paint)

}

Rect getRect(Canvas canvas) {

Rect rect = canvas.getClipBounds()

rect.bottom -= getPaddingBottom()

rect.right -= getPaddingRight()

rect.left += getPaddingLeft()

rect.top += getPaddingTop()

return rect

}

}

使用

要给图片添加padding才罩派源有效果

imageView.setPadding(3, 3, 5, 5)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11979502.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存