`
qq986945193
  • 浏览: 84185 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

【Android】Android开发可以手动进行控制的跑马灯效果,包括从左到右,以及从右到左,

 
阅读更多

作者:程序员小冰,GitHub主页:https://github.com/QQ986945193
新浪微博:http://weibo.com/mcxiaobing
首先给大家看一下我们今天这个最终实现的效果图:
这里写图片描述
这个主要是用到的自定义TextView,然后里面开一个线程进行,进行滚动效果。
我这里写了两个自定义TextView,分别是从左到右,以及从右到左。利用滚动
的偏移量,进行设置滚动的位置。然后利用一个变量,进行区分是否是滚动状态。
我这里给大家看一下代码吧,只给大家看一下其中一个自定义View的。

package davidmarqueecontrolproject.qq986945193.davidmarqueecontrolproject;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.widget.TextView;

/**
 * @author :程序员小冰
 * @新浪微博 :http://weibo.com/mcxiaobing
 * @GitHub: https://github.com/QQ986945193
 * @CSDN博客: http://blog.csdn.net/qq_21376985
 * @码云OsChina :http://git.oschina.net/MCXIAOBING
 * <p/>
 * 从左到右 滚动自定义TextView
 */
public class AutoText extends TextView implements Runnable {
    private int currentScrollX;// 当前滚动的位置
    private boolean isStop = false;
    private int textWidth;
    private boolean isMeasure = false;

    public AutoText(Context context) {
        super(context);
        // TODO Auto-generated constructor stub
    }

    public AutoText(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public AutoText(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        // TODO Auto-generated method stub
        super.onDraw(canvas);
        if (!isMeasure) {// 文字宽度只需获取一次就可以了
            getTextWidth();
            isMeasure = true;
        }
    }

    /**
     * 获取文字宽度
     */
    private void getTextWidth() {
        Paint paint = this.getPaint();
        String str = this.getText().toString();
        textWidth = (int) paint.measureText(str);
    }

    // 重写setText 在setText的时候重新计算text的宽度
    @Override
    public void setText(CharSequence text, BufferType type) {
        // TODO Auto-generated method stub
        super.setText(text, type);
        this.isMeasure = false;
    }

    @Override
    public void run() {
        currentScrollX -= 2;// 滚动速度
        scrollTo(currentScrollX, 0);
        if (isStop) {
            return;
        }
        if (getScrollX() <= -(this.getWidth())) {
            scrollTo(textWidth, 0);
            currentScrollX = textWidth;
            // return;
        }
        postDelayed(this, 5);
    }

    // 开始滚动
    public void startScroll() {
        isStop = false;
        this.removeCallbacks(this);
        post(this);
    }

    // 停止滚动
    public void stopScroll() {
        isStop = true;
        // textWidth=currentScrollX; //随时停止
    }

    // 从头开始滚动
    public void startFor0() {
        currentScrollX = 0;
        startScroll();
    }
}

布局我就不写了,直接引用这个view就行了。然后java类中看一下吧,其实
也是直接调用它的方法。

package davidmarqueecontrolproject.qq986945193.davidmarqueecontrolproject;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;

import davidmarqueecontrolproject.qq986945193.davidmarqueecontrolproject.MarqueeText;
import davidmarqueecontrolproject.qq986945193.davidmarqueecontrolproject.R;
/**
 * @author :程序员小冰
 * @新浪微博 :http://weibo.com/mcxiaobing
 * @GitHub: https://github.com/QQ986945193
 * @CSDN博客: http://blog.csdn.net/qq_21376985
 * @码云OsChina :http://git.oschina.net/MCXIAOBING
 */
public class MainActivity extends Activity {
    private MarqueeText test;
    private AutoText auto_text;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        test = (MarqueeText) findViewById(R.id.test);
        auto_text = (AutoText) findViewById(R.id.auto_text);
    }

    public void start(View v) {
        test.startScroll();
//      auto_text.startScroll();
    }

    public void stop(View v) {
        test.stopScroll();
//      auto_text.stopScroll();
    }

    public void startFor0(View v) {
        test.startFor0();
//      auto_text.startFor0();
    }

}

好了。到此结束吧,不懂得请留言或者私信。源代码需要的可以去
(AndroidStudio版)github下载地址:
https://github.com/QQ986945193/DavidMarqueeControlProject

<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>
分享到:
评论

相关推荐

    Android文字跑马灯效果

    在Android开发中,"文字跑马灯效果"是一种常见的用户界面设计,主要用于显示较长的文本内容,当空间有限时,可以实现文本的自动循环滚动,给人一种动态的效果,类似传统电子显示屏上的跑马灯。这种效果通常用在通知...

    android多种方式实现垂直滚动和水平滚动跑马灯效果

    在Android开发中,跑马灯效果是一种常见的动态展示文本的方式,它可以吸引用户的注意力并增加界面的活力。本项目提供了一种灵活的方法来实现垂直滚动和水平滚动的跑马灯效果,适用于各种应用场景,如通知、广告展示...

    android TextView 跑马灯效果

    "跑马灯"效果,又称为滚动文字效果,是指当TextView中的文本长度超过控件宽度时,文本会从右向左自动循环滚动,就像跑马灯一样。这个效果在很多场景下都非常实用,比如通知栏消息、应用标题或者广告横幅等。 实现...

    android跑马灯效果,失去焦点也可以实现

    在Android开发中,"跑马灯"效果通常指的是TextView或者EditText的内容自动滚动,这种效果常见于通知栏消息、广告轮播等场景。标题提到的"android跑马灯效果,失去焦点也可以实现"意味着即使控件没有获取到焦点,仍然...

    android 跑马灯效果

    在Android开发中,跑马灯效果(也称为滚动文本或 marquee 效果)是一种常见的UI设计元素,常用于展示较长的文本,特别是在有限的显示空间内。这种效果能让文本像霓虹灯一样持续滚动,使得全部内容可以被用户看到。在...

    Android 跑马灯的实现(可控制速度)

    在Android开发中,跑马灯效果通常用于展示滚动文本,比如通知消息或者标题。这个实现不仅支持速度控制,还能处理文本长度超过屏幕宽度的情况,确保文本可以无缝滚动,提供优质的用户体验。下面我们将深入探讨如何在...

    android 跑马灯图片展示+10种切换特效

    在Android应用开发中,"跑马灯图片展示"是一种常见的动态效果,通常用于广告轮播、通知滚动等场景。跑马灯效果通过不断移动图片或文字来实现视觉上的连续滚动,给用户带来新颖的交互体验。本文将详细介绍如何利用`...

    Android 文字跑马灯和上下翻滚效果

    在Android开发中,实现文字跑马灯和上下翻滚效果是一种常见的动态视觉设计,主要用于吸引用户的注意力或展示滚动信息。跑马灯效果通常用于标题栏,而上下翻滚效果则常用于显示滚动通知或者更新信息。这两种动画效果...

    Android跑马灯效果实现

    在Android开发中,跑马灯效果通常指的是TextView或者TextView的子类实现的滚动文本效果,类似于LED显示屏上文字不断循环滚动的现象。这种效果在通知、提示或者广告展示等场景中非常常见。本教程将深入探讨如何在...

    老罗视频代码textview跑马灯效果

    【跑马灯效果】在Android开发中,通常指的是TextView中的滚动文字效果,也称为Marquee效果,这种效果会让过长的文字在控件宽度内不断滚动,就像跑马灯一样。在老罗的视频中,他可能讲解了如何通过代码实现这一效果。...

    android 自定义跑马灯

    在Android开发中,自定义跑马灯效果是一种常见的UI动态效果,常用于显示滚动文本,如广告栏、通知提示等。跑马灯效果通常是指文本或图片在一个固定区域里不断循环滚动,给人一种视觉上的连续性。本文将深入探讨如何...

    android跑马灯源码

    在Android开发中,跑马灯效果通常用于展示滚动文本,比如通知、广告或者标题等,它给用户带来一种动态连续的视觉体验。本资源提供的是Android跑马灯的实用源码,包含了三种不同的实现方式,适合对Android UI特效感...

    Android跑马灯实现的三种方式

    Android跑马灯实现的三种方式

    androidTextView实现跑马灯的效果

    标题和描述中提到的“跑马灯效果”是指在`TextView`中,当文本内容过长无法完全显示时,文本会从一侧滚动到另一侧,形成循环滚动的效果。这种效果在通知栏、广告条或者状态栏等场景中较为常见。 实现跑马灯效果的...

    跑马灯__android

    跑马灯效果在Android开发中通常指的是TextView的滚动效果,这是一种常见的UI动态效果,用于显示超过屏幕宽度的文本。在Android中实现跑马灯效果主要涉及到`android.widget_marquee`属性和`TextView`的设置。下面我们...

    Android 自定义ViewGroup实现整个Item布局竖直跑马灯效果

    在Android开发中,自定义ViewGroup是实现复杂布局和动画效果的重要手段。本文将深入探讨如何利用自定义ViewGroup来实现一个独特的“竖直跑马灯”效果,这种效果常见于各种信息展示或广告轮播场景,使得内容能沿着...

    Android 实现水平、垂直方向文字跑马灯效果demo

    Android 实现水平、垂直方向文字跑马灯效果demo

    android三种方式实现TextView跑马灯效果

    在Android开发中,为TextView添加跑马灯效果是一种常见的需求,它可以使得较长的文字在有限的空间内循环滚动显示,增加界面的动态感。本篇文章将详细讲解三种实现TextView跑马灯效果的方法。 ### 1. 使用`ellipsize...

    安卓跑马灯相关-Android文字跑马灯控件文本自动滚动控件左右移动.rar

    Android文字跑马灯控件(文本自动滚动控件,左右移动.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。

Global site tag (gtag.js) - Google Analytics