一个最最最简单的自定义控件(Textview)

简介: 简介:为实现一个界面中两个跑马灯效果,避免抢焦点问题,自定义了一个MyTextView类继承自TextView。通过重写`isFocused()`方法使其始终返回true,确保每个跑马灯都能正常滚动。在XML中使用自定义控件时,设置相关属性如`ellipsize="marquee"`、`focusable="true"`等,实现多跑马灯同时运行的效果。

要这样自定义控件的原因:
需求:一个界面两个跑马灯(在xml中实现)
Textview在xml文件中实现跑马灯,如果有两个跑马灯,则会出现抢焦点的现象,只会跑一个
解决方法:
自定义一个Textview,设置其自动获得焦点: isFocused();

实现具体如下:解释在注释里面

1.png

Java文件中代码:

public class MyTextView extends TextView {
    //在用代码创建的时候调用
    public MyTextView(Context context) {
        this(context, null);
    }

    //在识别XML的时候会调用此方法创建Textview,底层会用反射去AttribestSet去取属性值
    public MyTextView(Context context, @Nullable AttributeSet attrs) {
        this(context, attrs, 0);
    }

    //给第一个构造函数和第二个使用
    public MyTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    //解决一个问题,需要Textview天生获取焦点
    @Override
    public boolean isFocused() {
        return true;
    }
}
AI 代码解读

在xml文件中使用该控件:

    <yf.changsha.com.view.MyTextView
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:ellipsize="marquee"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:marqueeRepeatLimit="marquee_forever"
        android:singleLine="true"
        android:text="wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww" />

    <yf.changsha.com.view.MyTextView
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:ellipsize="marquee"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:marqueeRepeatLimit="marquee_forever"
        android:singleLine="true"
        android:text="wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww" />
AI 代码解读
相关文章
Android用Canvas画一个折线图,并加以简单封装
本文介绍了如何用Java绘制动态折线图,从固定折线图的实现到封装成可复用的组件。首先通过绘制XY坐标轴、添加坐标标签和绘制折线及数据点完成基础折线图。接着,将静态数据替换为动态输入,支持自定义X轴、Y轴和折线数据。代码中包含关键方法如`drawDaxes`(绘制坐标轴)、`drawAxispoint`(绘制坐标点)和`drawbrokenLine`(绘制折线)。最终实现可根据传入数据动态生成折线图,适用于Android开发中的数据可视化场景。
102 0
Android颜色渐变动画效果的实现
本文介绍了在Android中实现颜色渐变动画效果的方法,重点讲解了插值器(TypeEvaluator)的使用与自定义。通过Android自带的颜色插值器ArgbEvaluator,可以轻松实现背景色的渐变动画。文章详细分析了ArgbEvaluator的核心代码,并演示了如何利用Color.colorToHSV和Color.HSVToColor方法自定义颜色插值器MyColorEvaluator。最后提供了完整的源码示例,包括ColorGradient视图类和MyColorEvaluator类,帮助开发者更好地理解和应用颜色渐变动画技术。
ListView的setEmptyView方法
在Android开发中,`ListView`的`setEmptyView`方法用于设置数据为空时的提示视图。通过在XML中定义一个与`ListView`同级的提示视图,并调用`listview.setEmptyView(otherview)`即可实现。源码显示,该方法将提示视图赋值给成员变量`mEmptyView`,并通过判断适配器是否为空来切换`ListView`和`emptyView`的显示状态。若数据为空,则显示`emptyView`;否则显示`ListView`。这种方法简化了视图控制逻辑,使代码更加清晰整洁。
ListView的简单优化
本文介绍了通过使用`ViewHolder`模式优化`ListView`适配器的原理与实现。核心思想是创建一个容器(`ViewHolder`)来存储复用的`View`,减少`findViewById`的调用次数,从而提升性能。在`BaseAdapter`的`getView`方法中,通过判断`convertView`是否为空,决定是否需要重新初始化视图。如果`convertView`为空,则利用`LayoutInflater`加载布局并绑定`ViewHolder`到视图;否则直接从视图的标签中获取已有的`ViewHolder`。这种方式有效降低了资源消耗,提高了列表渲染效率。
Android自定义view之太极图
本文介绍了如何在Android中通过自定义View绘制太极图,并实现旋转动画效果。主要内容包括:使用Canvas绘制太极图案(半圆、小圆及点),定义自定义属性(颜色与动画速度),以及利用ObjectAnimator实现旋转动画。通过attrs文件配置属性,使View更具灵活性。代码详细分解了绘制步骤与动画逻辑,适合初学者了解自定义View开发流程。
Android用Canvas画一个真正能跑的跑马灯
这是一篇关于使用Canvas实现跑马灯效果的技术分享。作者通过一个简单的Demo,展示了如何利用Android的Canvas绘制动态跑马灯。核心思路是通过开启耗时线程让彩色背景旋转,结合坐标计算、渐变色绘制和旋转动画,最终实现动态视觉效果。代码分为三个主要部分:1) 计算View宽高与矩形坐标;2) 绘制背景、跑马灯及幕布;3) 设置旋转逻辑并反向调整幕布。文末附有完整Java代码及XML调用示例,适合初学者学习Canvas绘图原理。
Android线条等待动画JMWorkProgress(可添加依赖直接使用)
这是一篇关于Android线条等待动画JMWorkProgress的教程文章,作者计蒙将其代码开源至GitHub,提升可读性。文章介绍了如何通过添加依赖库使用该动画,并详细讲解了XML与Java中的配置方法,包括改变线条颜色、宽度、添加文字等自定义属性。项目已支持直接依赖集成(`implementation &#39;com.github.Yufseven:JMWorkProgress:v1.0&#39;`),开发者可以快速上手实现炫酷的等待动画效果。文末附有GitHub项目地址,欢迎访问并点赞支持!
77 26
Android使用DatePickerDialog显示时间
本示例展示了如何通过Android的Calendar类获取当前年月日,并使用DatePickerDialog实现日期选择功能。点击TextView弹出日期选择对话框,用户选择后更新显示。注意:Calendar.MONTH值从0开始,需加1修正。布局含一个TextView,Java代码完成日期获取、对话框创建与回调处理。
Java多线程基础
本文主要讲解多线程相关知识,分为两部分。第一部分涵盖多线程概念(并发与并行、进程与线程)、Java程序运行原理(JVM启动多线程特性)、实现多线程的两种方式(继承Thread类与实现Runnable接口)及其区别。第二部分涉及线程同步(同步锁的应用场景与代码示例)及线程间通信(wait()与notify()方法的使用)。通过多个Demo代码实例,深入浅出地解析多线程的核心知识点,帮助读者掌握其实现与应用技巧。
Android自定义view之线条等待动画(灵感来源:金铲铲之战)
本文介绍了一款受游戏“金铲铲之战”启发的Android自定义View——线条等待动画的实现过程。通过将布局分为10份,利用`onSizeChanged`测量最小长度,并借助画笔绘制动态线条,实现渐变伸缩效果。动画逻辑通过四个变量控制线条的增长与回退,最终形成流畅的等待动画。代码中详细展示了画笔初始化、线条绘制及动画更新的核心步骤,并提供完整源码供参考。此动画适用于加载场景,提升用户体验。
308 5
Android自定义view之线条等待动画(灵感来源:金铲铲之战)
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问