Android实现多个跑马灯效果,多个文本框TextView的跑马灯

Android实现多个跑马灯效果,多个文本框TextView的跑马灯

一、新建一个Marquee类继承TextView

由于默认的跑马灯效果是需要TextView的方法isFocused为true的时候才会跑动的,而默认时,只有一个TextView处于focused状态,解决办法就是让所有要实现跑马灯效果的TextView都处于focused状态,因此要改写TextView类。于是新建一个Marquee类:

package org.shuxiang.test;


import android.content.Context;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.widget.TextView;

public class Marquee extends TextView
{
	public Marquee(Context context, AttributeSet attrs)
	{
		super(context, attrs);
	}
	
	@Override
	protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect)
	{
		// TODO Auto-generated method stub
		if(focused) super.onFocusChanged(focused, direction, previouslyFocusedRect);
	}
	
	@Override
	public void onWindowFocusChanged(boolean hasWindowFocus)
	{
		// TODO Auto-generated method stub
		if(hasWindowFocus) super.onWindowFocusChanged(hasWindowFocus);
	}
	
	@Override
	public boolean isFocused()
	{
		return true;
	}
}


二、布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#ffffff"
    android:orientation="vertical" >
    
    <LinearLayout android:orientation="vertical"
    	android:layout_width="fill_parent"
    	android:layout_height="wrap_content">
    
		<org.shuxiang.test.Marquee android:id="@+id/pmd1"
			android:layout_width="200dip"
			android:layout_height="wrap_content"
			android:layout_marginLeft="10dip"
			android:layout_marginRight="10dip"
			android:clickable="true"
			android:ellipsize="marquee"
			android:focusable="false"
			android:focusableInTouchMode="true"
			android:marqueeRepeatLimit="marquee_forever"
			android:scrollHorizontally="true"
			android:text="跑马灯文字1跑马灯文字1跑马灯文字1跑马灯文字1" />
   

    	<org.shuxiang.test.Marquee android:id="@+id/pmd2"
			android:layout_width="200dip"
			android:layout_height="wrap_content"
			android:layout_marginLeft="10dip"
			android:layout_marginRight="10dip"
			android:clickable="true"
			android:ellipsize="marquee"
			android:focusable="true"
			android:focusableInTouchMode="true"
			android:marqueeRepeatLimit="marquee_forever"
			android:scrollHorizontally="true"
			android:text="这里是第2个跑马灯噢!这里是第2个跑马灯噢!这里是第2个跑马灯噢!" />
			
		<org.shuxiang.test.Marquee android:id="@+id/pmd3"
			android:layout_width="200dip"
			android:layout_height="wrap_content"
			android:layout_marginLeft="10dip"
			android:layout_marginRight="10dip"
			android:clickable="true"
			android:ellipsize="marquee"
			android:focusable="true"
			android:focusableInTouchMode="true"
			android:marqueeRepeatLimit="marquee_forever"
			android:scrollHorizontally="true"
			android:text="》》》第3个跑马灯》》》第3个跑马灯》》》第3个跑马灯" />
	
    </LinearLayout>
</LinearLayout>

三、调用布局文件显示:

package org.shuxiang.test;
import android.app.*;
import android.os.*;
public class MainActivity extends Activity
{
	@Override	 
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值