超级扩展的textview(让我们开启自定义之旅吧

本文介绍如何自定义一个类似朋友圈内容查看全部的TextView,通过继承LinearLayout,实现展开和折叠效果。讲解了自定义属性、测量方法、动画应用,并强调在onFinishInflate和onMeasure中的操作。文章提供了核心代码解析,并鼓励读者实践提升自定义控件技能。
摘要由CSDN通过智能技术生成

超级扩展的textview(让我们开启自定义之旅吧)

自定义已经家喻户晓了,自定义的实现有好几种,继承现有的控件,几种控件组合,继承view,其中继承view算是最难的啦,建议开始大家先继承现有的控件,其实自定义你完全理解了可以说so easy,但是对于刚起步的同学,感觉难是因为你们没去尝试,给自己定个小目标,每周写个自定义,自定义需要自己慢慢积累的,着急是来不了的,后期你会发现自定义,也就是位置的计算,这就考验大家的高中数学知识了,和大学里面的学的矩阵之类的。没好好学习是不是现在感觉后悔啦。。。。。。开玩笑一切可以弥补的啦.


现在看下效果图,类似朋友圈内容的查看全部。
展开前的
这里写图片描述
展开后的
这里写图片描述

喜欢或者需要的朋友可以继续往下面看———–

在项目res/values/下新建attrs.xml(当然其它名称也是可以的),在其中声明相关属性如下:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="SuperExpandableTextViewAttr">
        <!-- 默认情况下需要显示的最大行数 -->
        <attr name="maxExpandLines" format="integer"></attr>
        <!-- 一定距离下,动画的时候 -->
        <attr name="duration" format="integer"></attr>
    </declare-styleable>
</resources>

其中,attar的格式即单位有:dimension(尺寸)、boolean(布尔)、color(颜色)、enum(枚举)、flag(位或)、float(浮点)、fraction(百分比)、integer(整型)、reference(资源引用)、string(字符串)。
1.首先需要我们自定义下属性,但是属性在xml 运用的时候一定加入xmlns:app=”http://schemas.android.com/apk/res-auto要不然识别不了我们的属性&

简介欢迎使用SuperTextView,这篇文档将会向你展示如何使用这个控件来提高你构建项目的效率。CoverSuperTextView继承TextView,它能够大量的减少布局的复杂程度,并且使得一些常见的效果变得十分容易实现且高效。同时,它内置了动画驱动,你只需要合理编写Adjuster,然后startAnim()就可以看到预期的动画效果。它仅仅是一个控件,所以你可以不费吹灰之力的在你的项目中集成使用。特点你从此不必再为背景图编写和管理大量文件了。重新优化的状态图功能使得你能够精确的控制状态图的大小,以及在SuperTextView中的位置。支持设置圆角,并且能够精确的控制圆角位置。能够轻松的实现控件边框效果。支持文字描边,这使得空心文字效果成为了可能。内置动画驱动,你只需配合Adjuster合理的使用即可。Adjuster的出现,使得你对控件的绘制过程具有了掌控权,良好的设计使得它能够完美的实现绝大部分你脑海中的效果。使用指南支持的属性SuperTextView十分方便的支持在xml中直接设置属性,并且你能够立即看到效果。就像你平时使用TextView一样方便。<SuperTextView     android:layout_width="50dp"     android:layout_height="50dp"     //设置圆角。会同时作用于填充和边框(如果边框存在的话)。     //如果要设置为圆形,只需要把该值设置为宽或长的1/2即可。      app:corner="25dp"       //设置左上角圆角     app:left_top_corner="true"     //设置右上角圆角     app:right_top_corner="true"     //设置左下角圆角     app:left_bottom_corner="true"     //设置右下角圆角     app:right_bottom_corner="true"     //设置填充颜色     app:solid="@color/red"       //设置边框颜色     app:stroke_color="@color/black"       //设置边框的宽度。     app:stroke_width="2dp"      //放置一个drawable在背景层上。默认居中显示。     //并且默认大小为SuperTextView的一半。     app:state_drawable="@drawable/emoji"       //设置drawable的显示模式。可选值如下:     // left、top、right、bottom、center(默认值)、     //leftTop、rightTop、leftBottom、rightBottom、     //fill(充满整个SuperTextView,此时会使设置drawable的大小失效)     app:state_drawable_mode="center"      //设置drawable的height     app:state_drawable_height="30dp"     //设置drawable的width     app:state_drawable_width="30dp"     //设置drawble相对于基础位置左边的距离     app:state_drawable_padding_left="10dp"     //设置drawble相对于基础位置上边的距离     app:state_drawable_padding_top="10dp"     // boolean类型。是否显示drawable。     //如果你想要设置的drawable显示出来,必须设置为true。     //当不想让它显示时,再设置为false即可。     app:isShowState="true"      //是否开启文字描边功能。     //注意,启用这个模式之后通过setTextColor()设置的颜色将会被覆盖。     //你需要通过text_fill_color来设置文字的颜色。     app:text_stroke="true"      // 文字的描边颜色。默认为Color.BLACK。     app:text_stroke_color="@color/black"     // 文字描边的宽度。     app:text_stroke_width="1dp"     // 文
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值