package com.powenko.Tutorial_UI_TextView_Marquee_slideshow;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.TranslateAnimation;
import android.widget.TextView;

public class Tutorial_UI_TextView_Marquee_slideshowActivity extends Activity {
	String mtext[]={"Apples","Bananas","Orange","Guava","Pears","Pomegranate"};
	private Handler handler;
    private int mClock=0;
    private TextView mTextView1;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mTextView1 = (TextView)findViewById(R.id.textView1);

        handler = new Handler();
        handler.postDelayed(runner, 1);

    }

    final Runnable runner = new Runnable()
    {
        public void run()
        {
            mClock++;
            int t_len=mtext.length;
            if(mClock>=t_len){mClock=0;}
            mTextView1.setText(mtext[mClock]);
            Animation t_Animation=scrollingText(mTextView1, 600);
            mTextView1.clearAnimation();
            mTextView1.startAnimation(t_Animation);

            handler.postDelayed(this, 8000);
        }
    };

    public static Animation scrollingText(View view, float margin){

        Context context = view.getContext(); //gets the context of the view

                // measures the unconstrained size of the view
                // before it is drawn in the layout
        view.measure(View.MeasureSpec.UNSPECIFIED,
                             View.MeasureSpec.UNSPECIFIED);

                // takes the unconstrained wisth of the view
        float width = view.getMeasuredWidth();

                // gets the screen width
        float screenWidth = ((Activity) context).getWindowManager().getDefaultDisplay().getWidth();

                // perfrms the calculation
        float toXDelta = width - (screenWidth - margin);

                // sets toXDelta to 0 if the text width is smaller that the screen size
        if (toXDelta < 0) {toXDelta = 0; } else { toXDelta = 0 - toXDelta;}

                // Animation parameters
        Animation mAnimation = new TranslateAnimation(0, toXDelta, 0, 0);
        mAnimation.setDuration(8000);//15000);
        mAnimation.setRepeatMode(Animation.RESTART);
        mAnimation.setRepeatCount(Animation.INFINITE);

        return mAnimation;
    }
}

main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:lines="1"
        android:ellipsize="marquee"
        android:fadingEdge="horizontal"
        android:marqueeRepeatLimit="marquee_forever"
        android:scrollHorizontally="true"
        android:textColor="#ffffff"
        android:text="Simple application that shows how to use marquee, with a long text" />
</RelativeLayout>

sample code:

Tutorial_UI_TextView_Marquee_slideshow

By admin-powenko

Dr. Powen Ko is a teacher and CEO on LoopTek LLC, and like to teaching. if you need to class, please let PowenKo know, he will love to service and sharing. LoopTek web site is www.looptek.com

Leave a Reply