Android marquee Effect

Source: Internet
Author: User

Android marquee Effect

Layout file:

 

Code:

 

AutoScrollTextView:

 

Public class AutoScrollTextView extends TextView {public final static String TAG = AutoScrollTextView. class. getSimpleName (); private float textLength = 0f; // text length private float viewWidth = 0f; private float step = 0f; // The horizontal private float y of the text = 0f; // The text ordinate private float temp_view_plus_text_length = 0.0f; // temporary variable used for calculation ?? Private float temp_view_plus_two_text_length = 0.0f; // Temporary change used for calculation ?? Public boolean isStarting = false; // do you want ?? Start rolling ?? Private Paint paint = null; // drawing style private String text =; // text content public AutoScrollTextView (Context context) {super (context); initView ();} public AutoScrollTextView (Context context, AttributeSet attrs) {super (context, attrs); initView ();} public AutoScrollTextView (Context context, AttributeSet attrs, int defStyle) {super (context, Context, attrs, defStyle); initView ();} private void initView () {// setOnClickListener (This);} public void init (WindowManager windowManager) {paint = getPaint (); text = getText (). toString (); textLength = paint. measureText (text); viewWidth = getWidth (); if (viewWidth = 0) {if (windowManager! = Null) {Display display = windowManager. getdefadisplay display (); viewWidth = display. getWidth () ;}} step = textLength; temp_view_plus_text_length = viewWidth + textLength; second = viewWidth + textLength * 2; y = getTextSize () + getPaddingTop ();} @ Overridepublic Parcelable onSaveInstanceState () {Parcelable superState = super. onSaveInstanceState (); SavedState ss = new SavedState (superSt Ate); ss. step = step; ss. isStarting = isStarting; return ss ;}@ Overridepublic void onRestoreInstanceState (Parcelable state) {if (! (State instanceof SavedState) {super. onRestoreInstanceState (state); return;} SavedState ss = (SavedState) state; super. onRestoreInstanceState (ss. getSuperState (); step = ss. step; isStarting = ss. isStarting;} public static class SavedState extends BaseSavedState {public boolean isStarting = false; public float step = 0.0f; SavedState (Parcelable superState) {super (superState );} @ Overridepublic void writeToParcel (Parcel out, int flags) {super. writeToParcel (out, flags); out. writeBooleanArray (new boolean [] {isStarting}); out. writeFloat (step);} public static final Parcelable. creator
 
  
CREATOR = new Parcelable. Creator
  
   
() {Public SavedState [] newArray (int size) {return new SavedState [size];} @ Overridepublic SavedState createFromParcel (Parcel in) {return new SavedState (in );}}; private SavedState (Parcel in) {super (in); boolean [] B = null; in. readBooleanArray (B); if (B! = Null & B. length> 0) isStarting = B [0]; step = in. readFloat () ;}} public void startScroll () {isStarting = true; invalidate ();} public void stopScroll () {isStarting = false; invalidate ();} @ Overridepublic void onDraw (Canvas canvas) {if (! IsStarting) {return;} canvas. drawText (text, temp_view_plus_text_length-step, y, paint); step + = 2; // text scroll speed ?? If (step> temp_view_plus_two_text_length) step = textLength; invalidate () ;}// @ Override // public void onClick (View v) {// if (isStarting) // stopScroll (); // else // startScroll ();////}}
  
 

MainActivity:

 

 

Private void getNotice () {// TODO Auto-generated method stubtv_notice.setText (text); TV _notice.init (getWindowManager (); TV _notice.startScroll ();}


 

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.