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);
}
}