1. 程式人生 > >Android Studio一個簡單橫向跑馬燈的實現

Android Studio一個簡單橫向跑馬燈的實現

記錄一個Android中簡單實現跑馬燈功能的方法:僅僅實現了單行跑馬燈的功能,對於速度的調整 ,沒有實現。記錄一下以便日後檢視。


首先在MainActivity下新建一個名為MarqueeTextView的.java 檔案

MarqueeTextView.java程式碼如下:

package com.example.chenhy.pmdtest;

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

public class MarqueeTextView extends TextView
{
	private int speed = 4;

	    public void setSpeed(int speed) {
	        this.speed = speed;
	    }
    public MarqueeTextView(Context context)
    {
        this(context, null);
    }
    
    public MarqueeTextView(Context context, AttributeSet attrs)
    {
        super(context, attrs);
        
        setFocusable(true);
        setFocusableInTouchMode(true);
        
        setSingleLine();
        setEllipsize(TextUtils.TruncateAt.MARQUEE);
        setMarqueeRepeatLimit(-1);
    }
    
    public MarqueeTextView(Context context, AttributeSet attrs, int defStyle)
    {
        super(context, attrs, defStyle);
        
        setFocusable(true);
        setFocusableInTouchMode(true);
        
        setSingleLine();
        setEllipsize(TextUtils.TruncateAt.MARQUEE);
        setMarqueeRepeatLimit(-1);
    }


    @Override
    protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect)
    {
        if (focused)
        {
            super.onFocusChanged(focused, direction, previouslyFocusedRect);
        }
    }
    
    @Override
    public void onWindowFocusChanged(boolean focused)
    {
        if (focused)
        {
            super.onWindowFocusChanged(focused);
        }
    }
    
    @Override
    public boolean isFocused()
    {
        return true;
    }
}


佈局檔案
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.chenhy.pmdtest.MainActivity">

    <com.example.chenhy.pmdtest.MarqueeTextView
        android:id="@+id/pmd"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:textSize="30sp"
       />


</LinearLayout>


最後是mainactivity中的程式碼
package com.example.chenhy.pmdtest;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;

public class MainActivity extends AppCompatActivity {

    MarqueeTextView PMD ;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        PMD = (MarqueeTextView)findViewById(R.id.pmd);
        PMD.setText("塞納河畔 左岸的咖啡 我手一杯 品嚐你的美 留下脣印的嘴 花店玫瑰 名字寫錯誰 告白氣球 風吹到對街 微笑在天上飛");
    }


}

最後,上一張效果圖