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

出处:http://blog.csdn.net/aminfo/article/details/7558550

 

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

 

 

 

 

posted @ 2013-03-27 17:21  暂时菜鸟  Views(273)  Comments(0)    收藏  举报