1. 程式人生 > >Android Studio實現跑馬燈微專案例項

Android Studio實現跑馬燈微專案例項

首先在建立一個MarqueeTextViewDemo專案在資源佈局,activity_main.xml中中編寫出相應的佈局的EditText,按鈕還有的TextView第一步要實現一個靜態的跑馬燈樣式,然後通過後臺方法的呼叫,來實現動態跑馬燈效果。很多朋友在編寫跑馬燈時,會出現第一行文字內容正常,其他不會出現跑馬燈效果,我這裡的解決辦法需要在Android的:ID上做文章,在MarqueeText.java中呼叫TextView的。activity_main.xml中程式碼如下
<?xml version="1.0" encoding="utf-8"?><RelativeLayout
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:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"android:background="#93ff93"tools:context="com.example.dujiang.marqueetextviewdemo.MainActivity"><com.example.dujiang.marqueetextviewdemo.MarqueeTextandroid:id="@+id/tv_result"android:layout_width
="match_parent"android:layout_height="wrap_content"android:singleLine="true"android:ellipsize="marquee"android:focusable="true"android:focusableInTouchMode="true"android:textSize="100dp"android:textColor="#CE0000"android:layout_marginTop="10dp"android:text="加微信:dujiang0311"/><EditTextandroid:id="@+id/et_text"android:hint="輸入跑馬燈文字"android:layout_marginTop="400dp"android:layout_width="match_parent"android:layout_height="wrap_content"/><Buttonandroid:id="@+id/b_btn"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="點選生成跑馬燈"android:layout_marginTop="450dp"android:onClick="scan"/><com.example.dujiang.marqueetextviewdemo.MarqueeTextandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="75dp"android:singleLine="true"android:ellipsize="marquee"android:focusable="true"android:focusableInTouchMode="true"android:text="自己動手豐衣足食,謝謝大家哈哈哈哈哈哈哈哈"android:layout_below="@id/tv_result"android:layout_alignParentStart="true"/><com.example.dujiang.marqueetextviewdemo.MarqueeTextandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="25dp"android:singleLine="true"android:ellipsize="marquee"android:focusable="true"android:focusableInTouchMode="true"android:text="自己動手豐衣足食,謝謝大家哈哈哈哈哈哈哈哈"android:layout_marginBottom="93dp"android:layout_alignBottom="@id/et_text"android:layout_alignParentStart="true"/></RelativeLayout>
  • 廢話不多說,第二步你需要讓不止一行的文字顯示出跑馬燈的效果,所以,你需建立一個類在:JAVA-COM。.marqueetextviewdemo中。我取的類名稱是MarqueeText.java程式碼如下
package com.example.dujiang.marqueetextviewdemo;import android.content.Context;import android.util.AttributeSet;import android.widget.TextView;/**
 * Created by Dujiang on 2016/10/27.
 */publicclassMarqueeTextextendsTextView{publicMarqueeText(Context context,AttributeSet attrs){super(context, attrs);}@Overridepublicboolean isFocused(){//判斷TextView是不是在一個被選中的狀態上。returntrue;//返回的是true,確定其在被選中的狀態上}//剛才第一個可以滾動而第二個不可以滾動,是因為第一個Textview已經把focus(焦點)拿到了,//並沒有被第二個得到(因為拿不到)//而我們自定義的值是讓所有的Focused都能得到(焦點),因此兩個都可以滾動publicMarqueeText(Context context){super(context);}publicMarqueeText(Context context,AttributeSet attrs,int defStyleAttr){super(context, attrs, defStyleAttr);}publicMarqueeText(Context context,AttributeSet attrs,int defStyleAttr,int defStyleRes){super(context, attrs, defStyleAttr, defStyleRes);}}
  • 你一定要清楚自己想要實現的效果,不是僅僅實現你後臺輸入的固定文字,這樣的不足以稱之為程式,只能稱為垃圾程式碼,我們要能實現在前端編寫相應的文字,讓顯示出來的文字呈現出跑馬燈效果。
  • MainActivity是在程式中自動生成的,在這個類中,你需要將你EditText中編輯的文字,通過Button事件,在TextView中生成出來.MainActivity.java中的程式碼如下:
package com.example.dujiang.marqueetextviewdemo;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.EditText;import android.widget.TextView;publicclassMainActivityextendsAppCompatActivityimplementsView.OnClickListener{privateEditText editText;privateTextView textView;@Overrideprotectedvoid onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        findViewById(R.id.b_btn).setOnClickListener(this);
        editText =(EditText) findViewById(R.id.et_text);
        textView =(TextView) findViewById(R.id.tv_result);}publicvoid onClick(View v){
        textView.setText(editText.getText());// !}}