Skip to content

Commit

Permalink
修改阴影的实现方式
Browse files Browse the repository at this point in the history
新增支持 Shape 线条的方向
新增适配 LayoutDirection 特性
  • Loading branch information
getActivity committed Jun 26, 2022
1 parent 784e712 commit 3f531eb
Show file tree
Hide file tree
Showing 32 changed files with 770 additions and 551 deletions.
24 changes: 12 additions & 12 deletions .github/ISSUE_TEMPLATE/issue_template_bug.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,31 +8,31 @@ assignees: getActivity

## 问题描述

* 框架版本:XXX
* 框架版本【必填】:XXX

* 问题描述:XXX
* 问题描述【必填】:XXX

* 复现步骤:XXX
* 复现步骤【必填】:XXX

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

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

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

## 请回答

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

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

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

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

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

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

## 其他

Expand Down
6 changes: 3 additions & 3 deletions .github/ISSUE_TEMPLATE/issue_template_suggest.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ assignees: getActivity

## 建议收集

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

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

* 你觉得该怎么去完善会比较好?(非必答项,你可以提供一下自己的想法或者做法供作者参考)
* 你觉得该怎么去完善会比较好?【非必答】(你可以提供一下自己的想法或者做法供作者参考)
16 changes: 12 additions & 4 deletions HelpDoc.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,22 @@
## 常见疑问解答

#### 为什么我调用 setXxx 没有生效?

* 如果设置的是 Shape、阴影、背景状态选择器的属性,需要调用 `intoBackground` 方法才能生效

* 如果设置的是文字颜色及状态选择器的属性,需要调用 `intoTextColor` 方法才能生效

* 如果设置的是 **CheckBox****RadioButton** 选中框的图标及状态选择器的属性,需要调用 `intoButtonDrawable` 方法才能生效

#### 框架入侵性太大怎么办?

* 框架上线有很多人说框架的侵入性很强?这点我必须承认,我也有看到网上也有用 `LayoutInflater.Factory` 来实现,这样入侵性很低,但是有一个致命的缺点,无法在布局中预览,这样你是不是突然就感觉不香了?入侵强当然有缺点也有优点,我不能光看它坏的一面,那样看待问题就太片面了,不过它的缺点并不是致命的,就好比你使用了一个自定义 View 叫 `XxxTextView`,这种情况下你肯定就没办法再使用 **ShapeTextView** 了,那么这种情况我们该这么办?解决方式大致分为两种:
* 框架上线有很多人说框架的侵入性很强?这点我必须承认,我也有看到网上也有用 `LayoutInflater.Factory` 或者 DataBinding 来实现,这样的入侵性低,但是有一个致命的缺点,无法在布局中预览,这样你是不是突然就感觉不香了?入侵强当然有缺点也有优点,我不能光看它坏的一面,那样看待问题就太片面了,不过它的缺点并不是致命的,就好比你使用了一个自定义 View 叫 `XxxTextView`,这种情况下你肯定就没办法再使用 **ShapeTextView** 了,那么这种情况我们该这么办?解决方式大致分为两种:

* 第一种可以用原生的 Shape 来实现,可以选择在 xml 定义或者代码动态设置的方式,这种方式大家应该都懂,这里不再多说,不过有一个问题,就是原生的 Shape 是不支持设置阴影的,如果你想要用阴影的话,就得用第二种方式。
* 第一种可以用原生的 Shape 来实现,可以选择在 xml 定义或者代码动态设置的方式,这种方式大家应该都懂,这里不再多说,不过有一个问题,就是原生的 Shape 是不支持设置阴影的,如果你想要用阴影的话,就得用第二种方式。

* 第二种就是用框架提供的 **ShapeDrawable** 类了,在 Java 代码中进行动态设置,这个类的用法其实很简单,在布局用哪个属性,在代码中就用哪个方法。
* 第二种就是用框架提供的 **ShapeDrawable** 类了,在 Java 代码中进行动态设置,这个类的用法其实很简单,在布局用哪个属性,在代码中就用哪个方法。

* 另外有一个需要注意的点,如果你自己单独使用 **GradientDrawable** 还是 **ShapeDrawable** 在 Java 代码动态设置的话,如果涉及到虚线或者阴影的话,经过验证在有些手机上面是无法生效的,必须要先关闭硬件加速才能生效,当然 **ShapeDrawable** 有对外开放 **intoBackground** 方法,这个方法会帮你判断是否需要关闭硬件加速。
* 另外有一个需要注意的点,如果你自己单独使用 **GradientDrawable** 还是 **ShapeDrawable** 在 Java 代码动态设置的话,如果涉及到虚线或者阴影的话,经过验证在有些手机上面是无法生效的,必须要先关闭硬件加速才能生效,当然 **ShapeDrawable** 有对外开放 **intoBackground** 方法,这个方法会帮你判断是否需要关闭硬件加速。

* 现在目前关于 Shape 的框架都无法十全十美,看个人怎么抉择了,无关好与坏,在享受框架优点的同时,也要学会忍受框架的缺点。

Expand Down
Loading

0 comments on commit 3f531eb

Please sign in to comment.