自定义textview 实现按下时文本和图片放大1.2倍 onDraw方法中使用到的一些画笔draw形状的总结

https://www.jb51.net/article/121876.htm

 

 

https://www.cnblogs.com/yishujun/p/5556145.html

 

  onDraw方法中用到的画笔draw的形状等等:https://www.cnblogs.com/hwgt/p/5416866.html

 

TextView:

它继承了TextView,实现了按下、及获取到焦点时背景和文字放大1.2倍。

  1. 先在values目录下创建自定义属性的XML,如attrs.xml等等,在其中写自定义的属性。

自定义textview 实现按下时文本和图片放大1.2倍 onDraw方法中使用到的一些画笔draw形状的总结_第1张图片

 

2. 在layout布局文件中使用自定义属性

首先必须在布局文件文件头部添加蓝色部分的声明(styles是自定义属性集所在的XML的名字)

        

 

      接着,在布局文件中使用自定义属性

       自定义textview 实现按下时文本和图片放大1.2倍 onDraw方法中使用到的一些画笔draw形状的总结_第2张图片

 

3 .在构造方法中解析获取XML中自定义属性的值:正常字号tvTextSize和放

后的字号tVZoomTextSize。

自定义textview 实现按下时文本和图片放大1.2倍 onDraw方法中使用到的一些画笔draw形状的总结_第3张图片

 

解析得到的自定义属性值后,重写下面按下,焦点获取的方法,并在当中设置字号大小

 

 

 

按下状态

自定义textview 实现按下时文本和图片放大1.2倍 onDraw方法中使用到的一些画笔draw形状的总结_第4张图片

setPressed函数在控件被用户按下时会自动触发,不需要在代码中调用

 

 

 

获取到焦点状态:(专门给光标模式设计的)

自定义textview 实现按下时文本和图片放大1.2倍 onDraw方法中使用到的一些画笔draw形状的总结_第5张图片

之所以用isFocused函数是因为能监听到焦点变化,而且是控件会根据光标焦点变化自己调用该函数;而setFocusable只是设置能不能获得焦点,不能判定是否获得了焦点,用起来相对麻烦。

 

 

 

定义view中重写的函数的使用:

    函数isFocused和setPressed都会自动调用。即初始化自定义控件即可

 

        

你可能感兴趣的:(Android,View)