GithubHelp home page GithubHelp logo

getactivity / shapeview Goto Github PK

View Code? Open in Web Editor NEW
819.0 10.0 76.0 19.96 MB

Shape 支持在布局中直接定义啦,支持设置阴影,文字渐变色,状态选择器

License: Apache License 2.0

Java 100.00%
shapetextview shapeview shapebutton shapeframelayout shapelinearlayout shapeconstraintlayout shaperelativelayout supertextview backgroundlibrary shapeedittext

shapeview's Introduction

ShapeView 框架

集成步骤

  • 如果你的项目 Gradle 配置是在 7.0 以下,需要在 build.gradle 文件中加入
allprojects {
    repositories {
        // JitPack 远程仓库:https://jitpack.io
        maven { url 'https://jitpack.io' }
    }
}
  • 如果你的 Gradle 配置是 7.0 及以上,则需要在 settings.gradle 文件中加入
dependencyResolutionManagement {
    repositories {
        // JitPack 远程仓库:https://jitpack.io
        maven { url 'https://jitpack.io' }
    }
}
  • 配置完远程仓库后,在项目 app 模块下的 build.gradle 文件中加入远程依赖
android {
    // 支持 JDK 1.8
    compileOptions {
        targetCompatibility JavaVersion.VERSION_1_8
        sourceCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {
    // ShapeView:https://github.com/getActivity/ShapeView
    implementation 'com.github.getActivity:ShapeView:9.2'
    // ShapeDrawable:https://github.com/getActivity/ShapeDrawable
    implementation 'com.github.getActivity:ShapeDrawable:3.2'
}

AndroidX 兼容

  • 如果项目是基于 AndroidX 包,请在项目 gradle.properties 文件中加入
# 表示将第三方库迁移到 AndroidX
android.enableJetifier = true
  • 如果项目是基于 Support 包则不需要加入此配置

框架文档

  • Java 代码设置
ShapeButton shapeButton = findViewById(R.id.btn_main_test);
shapeButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
    
        shapeButton.getShapeDrawableBuilder()
                .setSolidColor(0xFF000000)
                .setStrokeColor(0xFF5A8DDF)
                // 注意:最后需要调用一下 intoBackground 方法才能生效
                .intoBackground();

        shapeButton.getTextColorBuilder()
                .setTextColor(0xFFFFFFFF)
                // 注意:最后需要调用一下 intoTextColor 方法才能生效
                .intoTextColor();

        shapeButton.setText("颜色已经改变啦");
    }
});

布局属性大全

<resources>

    <!-- Shape 形状(默认是矩形) -->
    <attr name="shape_type">
        <!-- 矩形 -->
        <enum name="rectangle" value="0" />
        <!-- 椭圆形 -->
        <enum name="oval" value="1" />
        <!-- 线条 -->
        <enum name="line" value="2" />
        <!-- 圆环 -->
        <enum name="ring" value="3" />
    </attr>
    
    <!-- Shape 宽度 -->
    <attr name="shape_width" format="dimension" />
    <!-- Shape 高度 -->
    <attr name="shape_height" format="dimension" />

    <!-- 圆角大小 -->
    <attr name="shape_radius" format="dimension" />
    <!-- 左上角的圆角大小 -->
    <attr name="shape_radiusInTopLeft" format="dimension" />
    <attr name="shape_radiusInTopStart" format="dimension" />
    <!-- 右上角的圆角大小 -->
    <attr name="shape_radiusInTopRight" format="dimension" />
    <attr name="shape_radiusInTopEnd" format="dimension" />
    <!-- 左下角的圆角大小 -->
    <attr name="shape_radiusInBottomLeft" format="dimension" />
    <attr name="shape_radiusInBottomStart" format="dimension" />
    <!-- 右下角的圆角大小 -->
    <attr name="shape_radiusInBottomRight" format="dimension" />
    <attr name="shape_radiusInBottomEnd" format="dimension" />

    <!-- 填充色(默认状态) -->
    <attr name="shape_solidColor" format="color" />
    <!-- 填充色(按下状态) -->
    <attr name="shape_solidPressedColor" format="color" />
    <!-- 填充色(选中状态) -->
    <attr name="shape_solidCheckedColor" format="color" />
    <!-- 填充色(禁用状态) -->
    <attr name="shape_solidDisabledColor" format="color" />
    <!-- 填充色(焦点状态) -->
    <attr name="shape_solidFocusedColor" format="color" />
    <!-- 填充色(选择状态) -->
    <attr name="shape_solidSelectedColor" format="color" />

    <!-- 填充色渐变色起始颜色 -->
    <attr name="shape_solidGradientStartColor" format="color" />
    <!-- 填充色渐变色中间颜色(可不设置) -->
    <attr name="shape_solidGradientCenterColor" format="color" />
    <!-- 填充色渐变色结束颜色 -->
    <attr name="shape_solidGradientEndColor" format="color" />

    <!-- 填充色渐变方向(仅用于线性渐变) -->
    <attr name="shape_solidGradientOrientation" >
        <!-- 从左到右绘制渐变(0 度) -->
        <enum name="leftToRight" value="0" />
        <enum name="startToEnd" value="10" />

        <!-- 从右到左绘制渐变(180 度) -->
        <enum name="rightToLeft" value="180" />
        <enum name="endToStart" value="1800" />

        <!-- 从下到上绘制渐变(90 度) -->
        <enum name="bottomToTop" value="90" />
        <!-- 从上到下绘制渐变(270 度) -->
        <enum name="topToBottom" value="270" />

        <!-- 从左上角到右下角绘制渐变(315 度) -->
        <enum name="topLeftToBottomRight" value="315" />
        <enum name="topStartToBottomEnd" value="3150" />

        <!-- 从左下角到右上角绘制渐变(45 度) -->
        <enum name="bottomLeftToTopRight" value="45" />
        <enum name="bottomStartToTopEnd" value="450" />

        <!-- 从右上角到左下角绘制渐变(225 度) -->
        <enum name="topRightToBottomLeft" value="225" />
        <enum name="topEndToBottomStart" value="2250" />

        <!-- 从右下角到左上角绘制渐变(135 度) -->
        <enum name="bottomRightToTopLeft" value="135" />
        <enum name="bottomEndToTopStart" value="1350" />
    </attr>
    <!-- 填充色渐变类型(默认类型是线性渐变) -->
    <attr name="shape_solidGradientType">
        <!-- 线性渐变 -->
        <enum name="linear" value="0" />
        <!-- 径向渐变 -->
        <enum name="radial" value="1" />
        <!-- 扫描渐变 -->
        <enum name="sweep"  value="2" />
    </attr>
    <!-- 填充色渐变中心 X 点坐标的相对位置(默认值为 0.5)-->
    <attr name="shape_solidGradientCenterX" format="float|fraction" />
    <!-- 填充色渐变中心 Y 点坐标的相对位置(默认值为 0.5)-->
    <attr name="shape_solidGradientCenterY" format="float|fraction" />
    <!-- 填充色渐变色半径(仅用于径向渐变) -->
    <attr name="shape_solidGradientRadius" format="float|fraction|dimension" />

    <!-- 边框色(默认状态) -->
    <attr name="shape_strokeColor" format="color" />
    <!-- 边框色(按下状态) -->
    <attr name="shape_strokePressedColor" format="color" />
    <!-- 边框色(选中状态) -->
    <attr name="shape_strokeCheckedColor" format="color" />
    <!-- 边框色(禁用状态) -->
    <attr name="shape_strokeDisabledColor" format="color" />
    <!-- 边框色(焦点状态) -->
    <attr name="shape_strokeFocusedColor" format="color" />
    <!-- 边框色(选择状态) -->
    <attr name="shape_strokeSelectedColor" format="color" />

    <!-- 边框色渐变色起始颜色 -->
    <attr name="shape_strokeGradientStartColor" format="color" />
    <!-- 边框渐变色中间颜色(可不设置) -->
    <attr name="shape_strokeGradientCenterColor" format="color" />
    <!-- 边框渐变色结束颜色 -->
    <attr name="shape_strokeGradientColor" format="color" />

    <!-- 边框色渐变方向(仅用于线性渐变) -->
    <attr name="shape_strokeGradientOrientation" >
        <!-- 从左到右绘制渐变(0 度) -->
        <enum name="leftToRight" value="0" />
        <enum name="startToEnd" value="10" />

        <!-- 从右到左绘制渐变(180 度) -->
        <enum name="rightToLeft" value="180" />
        <enum name="endToStart" value="1800" />

        <!-- 从下到上绘制渐变(90 度) -->
        <enum name="bottomToTop" value="90" />
        <!-- 从上到下绘制渐变(270 度) -->
        <enum name="topToBottom" value="270" />

        <!-- 从左上角到右下角绘制渐变(315 度) -->
        <enum name="topLeftToBottomRight" value="315" />
        <enum name="topStartToBottomEnd" value="3150" />

        <!-- 从左下角到右上角绘制渐变(45 度) -->
        <enum name="bottomLeftToTopRight" value="45" />
        <enum name="bottomStartToTopEnd" value="450" />

        <!-- 从右上角到左下角绘制渐变(225 度) -->
        <enum name="topRightToBottomLeft" value="225" />
        <enum name="topEndToBottomStart" value="2250" />

        <!-- 从右下角到左上角绘制渐变(135 度) -->
        <enum name="bottomRightToTopLeft" value="135" />
        <enum name="bottomEndToTopStart" value="1350" />
    </attr>

    <!-- 边框大小 -->
    <attr name="shape_strokeSize" format="dimension" />
    <!-- 边框虚线大小(为 0 就是实线,大于 0 就是虚线) -->
    <attr name="shape_strokeDashSize" format="dimension" />
    <!-- 边框虚线间隔(虚线与虚线之间的间隔) -->
    <attr name="shape_strokeDashGap" format="dimension" />

    <!-- 阴影大小 -->
    <attr name="shape_shadowSize" format="dimension" />
    <!-- 阴影颜色 -->
    <attr name="shape_shadowColor" format="color" />
    <!-- 阴影水平偏移 -->
    <attr name="shape_shadowOffsetX" format="dimension" />
    <!-- 阴影垂直偏移 -->
    <attr name="shape_shadowOffsetY" format="dimension" />

    <!-- 内环的半径(仅在 shape="ring" 生效) -->
    <attr name="shape_ringInnerRadiusSize" format="dimension" />
    <!-- 内环的半径比率(仅在 shape="ring" 生效),计算公式:整个圆环 / innerRadiusRatio = innerRadius -->
    <attr name="shape_ringInnerRadiusRatio" format="float" />
    <!-- 外环的厚度(仅在 shape="ring" 生效) -->
    <attr name="shape_ringThicknessSize" format="dimension" />
    <!-- 外环的厚度比率(仅在 shape="ring" 生效),计算公式:整个圆环 / thicknessRatio = thickness -->
    <attr name="shape_ringThicknessRatio" format="float" />

    <!-- 线条重心(仅在 shape="line" 生效) -->
    <attr name="shape_lineGravity">
        <flag name="top" value="0x30" />
        <flag name="bottom" value="0x50" />
        <flag name="left" value="0x03" />
        <flag name="right" value="0x05" />
        <flag name="start" value="0x00800003" />
        <flag name="end" value="0x00800005" />
        <flag name="center" value="0x11" />
    </attr>

    <!-- 文本色(默认状态) -->
    <attr name="shape_textColor" format="color" />
    <!-- 文本色(按下状态) -->
    <attr name="shape_textPressedColor" format="color" />
    <!-- 文本色(选中状态) -->
    <attr name="shape_textCheckedColor" format="color" />
    <!-- 文本色(禁用状态) -->
    <attr name="shape_textDisabledColor" format="color" />
    <!-- 文本色(焦点状态) -->
    <attr name="shape_textFocusedColor" format="color" />
    <!-- 文本色(选择状态) -->
    <attr name="shape_textSelectedColor" format="color" />

    <!-- 文本渐变色起始颜色 -->
    <attr name="shape_textStartColor" format="color" />
    <!-- 文本渐变色中间颜色(可不设置) -->
    <attr name="shape_textCenterColor" format="color" />
    <!-- 文本渐变色结束颜色 -->
    <attr name="shape_textEndColor" format="color" />
    <!-- 文本渐变方向(默认类型是水平渐变) -->
    <attr name="shape_textGradientOrientation">
        <!-- 水平渐变 -->
        <enum name="horizontal" value="0" />
        <!-- 垂直渐变 -->
        <enum name="vertical" value="1" />
    </attr>

    <!-- 文本边框颜色 -->
    <attr name="shape_textStrokeColor" format="color" />
    <!-- 文本边框大小 -->
    <attr name="shape_textStrokeSize" format="dimension" />

    <!-- CheckBox 或者 RadioButton 图标(默认状态) -->
    <attr name="shape_buttonDrawable" format="reference" />
    <!-- CheckBox 或者 RadioButton 图标(按下状态) -->
    <attr name="shape_buttonPressedDrawable" format="reference" />
    <!-- CheckBox 或者 RadioButton 图标(选中状态) -->
    <attr name="shape_buttonCheckedDrawable" format="reference" />
    <!-- CheckBox 或者 RadioButton 图标(禁用状态) -->
    <attr name="shape_buttonDisabledDrawable" format="reference" />
    <!-- CheckBox 或者 RadioButton 图标(焦点状态) -->
    <attr name="shape_buttonFocusedDrawable" format="reference" />
    <!-- CheckBox 或者 RadioButton 图标(选择状态) -->
    <attr name="shape_buttonSelectedDrawable" format="reference" />

</resources>
  • 目前支持这些属性的控件有:

    • View 的子类:ShapeView、ShapeTextView、ShapeButton、ShapeImageView、ShapeRadioButton、ShapeCheckBox、ShapeEditText

    • ViewGroup 的子类:ShapeLinearLayout、ShapeFrameLayout、ShapeRelativeLayout、ShapeConstraintLayout、ShapeRecyclerView、ShapeRadioGroup

框架混淆规则

  • 在混淆规则文件 proguard-rules.pro 中加入
-keep class com.hjq.shape.** {*;}

框架亮点

  • 功能强大:支持设置阴影、边框渐变色、文本渐变色

  • 更加便捷:无需新增 Xml 文件,直接定义控件属性即可

  • 即时生效:在布局中可实时预览效果,即见所得,无需运行

  • 无学习成本:控件属性和原生 Shape 命名保持一致,无需额外学习

  • 覆盖范围广:几乎涵盖所有常见的 View 控件,并且控件名称无任何记忆成本

  • 支持状态选择器:不仅支持设置背景色的状态选择器,还支持设置文本颜色的状态选择器

作者的其他开源项目

微信公众号:Android轮子哥

Android 技术 Q 群:10047167

如果您觉得我的开源库帮你节省了大量的开发时间,请扫描下方的二维码随意打赏,要是能打赏个 10.24 🐵就太👍了。您的支持将鼓励我继续创作:octocat:点击查看捐赠列表

License

Copyright 2021 Huang JinQun

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

shapeview's People

Contributors

getactivity avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

shapeview's Issues

ShapeImageView不能同时设置stroke和shadow

 <com.hjq.shape.view.ShapeImageView
      android:layout_width="86dp"
      android:layout_height="86dp"
      android:layout_gravity="center"
      android:padding="8dp"
      android:src="@drawable/blank_img"
      app:shape_radius="8dp"
      app:shape_solidColor="#1Affffff"
      app:shape_shadowSize="30dp"
      app:shape_shadowColor="#45FFDC78"
      app:shape_strokeColor="#FEDF65"
      app:shape_strokeWidth="2dp" />

这样 stroke就会消失,去掉shadow的配置就能显示stroke。
目前只有单独加了一层ShapeView做的shadow

是不是没有背景色的渐变方向设置?

建议收集

  • issue 是否有人曾提过类似的问题?(必答项,一旦出现重复提问我将不会再次解答)

  • 你觉得框架有什么不足之处?(必答项,你可以描述框架有什么令你不满意的地方)

  • 你觉得该怎么去完善会比较好?(非必答项,你可以提供一下自己的想法或者做法供作者参考)

设置shape_shadowSize圆角和嵌套cardview圆角无效了

问题描述

  • 框架版本【必填】:implementation 'com.github.getActivity:ShapeView:8.3'

  • 问题描述【必填】:ShapeLinearLayout里面放cardview,设置ShapeLinearLayout阴影后,cardview圆角无效了,

  • 是否必现【必填】:是

  • 出现问题的手机信息【必填】:任何

  • 出现问题的安卓版本【必填】:任何

请回答

  • 是部分机型还是所有机型都会出现【必答】:全部

  • 框架最新的版本是否存在这个问题【必答】:是

  • 是否已经查阅框架文档还未能解决的【必答】:是

  • issue 是否有人曾提过类似的问题【必答】:否

  • 是否可以通过 Demo 来复现该问题【必答】:否(

  • 使用原生的 shape.xml 来实现是否也会出现该问题【必答】:否(

image

设置指定方向的阴影

现在设置了阴影,默认就是四个方向都会出现阴影,能否增加一个设置指定方向阴影的属性?

2.2版本升到3.0版本,没有修改任何配置,效果全没了

image
image

<com.hjq.shape.view.ShapeEditText
android:id="@+id/etEmail"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_marginHorizontal="40dp"
android:gravity="center_vertical"
android:hint="邮箱"
android:inputType="textEmailAddress"
android:paddingHorizontal="10dp"
app:layout_constraintTop_toTopOf="parent"
app:shape_solidColor="#ffffff"
app:shape_strokeColor="#000000"
app:shape_strokeWidth="1dp" />

设置布局为宽度wrap_content 动态给布局设置外边框 会导致布局宽度直接撑满

【警告:请务必按照 issue 模板填写,不要抱有侥幸心理,一旦发现 issue 没有按照模板认真填写,一律直接关闭】

问题描述

  • 框架版本【必填】:8.3

  • 问题描述【必填】:设置布局为宽度wrap_content 动态给布局设置外边框 会导致布局宽度直接撑满

  • 复现步骤【必填】:设置布局为宽度wrap_content 动态给布局设置外边框 会导致布局宽度直接撑满(注意:目前不受理没有复现步骤的 Bug 单)

  • 是否必现【必填】:是

  • 出现问题的手机信息【必填】:请填写出现问题的品牌和机型 小米10U

  • 出现问题的安卓版本【必填】:请填写出现问题的 Android 版本 12

请回答

  • 是部分机型还是所有机型都会出现【必答】:部分/全部(例如:某为,某 Android 版本会出现) 未测试其他机型

  • 框架最新的版本是否存在这个问题【必答】:是/否(如果用的是旧版本的话,建议升级看问题是否还存在) 是

  • 是否已经查阅框架文档还未能解决的【必答】:是/否(文档会提供最常见的问题解答,可以看看是否有自己想要的) 是

  • issue 是否有人曾提过类似的问题【必答】:是/否(看看曾经有人提过类似的问题,先参考一下别人是怎么解决的)无

  • 是否可以通过 Demo 来复现该问题【必答】:是/否(排查一下是不是自己的项目代码写得有问题导致的)是

  • 使用原生的 shape.xml 来实现是否也会出现该问题【必答】:是/否(排查一下是不是框架的代码存在问题导致的)

其他

  • 提供报错堆栈(如果有报错的话必填,注意不要拿被混淆过的代码堆栈上来)

  • 提供截图或视频(根据需要提供,此项不强制)

  • <com.hjq.shape.layout.ShapeRelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/srl_item"
    android:layout_width="wrap_content"
    android:layout_height="32dp"
    android:minWidth="60dp"
    android:paddingLeft="21dp"
    android:paddingRight="21dp"
    app:shape_radius="5dp"
    app:shape_strokeColor="#CFD7E6"
    app:shape_strokeWidth="1dp"/>

if (!carPictureBean.isSelected) {
itemBinding.srlItem.shapeDrawableBuilder.setStrokeWidth(1.dp.toInt())
.setStrokeColor("#CFD7E6".toColorInt()).intoBackground()
itemBinding.srlCorrect.isVisible = false
} else {
itemBinding.srlItem.shapeDrawableBuilder.setStrokeWidth(2.dp.toInt())
.setStrokeColor("#000000".toColorInt()).intoBackground()
itemBinding.srlCorrect.isVisible = true
}

我的布局设置为了宽度自适应 但是有个最小值为60dp 布局用作在rv上,通过点击item我动态给布局加上边框 整个布局就直接撑满了
e686a64a05504fb48be9c5752327ae8
a542485497e3867c265e2ca33e68ccb

  • 提供解决方案(如果已经解决了的话,此项不强制)

代码设置shapeDrawableBuilder.solidColor无效果

`val llybg=holder.getView(R.id.lly_item_bg)

            if (item.isChecked){
                llybg.shapeDrawableBuilder.solidColor = context.resources.getColor(R.color.color_FFF8E5)
                holder.setTextColor(R.id.tv_item_title,context.resources.getColor(R.color.color_FFBB00))

            }else{
                llybg.shapeDrawableBuilder.solidColor = context.resources.getColor(R.color.color_F8F8F8)
                holder.setTextColor(R.id.tv_item_title,context.resources.getColor(R.color.color_242925))
            }`

ShapeFrameLayout使用shape_solidDisabledColor的时候好像没效果

建议收集

  • issue 是否有人曾提过类似的问题?(必答项,一旦出现重复提问我将不会再次解答)
  • 你觉得框架有什么不足之处?(必答项,你可以描述框架有什么令你不满意的地方)
    ShapeFrameLayout使用shape_solidDisabledColor的时候好像没效果,enabled已设为false
  • 你觉得该怎么去完善会比较好?(非必答项,你可以提供一下自己的想法或者做法供作者参考)
    看下是否可以支持

使用ShapeRelativeLayout的时候给布局设置宽度为wrap_content minWidth="60dp" 通过代码修改该布局的setStrokeWidth和setStrokeColor 布局宽度会直接撑满

【警告:请务必按照 issue 模板填写,不要抱有侥幸心理,一旦发现 issue 没有按照模板认真填写,一律直接关闭】

问题描述

  • 框架版本【必填】:8.3

  • 问题描述【必填】:使用ShapeRelativeLayout的时候给布局设置宽度为wrap_content minWidth="60dp" 通过代码修改该布局的setStrokeWidth和setStrokeColor 布局宽度会直接撑满

  • 复现步骤【必填】:给ShapeRelativeLayout设置最小宽度 再通过代码修改边框和(注意:目前不受理没有复现步骤的 Bug 单)

  • 是否必现【必填】:填是/否 是

  • 出现问题的手机信息【必填】:请填写出现问题的品牌和机型 小米10u

  • 出现问题的安卓版本【必填】:请填写出现问题的 Android 版本 android 12

请回答

  • 是部分机型还是所有机型都会出现【必答】:部分/全部(例如:某为,某 Android 版本会出现)所有

  • 框架最新的版本是否存在这个问题【必答】:是/否(如果用的是旧版本的话,建议升级看问题是否还存在)是

  • 是否已经查阅框架文档还未能解决的【必答】:是/否(文档会提供最常见的问题解答,可以看看是否有自己想要的)是

  • issue 是否有人曾提过类似的问题【必答】:是/否(看看曾经有人提过类似的问题,先参考一下别人是怎么解决的)否

  • 是否可以通过 Demo 来复现该问题【必答】:是/否(排查一下是不是自己的项目代码写得有问题导致的)是

  • 使用原生的 shape.xml 来实现是否也会出现该问题【必答】:是/否(排查一下是不是框架的代码存在问题导致的)否

其他

  • 提供报错堆栈(如果有报错的话必填,注意不要拿被混淆过的代码堆栈上来)

  • 提供截图或视频(根据需要提供,此项不强制)

a542485497e3867c265e2ca33e68ccb
e686a64a05504fb48be9c5752327ae8

  • 提供解决方案(如果已经解决了的话,此项不强制)

ShapeConstraintLayout设置了shape_radius不会作用到子view

ShapeConstraintLayout设置了shape_radius,父容器里包含了一个ImageView,但是图片并没有被按照预想的被应用父容器设置的radius。

代码如下:
<com.hjq.shape.layout.ShapeConstraintLayout
android:id="@+id/first"
android:layout_width="124dp"
android:layout_height="124dp"
android:padding="1dp"
app:shape_solidColor="@color/theme_color"
android:layout_marginTop="@dimen/dimen_20"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/title"
app:shape_radius="@dimen/dimen_14">

            <com.hjq.shape.view.ShapeImageView
                android:id="@+id/iv_first"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:scaleType="centerCrop"
                android:src="@mipmap/tj" />

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@mipmap/icon_ghph_normal"
                app:layout_constraintBottom_toBottomOf="@+id/iv_first"
                app:layout_constraintEnd_toEndOf="@+id/iv_first" />

        </com.hjq.shape.layout.ShapeConstraintLayout>

设置 solidColor 颜色后,如何动态 删除solidColor 设置呢

设置 solidColor 颜色后,如何动态 删除solidColor 设置呢

  • 框架版本【必填】:v8.3

  • 问题描述【必填】:有个需求选中时设置了 solidColor,想取消选中时,删除 solidColor,不知道使用哪个api 删除

  • 复现步骤【必填】:列表 点击

  • 是否必现【必填】:是

  • 出现问题的手机信息【必填】:所有手机

  • 出现问题的安卓版本【必填】:所有版本

设置的渐变方向无效

【警告:请务必按照 issue 模板填写,不要抱有侥幸心理,一旦发现 issue 没有按照模板认真填写,一律直接关闭】

问题描述

  • 框架版本【必填】:8.5

  • 问题描述【必填】:设置为垂直渐变,但显示出来始终是水平方向的渐变

                      <com.hjq.shape.layout.ShapeRelativeLayout
                          android:layout_width="match_parent"
                          android:layout_height="@dimen/dp_250"
                          app:shape_textGradientOrientation="vertical"
                          app:shape_endColor="@color/white"
                          app:shape_startColor="@color/fill_2_color"
                          />
    

请回答

  • 是部分机型还是所有机型都会出现【必答】:只测试了华为Mata 40

  • 框架最新的版本是否存在这个问题【必答】:最新

  • 是否已经查阅框架文档还未能解决的【必答】:是

  • issue 是否有人曾提过类似的问题【必答】:是/否(看看曾经有人提过类似的问题,先参考一下别人是怎么解决的)

  • 是否可以通过 Demo 来复现该问题【必答】:是/否(排查一下是不是自己的项目代码写得有问题导致的)

  • 使用原生的 shape.xml 来实现是否也会出现该问题【必答】:是/否(排查一下是不是框架的代码存在问题导致的)

其他

  • 提供报错堆栈(如果有报错的话必填,注意不要拿被混淆过的代码堆栈上来)

  • 提供截图或视频(根据需要提供,此项不强制)

  • 提供解决方案(如果已经解决了的话,此项不强制)

UI样式建议

【警告:请务必按照 issue 模板填写,不要抱有侥幸心理,一旦发现 issue 没有按照模板认真填写,一律直接关闭】

建议收集

  • issue 是否有人曾提过类似的问题?【必答】否

  • 框架文档是否有提及到此问题?【必答】:否

  • 你觉得框架有什么不足之处?【必答】
    image
    如图 右上角的三角形样式 ,该框架无法shape出来,建议增加样式

能否考虑支持foreground?

有个对ImageView加遮罩的需求,我用的ShapeImageView,如果加一层ShapeFrameLayout之类的,略显繁琐了,如果能直接支持foreground相关属性就完美了,希望作者大大能考虑下,谢谢。

ShapeFrameLayout使用shape_solidDisabledColor的时候好像没效果,enable已设为false

问题描述

  • 框架版本:6.2

  • 问题描述:ShapeFrameLayout使用shape_solidDisabledColor的时候好像没效果,enable已设为false

  • 复现步骤:ShapeFrameLayout使用shape_solidDisabledColor,enable设为false

  • 是否必现:是

  • 手机信息:xiaomi8 se / Android 10

请回答

  • 是部分机型还是所有机型都会出现:全部

  • 框架最新的版本是否存在这个问题:是

  • 是否已经查阅框架文档还未能解决的:是

  • issue 是否有人曾提过类似的问题:否

  • 是否可以通过 Demo 来复现该问题:是

  • 使用原生的 shape.xml 来实现是否也会出现该问题:否

其他

  • 提供报错堆栈(如果有报错的话必填)

  • 提供截图或视频(根据需要提供,此项不强制)

  • 提供解决方案(如果已经解决了的话,此项不强制)

渐变色背景和纯色背景切换异常

【警告:请务必按照 issue 模板填写,不要抱有侥幸心理,一旦发现 issue 没有按照模板认真填写,一律直接关闭】

问题描述

  • 框架版本【必填】:8.3

  • 问题描述【必填】:纯色背景切换为渐变色的时候正常,反切换的时候就出现了异常 无法切换为纯色背景

  • 复现步骤【必填】:首先通过xml设置纯色背景,然后再代码中设置为渐变色背景最后再切换会纯色背景就无法切换成功
    if (isShow) {
    shapeButton.getShapeDrawableBuilder()
    .setSolidGradientColors(0xFFFFFFF, 0xFF000000)
    .intoBackground();
    } else {
    shapeButton.getShapeDrawableBuilder()
    .setSolidColor(0xFF000000)
    .intoBackground();
    }

  • 是否必现【必填】:是

  • 出现问题的手机信息【必填】:红米k30 vivo v1838A

  • 出现问题的安卓版本【必填】:android 12以及android 11

请回答

  • 是部分机型还是所有机型都会出现【必答】:全部

  • 框架最新的版本是否存在这个问题【必答】:是

  • 是否已经查阅框架文档还未能解决的【必答】:是

  • issue 是否有人曾提过类似的问题【必答】:否

  • 是否可以通过 Demo 来复现该问题【必答】:是

  • 使用原生的 shape.xml 来实现是否也会出现该问题【必答】:否

其他

  • 提供报错堆栈(如果有报错的话必填,注意不要拿被混淆过的代码堆栈上来)

  • 提供截图或视频(根据需要提供,此项不强制)

  • 提供解决方案(如果已经解决了的话,此项不强制)

请严格按照 issue 模板来提问题,否则一律不受理

最近发现有很多人给我提 issue 没有认真按照模板上面的来填写,导致了在排查问题的过程中浪费了作者许多不必要的时间和精力,所以请后面提 issue 的人务必严格遵守,否则我不会受理,直接关闭 issue。

增加独立边框线的建议

在开发中,有碰到textView、editView只有底部等单边画上边框线,其它三边不用加,可不可以增加属性来设置左边,右边,上边,下边边框线独立设置有没有,或者不同颜色。

ShapeFrameLayout使用shape_solidDisabledColor的时候好像没效果

问题描述

  • 框架版本:6.2

  • 问题描述:ShapeFrameLayout使用shape_solidDisabledColor的时候好像没效果,enable已设为false

  • 复现步骤:在ShapeFrameLayout使用shape_solidDisabledColor

  • 是否必现:是

  • 手机信息:小米 8se / Android 10

请回答

  • 是部分机型还是所有机型都会出现:部分/全部(例如:某为,某 Android 版本会出现)
    全部
  • 框架最新的版本是否存在这个问题:是/否(如果用的是旧版本的话,建议升级看问题是否还存在)
  • 是否已经查阅框架文档还未能解决的:是/否(文档会提供最常见的问题解答,可以看看是否有自己想要的)
  • issue 是否有人曾提过类似的问题:是/否(看看曾经有人提过类似的问题,先参考一下别人是怎么解决的)
  • 是否可以通过 Demo 来复现该问题:是/否(排查一下是不是自己的项目代码写得有问题导致的)
  • 使用原生的 shape.xml 来实现是否也会出现该问题:是/否(排查一下是不是框架的代码存在问题导致的)

其他

  • 提供报错堆栈(如果有报错的话必填)

  • 提供截图或视频(根据需要提供,此项不强制)

  • 提供解决方案(如果已经解决了的话,此项不强制)

使用ShapeConstraintLayout 以及 ShapeView 设置阴影的时候 阴影区域会全黑

问题描述

  • 框架版本【必填】:8.2

  • 问题描述【必填】:使用ShapeConstraintLayout 以及 ShapeView 设置阴影的时候 阴影区域会全黑

  • 复现步骤【必填】:XXX

  • 是否必现【必填】:是

  • 出现问题的手机信息【必填】:OPPO R11s 2017年11月份发布的手机 也确实有点老了 但是还能做调试机

  • 出现问题的安卓版本【必填】:8.1.0

请回答

  • 是部分机型还是所有机型都会出现【必答】:部分 目前仅OPPO R11s 但不确定OPPO其他机型有没有问题

  • 框架最新的版本是否存在这个问题【必答】:是

  • 是否已经查阅框架文档还未能解决的【必答】:是

  • issue 是否有人曾提过类似的问题【必答】:否

  • 是否可以通过 Demo 来复现该问题【必答】:是

  • 使用原生的 shape.xml 来实现是否也会出现该问题【必答】:否

其他

  • 提供截图或视频(根据需要提供,此项不强制)
            <com.hjq.shape.layout.ShapeConstraintLayout
                android:layout_width="match_parent"
                android:id="@+id/cl_test"
                android:layout_marginStart="10dp"
                android:layout_marginEnd="10dp"
                app:shape_shadowSize="6dp"
                app:shape_shadowColor="@color/shadowColor"
                app:shape_solidColor="@color/white"
                app:layout_constraintTop_toBottomOf="@id/cl_top"
                android:layout_height="100dp"/>

1657177160717

图片是真机通过scrcpy接到电脑的 不是模拟器 是真机调试

  • 提供解决方案(如果已经解决了的话,此项不强制)
    !!! 不是解决方案 但是发现 只需要加上 一点点圆角 哪怕是1dp 阴影就正常了 但是圆角也存在了 还是有些小问题
    image
    通过android studio 预览直接就能看到 黑边 加上1dp的圆角 黑边马上就消失了 可能跟oppo的系统也没多大关系

ShapeRecyclerView 使用shape_shadowSize页面错乱

【警告:请务必按照 issue 模板填写,不要抱有侥幸心理,一旦发现 issue 没有按照模板认真填写,一律直接关闭】

问题描述

  • 框架版本【必填】:com.github.getActivity:ShapeView:8.0 8.2 ShapeView-8.3.aar

  • 问题描述【必填】:使用shape_shadowSize页面会错乱, RecyclerView内容超出, 数据量小不明显,稍微多一些会看到内容从最底部滑动上去, 可看视频

  • 复现步骤【必填】:只需要在代码中注释shape_shadowSize即可看到区别

  • 是否必现【必填】:是

  • 出现问题的手机信息【必填】:华为Mate10 Mate30pro

  • 出现问题的安卓版本【必填】:Android10

请回答

  • 是部分机型还是所有机型都会出现【必答】:不确定

  • 框架最新的版本是否存在这个问题【必答】:是

  • 是否已经查阅框架文档还未能解决的【必答】:是

  • issue 是否有人曾提过类似的问题【必答】:否

  • 是否可以通过 Demo 来复现该问题【必答】:是

  • 使用原生的 shape.xml 来实现是否也会出现该问题【必答】:否

其他

  • 提供截图或视频(根据需要提供,此项不强制)
1658568871362207.mp4
1658568867150022.mp4
  • 提供解决方案(如果已经解决了的话,此项不强制)

image

只需要去除app:shape_shadowSize="@dimen/dp_10"即可

设置了背景线性渐变后,阴影效果就会失效了?这是互斥的原因吗?

代码如下
<com.hjq.shape.view.ShapeTextView
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_margin="10dp"
android:gravity="center"
android:padding="10dp"
android:text="垂直线性渐变"
android:textColor="@android:color/black"
android:textSize="14sp"
app:shape="rectangle"
app:shape_angle="90"
app:shape_endColor="#ffdff8f0"
app:shape_startColor="#fff7fefe"
app:shape_shadowSize="9dp"
app:shape_shadowColor="#50000000"
app:shape_shadowOffsetX="5dp"
app:shape_shadowOffsetY="5dp"
app:shape_topLeftRadius="12dp"
app:shape_topRightRadius="12dp"
app:shape_bottomRightRadius="12dp"
app:shape_bottomLeftRadius="0dp"
/>

使用阴影和不使用阴影的view大小不一致

问题描述

  • 框架版本【必填】:8.2

  • 问题描述【必填】:使用阴影和不使用阴影的view大小不一致框架的阴影很方便 但是在开发中遇到一个,比如一个view是宽180dp高200dp UI图上是20dp的阴影宽度 所以我在写布局的时候 高宽各加了 阴影宽度x2 ,但实际效果出来 不用阴影的180dp 200dp画出来的view 比用阴影180dp+ 20x2 200dp+20x2 画出来的要大一些,我想确认在用阴影的时候是不是我这样去计算增加view的高宽,理论上这样计算阴影的view画出来的应该和不带阴影的是一个大小,我指的是不含阴影处

  • 复现步骤【必填】:XXX

  • 是否必现【必填】:是

  • 出现问题的手机信息【必填】:小米10

  • 出现问题的安卓版本【必填】:12

请回答

  • 是部分机型还是所有机型都会出现【必答】:全部

  • 框架最新的版本是否存在这个问题【必答】:是

  • 是否已经查阅框架文档还未能解决的【必答】:是

  • issue 是否有人曾提过类似的问题【必答】:是)

  • 是否可以通过 Demo 来复现该问题【必答】:是

  • 使用原生的 shape.xml 来实现是否也会出现该问题【必答】:否

其他

  • 提供报错堆栈(如果有报错的话必填,注意不要拿被混淆过的代码堆栈上来)

  • 提供截图或视频(根据需要提供,此项不强制)

image
image

  • 提供解决方案(如果已经解决了的话,此项不强制)

implementation ShapeView后,编译出现AAPT错误。

我的工程只要添加ShapeView库,编译出现以下出错,不得解:

xxx\src\main\res\values\strings.xml:1238:5-115: AAPT: warn: multiple substitutions specified in non-positional format; did you mean to add the formatted="false" attribute?.

去除ShapeView即编译正常。

建议提供EditText的支持

设计师给的UI有的EditText的背景是矩形的,有的是两边是圆形的,看着您实现的TextView挺像,但无法直接用。 最好可以有个类产出是Drawable。 这样EditText设置下background就可以实现不同的形状了。

只是建议哈,如有实现难度,请忽略。

关于阴影问题请教

问题描述

  • 框架版本【必填】:8.0

  • 问题描述【必填】:阴影

  • 复现步骤【必填】:XXX

  • 是否必现【必填】:填是/否

  • 出现问题的手机信息【必填】:请填写出现问题的品牌和机型

  • 出现问题的安卓版本【必填】:请填写出现问题的 Android 版本

请回答

  • 是部分机型还是所有机型都会出现【必答】:部分/全部(例如:某为,某 Android 版本会出现)

  • 框架最新的版本是否存在这个问题【必答】:是/否(如果用的是旧版本的话,建议升级看问题是否还存在)

  • 是否已经查阅框架文档还未能解决的【必答】:是/否(文档会提供最常见的问题解答,可以看看是否有自己想要的)

  • issue 是否有人曾提过类似的问题【必答】:是/否(看看曾经有人提过类似的问题,先参考一下别人是怎么解决的)

  • 是否可以通过 Demo 来复现该问题【必答】:是/否(排查一下是不是自己的项目代码写得有问题导致的)

  • 使用原生的 shape.xml 来实现是否也会出现该问题【必答】:是/否(排查一下是不是框架的代码存在问题导致的)

框架的阴影很方便 但是在开发中遇到一个,比如一个view是宽180dp高200dp UI图上是20dp的阴影宽度 所以我在写布局的时候 高宽各加了 阴影宽度x2 ,但实际效果出来 不用阴影的180dp 200dp画出来的view 比用阴影180dp+ 20x2 200dp+20x2 画出来的要大一些,我想确认在用阴影的时候是不是我这样去计算增加view的高宽,理论上这样计算阴影的view画出来的应该和不带阴影的是一个大小,我指的是不含阴影处

其他

  • 提供报错堆栈(如果有报错的话必填,注意不要拿被混淆过的代码堆栈上来)

  • 提供截图或视频(根据需要提供,此项不强制)

image
image

  • 提供解决方案(如果已经解决了的话,此项不强制)

迁移至androidx

建议收集

官方已不再升级和维护support库,gradle.properties 若是不配置android.useAndroidX=true android.enableJetifier=true 则无法使用ShapeTextView等控件

ShapeTextview不支持drawable的位置

想要有类似下面的属性

icon_normal_left/right/top/bottom 图标 未选中 各方向
icon_checked_left/right/top/bottom 图标 选中 各方向
类似于Textview有drawLeft一样,你和这个好像不支持

无效果

【警告:请务必按照 issue 模板填写,不要抱有侥幸心理,一旦发现 issue 没有按照模板认真填写,一律直接关闭】

问题描述

在 targetSdk 32 版本中,kotlin,设置圆角属性无效

  • 框架版本【必填】:XXX
    ShapeView:8.5'
  • 问题描述【必填】:XXX

没有生效

  • 复现步骤【必填】:XXX(注意:目前不受理没有复现步骤的 Bug 单)
    引用控件
  • 是否必现【必填】:填是/否

  • 出现问题的手机信息【必填】:请填写出现问题的品牌和机型
    oppo A32
  • 出现问题的安卓版本【必填】:请填写出现问题的 Android 版本
    11
  • 问题信息的来源渠道【必填】:请填写问题的来源(例如:自己遇到的/Bugly 看到的/用户反馈等等)
    自己遇到的

请回答

  • 是部分机型还是所有机型都会出现【必答】:部分/全部(例如:某为,某 Android 版本会出现)

  • 框架最新的版本是否存在这个问题【必答】:是/否(如果用的是旧版本的话,建议升级看问题是否还存在)

  • 是否已经查阅框架文档还未能解决的【必答】:是/否(文档会提供最常见的问题解答,可以看看是否有自己想要的)

  • issue 是否有人曾提过类似的问题【必答】:是/否(看看曾经有人提过类似的问题,先参考一下别人是怎么解决的)

  • 是否可以通过 Demo 来复现该问题【必答】:是/否(排查一下是不是自己的项目代码写得有问题导致的)

  • 使用原生的 shape.xml 来实现是否也会出现该问题【必答】:是/否(排查一下是不是框架的代码存在问题导致的)

其他

  • 提供报错堆栈(如果有报错的话必填,注意不要拿被混淆过的代码堆栈上来)

  • 提供截图或视频(根据需要提供,此项不强制)

  • 提供解决方案(如果已经解决了的话,此项不强制)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.