这一篇 是上一篇的升级版 ,可以实现多行跑马灯效果,
主要解决了在焦点抢占导致的事件冲突问题
MainActivity

package com.android.marquee;import android.support.v7.app.AlertDialog;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }    public void alertDialog(View view){        AlertDialog.Builder alertDialog=new AlertDialog.Builder(this);        alertDialog.setTitle("弹框一");        alertDialog.setMessage("弹框二");        alertDialog.show();    }}

自定义控件MarqueeView,解决焦点抢占导致的事件冲突问题

package com.android.marquee;import android.content.Context;import android.graphics.Rect;import android.text.TextUtils;import android.util.AttributeSet;/** * date:2018/11/12 * author:李壮(HUAWEI) * function:自定义控件 */public class MarqueeView extends android.support.v7.widget.AppCompatTextView {    public MarqueeView(Context context) {        this(context,null);    }    public MarqueeView(Context context, AttributeSet attrs) {        this(context, attrs,0);    }    public MarqueeView(Context context, AttributeSet attrs, int defStyleAttr) {        super(context, attrs, defStyleAttr);        //设置单行        setSingleLine();        //设置Ellipsize        setEllipsize(TextUtils.TruncateAt.MARQUEE);        //获取焦点        setFocusable(true);        //走马灯的重复次数,-1代表无限重复        setMarqueeRepeatLimit(-1);        //强制获得焦点        setFocusableInTouchMode(true);    }    /*     *这个属性这个View得到焦点,在这里我们设置为true,这个View就永远是有焦点的     */    @Override    public boolean isFocused() {        return true;    }    /*     * 用于EditText抢注焦点的问题     * */    @Override    protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {        if (focused) {            super.onFocusChanged(focused, direction, previouslyFocusedRect);        }    }    /*     * Window与Window间焦点发生改变时的回调     * */    @Override    public void onWindowFocusChanged(boolean hasWindowFocus) {        if (hasWindowFocus)            super.onWindowFocusChanged(hasWindowFocus);    }}

布局文件

<?xml version="1.0" encoding="utf-8"?>    

这下我们就可以实现多行跑马灯效果的实现

更多相关文章

  1. Tab控件 笔记
  2. Android 工程混淆后无法找到自定义控件类的解决方案
  3. Android中的常用控件
  4. 系出名门Android(8) - 控件(View)之TextSwitcher, Gallery...
  5. 【Android UI控件】EditText属性大全,TextView属性大全
  6. Android 控件使用之SlidingDrawer
  7. Android利用drawable文件夹自定义控件背景、样式
  8. Android EditText自动获取焦点并弹出软键盘,解决EditText在获取

随机推荐

  1. Sping Boot入门到实战之实战篇(二):一些常用
  2. Java学习(三)面向对象之多态
  3. 将嵌入式DB与远程DB同步
  4. 我在Java中组织这些if语句时遇到了很多麻
  5. java与ASP.NET网络应用程序在生命期开始
  6. 怎样用java生成GUID与UUID
  7. 怎么用java 实现两个web service之间调用
  8. Java IO流系列(四)—— 从字节流及其缓冲区
  9. java8中lambda表达式
  10. FilenameFilter文件名过滤器使用实例