`
qq986945193
  • 浏览: 90441 次
  • 性别: 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开发中,"跑马灯"效果通常指的是TextView或者EditText的内容自动滚动,这种效果常见于通知栏消息、广告轮播等场景。标题提到的"android跑马灯效果,失去焦点也可以实现"意味着即使控件没有获取到焦点,仍然...

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

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

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

    在Android开发中,实现文字跑马灯效果是一种常见的动态UI设计,可以吸引用户注意力并提供信息展示。本示例——"Android 实现水平、垂直方向文字跑马灯效果demo",将详细介绍如何在Android应用中创建这样的效果。跑马...

    android TextView 跑马灯效果

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

    android 跑马灯效果

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

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

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

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

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

    Android跑马灯效果实现

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

    Android高级应用源码-跑马灯效果MarqueTextView textview 循环 跑马灯效果.zip

    在Android开发中,跑马灯效果(也称为滚动文本或循环滚动)是一种常见的UI特效,常用于显示过长的文本,使用户能在有限的空间内查看完整信息。本资源"Android高级应用源码-跑马灯效果MarqueTextView textview 循环 ...

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

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

    Android-支持跑马灯效果并且与ViewPager同时使用时不会影响ViewPager的左右滑动手势

    在Android开发中,实现跑马灯效果通常会涉及到自定义View或者使用已有的库来达成。跑马灯效果,也称为滚动文字效果,是让用户在有限的显示区域内查看完整信息的一种设计方式,常用于通知栏、标题栏或者广告轮播等...

    android 自定义跑马灯

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

    Android ImageView图片循环跑马灯效果源码-IT计算机-毕业设计.zip

    这个"Android ImageView图片循环跑马灯效果源码"就是一个典型的示例,适用于学生进行毕业设计学习,以提升其在Android应用开发中的实践能力。 跑马灯效果通常是通过在一个布局中滚动显示多个图片来实现的,这种效果...

    android跑马灯源码

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

    RecyclerView上下自动无限滚动,跑马灯效果

    在Android开发中,RecyclerView是一种非常常用的布局管理器,用于展示可滚动的数据集。它具有高效、灵活和可定制的特点,可以实现多种复杂布局。在给定的标题和描述中,我们关注的是如何将RecyclerView实现上下自动...

    TextView 实现文字滚动播放效果效果(跑马灯)

    而“跑马灯”(Scrolling Text)效果则是`TextView`的一个特殊功能,它可以使超出`TextView`显示范围的文字自动从一端滚动到另一端,形成循环滚动的效果,常用于展示较长的标题或通知信息。下面我们将详细探讨如何...

    androidTextView实现跑马灯的效果

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

    跑马灯__android

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

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

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

    Android-快速实现跑马灯借鉴了部分RecyclerView的思想

    在Android开发中,跑马灯效果是一种常见的动态展示方式,常用于新闻滚动、广告轮播等场景。本篇文章将深入探讨如何借助RecyclerView的思想快速实现这一功能。RecyclerView是Android SDK提供的一种高效、可重用的视图...

Global site tag (gtag.js) - Google Analytics