`

android 布局式跑马灯,非TextView

 
阅读更多

如题,简单的实现了跑马灯效果,把Scroll.java放入android.view包下,XML使用如下:
<?xml version="1.0" encoding="utf-8"?>
<Scroll xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="100dip"
android:layout_height="wrap_content">
<!--注意:Scroll里的布局或者控件元素只能有一个可以用布局嵌套布局/控件来使用,当Scroll里的唯一元素的宽度超过Scroll效果最好,如果不超过没加处理,有兴趣可以自己加上-->
<TextView android:layout_width="fill_parent"
  android:layout_height="wrap_content" android:text="放大镜流口水附近拉神经分裂卡上的经费里卡迪神经分裂空间爱上" />
</Scroll>
代码如下:
----------------------------------------------转载请注明出处-----------------------------------------------
本帖隐藏的内容需要回复才可以浏览

public class Scroll extends HorizontalScrollView implements Runnable
{
private View inner;

private Bitmap bitmap = null;

/**
* 滚动步长
*/
private int step = 5;

private int x;

private int width;

private int pWidth;

private int pHeight;

/**
* 滚动间隔距离
*/
private int space = 10;

public Scroll(Context context, AttributeSet attrs)
{
super(context, attrs);
setBackgroundColor(android.R.color.transparent);

}

@Override
protected void onFinishInflate()
{

if (getChildCount() == 1)
{
inner = getChildAt(0);
}

}

@Override
protected void onDetachedFromWindow()
{

super.onDetachedFromWindow();
handler.removeCallbacks(this);
}

@Override
protected void onDraw(Canvas canvas)
{
if (getWidth() == 0)
{
android.view.ViewGroup.LayoutParams lp = getLayoutParams();
lp.width = pWidth;
lp.height = pHeight;
setLayoutParams(lp);
}
if (bitmap == null && inner != null)
{
width = inner.getMeasuredWidth();
bitmap = Bitmap.createBitmap(width, inner.getHeight(), Config.RGB_565);
Canvas canvas1 = new Canvas(bitmap);
inner.draw(canvas1);
pWidth = getWidth();
pHeight = getHeight();
if (inner != null)
{
removeViewInLayout(inner);
inner = null;
}

run();
}

if (bitmap != null)
{

int nowX = x;
nowX -= step;
canvas.drawBitmap(bitmap, nowX, 0, null);

if (nowX < 0)
{

canvas.drawBitmap(bitmap, width + nowX + space, 0, null);
}
if (nowX <= -width)
{
nowX = 0;

}
x = nowX;
}
super.onDraw(canvas);
}

private Handler handler = new Handler()
{
@Override
public void handleMessage(Message msg)
{

super.handleMessage(msg);
}

};

@Override
public void run()
{

invalidate();
handler.postDelayed(this, 500);

}

}


----------------------------------转载请注明出处-----------------------------------------------
另外提供了一个可以直接跑的附件,不过附件里的只是一个TextView,大家可以把它换上LinearLayout里加上n个TextView看看,前提是LinearLayout要是Horizontal的
分享到:
评论

相关推荐

    布局式跑马灯,非TextView

    总之,非TextView的布局式跑马灯是一种高级的UI实现,它需要开发者具备扎实的Android基础知识,包括自定义View、动画、数据绑定等,同时也体现了开发者对用户体验的重视。这样的技术不仅能提升应用的界面表现,也能...

    android自定义横向跑马灯TextView(两种,即使一个字符也能跑马灯)

    "android自定义横向跑马灯TextView"就是一个典型的示例,它允许文字在一个视图内不断滚动,模拟LED显示屏上的跑马灯效果。这种效果通常用于显示通知、提示信息或者标题,即使只有一个字符也能实现滚动。 跑马灯效果...

    android textview 无焦点 跑马灯 水平滚动

    本篇文章将详细介绍如何在Android中实现TextView的无焦点跑马灯和水平滚动效果。 首先,我们需要理解TextView的基础属性。`android:singleLine`属性用于将文本限制为一行,`android:ellipsize`属性则控制当文本超出...

    android TextView 跑马灯效果

    总的来说,Android的TextView跑马灯效果是通过结合XML布局属性和代码控制实现的,它为展示长文本提供了灵活的解决方案,特别是在有限的空间内。理解和掌握这个功能对于Android开发者来说非常有用,可以提升用户体验...

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

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

    android TextView跑马灯

    5. 还有一个特殊情况,如果TextView在XML布局文件中设置了 `android:focusable="false"` 或 `android:focusableInTouchMode="false"`,那么跑马灯可能不会启动,因为TextView需要获取焦点才能启动滚动。所以,确保这...

    TextView滚动,跑马灯效果终极解决方案

    首先,要实现TextView的跑马灯效果,我们需要在XML布局文件中设置`android:singleLine="true"`(对于API 26及以上版本,需使用`android:maxLines="1"`)和`android:ellipsize="marquee"`。这将使TextView单行显示,...

    Android ListView,TextView跑马灯Demo

    综上所述,这个"Android ListView,TextView跑马灯Demo"展示了如何在ListView的每一项中实现TextView的跑马灯效果。通过正确设置TextView的属性和ListView的焦点管理,我们可以在应用中创建出动态、吸引人的UI元素,...

    TextView跑马灯、闪烁和跳动动画

    在Android开发中,TextView是...总之,TextView的跑马灯、闪烁和跳动动画是Android开发中增强用户体验的重要手段。通过理解和实践这些效果,开发者可以为用户提供更加丰富的视觉体验,同时提升应用的吸引力和互动性。

    Android垂直滚动TextView跑马灯Demo

    本示例"Android垂直滚动TextView跑马灯Demo"就是一种常见的UI特效,它主要用于显示大量的文本内容,尤其适用于展示滚动公告、新闻标题或者广告等内容。跑马灯效果在Android中通常是通过自定义View或者对现有控件进行...

    TextView循环改变大小的跑马灯效果

    在Android开发中,"TextView循环改变大小的跑马灯效果"是一种常见的动态UI设计,它可以使文本在TextView中持续滚动并动态改变大小,营造出引人注目的视觉体验。跑马灯效果通常用于显示较长的文本,当文本无法完全...

    androidTextView实现跑马灯的效果

    在Android开发中,`TextView`是用于显示文本的常见组件。当需要创建一种滚动文本效果,...总之,通过合理设置`TextView`的相关属性,可以在Android应用中轻松实现跑马灯效果,为用户提供动态且引人注目的文本展示方式。

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

    - 如果布局中有多个`TextView`设置了跑马灯效果,一次只能有一个能生效,因为Android系统一次只允许一个View拥有焦点。 4. **优化** - 为了提升用户体验,可以考虑添加动画效果,比如渐入渐出,使得滚动更自然。 ...

    特效-textView跑马灯

    在Android开发中,"特效-textView跑马灯"是一种常见的UI动态效果,它通常用于显示滚动的文字信息,比如新闻标题或者广告标语。这种效果模仿了实际生活中的跑马灯,即文字在一个固定区域里循环滚动,给人一种连续不断...

    android TextView实现跑马灯效果

    Android TextView 实现跑马灯效果 Android TextView 实现跑马灯效果是 Android 开发中常见的需求之一。跑马灯效果是指文本滚动的效果,常用于展示长文本内容。本文将详细介绍如何使用 Android TextView 实现跑马灯...

    Android 水平方向跑马灯

    总之,Android中的跑马灯效果可以通过`TextView`的`marquee`属性轻松实现,但对于更复杂的需求,我们可以自定义布局组件,如`MarqueeLayout`,以实现更多功能和更高的灵活性。通过这样的自定义,我们可以更好地满足...

    Android自定义textview实现竖直滚动跑马灯效果

    Android 自定义 TextView 实现竖直滚动跑马灯效果 Android 自定义 TextView 实现竖直滚动跑马灯效果是 Android 开发中的一种常见需求。跑马灯效果指的是 TextView 中的文字可以水平或竖直滚动,达到拉动和显示大量...

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

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

    textview两种跑马灯的实现

    在Android开发中,TextView是用于显示文本的基本...以上就是Android中TextView跑马灯的两种实现方式,无论是使用内置属性还是自定义动画,都能实现文本的循环滚动效果。在实际开发中,可以根据项目需求选择合适的方法。

Global site tag (gtag.js) - Google Analytics