0
点赞
收藏
分享

微信扫一扫

android实现按钮阴影左上角和右下角不同颜色

新鲜小饼干 2022-04-23 阅读 68
android

这里主要是说一下实现思路,楼主在全网没有找到能实现这种功能的第三方控件,所以自己自定义了一个组合控件,用到了第三方的框架,链接:阴影框架

由于框架不能实现自定义四边的阴影颜色,所以楼主创建了自定义view,然后自己写了一个布局,使用framelayout布局重叠了两个阴影布局,一个用来做左上边的阴影,一个右下角的,代码如下

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:descendantFocusability="afterDescendants"
    android:background="@color/material_on_primary_disabled"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <com.lihang.ShadowLayout
        android:id="@+id/right_bottom_shadow"
        android:layout_gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:hl_layoutBackground="@color/design_default_color_primary"
        app:hl_cornerRadius="10dp"
        app:hl_shadowColor="#2a000000"
        app:hl_shadowLimit="5dp"
        app:hl_shadowOffsetX="2dp"
        app:hl_shadowOffsetY="2dp"
        >
        <TextView
            android:textStyle="bold"
            android:id="@+id/right_bottom_shadow_text"
            android:textColor="@color/white"
            android:paddingVertical="@dimen/dp_5"
            android:paddingHorizontal="10dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="lala"
            />
    </com.lihang.ShadowLayout>
    <com.lihang.ShadowLayout
        android:id="@+id/left_top_shadow"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        app:hl_cornerRadius="10dp"
        app:hl_layoutBackground="@color/design_default_color_primary"
        app:hl_shadowColor="#AAFFFFFF"
        app:hl_shadowLimit="5dp"
        app:hl_shadowOffsetX="-2dp"
        app:hl_shadowOffsetY="-2dp"
        >

        <TextView
            android:id="@+id/left_top_shadow_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:outlineProvider="background"
            android:paddingHorizontal="10dp"
            android:paddingVertical="@dimen/dp_5"
            android:text="lala"
            android:textStyle="bold"
            android:textColor="@color/white" />
    </com.lihang.ShadowLayout>
</FrameLayout>

然后在自定义view中填入上面的布局,即

 把布局填进去,然后找到布局里面的view初始化,向外面抛出事件去改变布局中的参数,也可以自定义属性,然后初始化时导入,即

 

关于这个第三方框架,一定要先熟悉大概效果,单看楼主这篇文章应该不能很快就应用,这里只是说一下思路,没有很仔细,不懂的在评论区问

举报

相关推荐

0 条评论