简介
开发中在界面的搭建阶段,最让我感到恶心的就是按钮、背景样式的更改。比如说需要一个圆角矩形的按钮、需要一个描边的文字等等。这样的操作虽然不难,但是需要写大量的shape标签的xml文件,特别是当不仅包含shape,还包含selector标签的时候,往往一个圆角矩形按钮,就需要好几个xml文件。而且在项目中不同的颜色、不同的样式也都需要重新写这样的shape文件,这样往往会降低开发的效率。很早以前就有人为了解决这个问题了,写了一套自定义控件flyco.roundView。在使用了一段时间后,为了解决新的问题,我在roundView上新增了部分功能。在Shape部分主要讲解RoundView的简单使用,也会提到折叠TextView等常用自定义控件。
示例
Roundview分为RoundTextView、RoundLinearLayout、RoundRelativeLayout、RoundFrameLayout这几个常用View,他们的基本使用方法都是一样的。圆角矩形按钮:
<com.flyco.roundview.RoundTextView
android:id="@+id/rtv_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/size_8"
android:layout_marginRight="@dimen/size_8"
android:layout_marginTop="@dimen/size_8"
android:gravity="center"
android:paddingBottom="@dimen/size_12"
android:paddingTop="@dimen/size_12"
android:textColor="@color/colorFont33"
app:rv_backgroundColor="@color/white"
app:rv_cornerRadius="@dimen/size_4"
></com.flyco.roundview.RoundTextView>
选中和未选中shape切换:
app:rv_textPressColor="@color/white"
app:rv_textSelectedColor="@color/white"
按下和未按下shape切换:
app:rv_backgroundPressColor="@color/deeporange500"
app:rv_backgroundSelectedColor="@color/deeporange500"
描边和描边颜色切换:
app:rv_strokeWidth="@dimen/size_2"
app:rv_strokeColor="@color/accentPress"
使用RoundView几乎可以解决开发中常见的关于shape设置的问题。
在平时开发中还有一个比较常用的控件就是CollapsedTextView。CollapsedTextView可以设置折叠的字数、设置提示文字颜色等、提示文字等。基本使用如下:
<com.yuan.basemodule.common.view.CollapsedTextView
android:id="@+id/ctv_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="0.8dp"
android:background="@android:color/white"
android:paddingBottom="16dp"
android:paddingLeft="@dimen/size_16"
android:paddingRight="@dimen/size_16"
android:paddingTop="16dp"
android:text="修改折叠World!"
android:textSize="@dimen/size_16"
app:ctv_textNum="110"
app:ctv_tipsColor="@color/colorPrimary" />
快速开发
开发中除了可以使用Roundview提高开发效率之外,还可以使用style来提高开发效率。如果是一个套app的ui设计在设计之初就确定几个主题色、一些固定样式、固定大小的设计。这时候,我们可以通过提取公共部分写成style,在搭建布局文件时也能明显提高开发效率。举个例子,在开发中我们经常需要横向的细线、纵向的细线,例如:<!-- 横向线条 -->
<style name="w_line">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">0.8dp</item>
<item name="android:background">@color/colorDivider</item>
</style>
<!-- 纵向线条 -->
<style name="h_line">
<item name="android:layout_width">0.8dp</item>
<item name="android:layout_height">match_parent</item>
<item name="android:background">@color/colorDivider</item>
</style>
在同一个app的ui设计中,类似按钮的形状等,都应该保持一致,所以我建议这样的公共部分,我们都可以使用style的方式来实现,也方便以后做统一的修改。trucK中base部分,在value文件夹中对常用的dimen、style、color等都做了一个整理,方便开发的时候快速实现想要的样式。
最后附上truck快速开发交流qq群:698442320