android TextViewが走馬灯効果を実現


本論文の例では、Android TextViewの走馬灯効果の具体的なコードを共有します。参考にしてください。具体的な内容は以下の通りです。
一、ポイント
四つの属性を設定します
android:single Line=「true」
android:ellipsize="marquee"
android:focusable=「true」
android:focusable Intouch Mode="true"
直接xmlに使用する

<TextView
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:singleLine="true"
  android:ellipsize="marquee"
  android:focusable="true"
  android:focusableInTouchMode="true"
  android:text="       、  、     ,             ,            。" />


注意:single Line属性はmaxl Linessに変えられません。 
二、複雑なレイアウト
複雑なレイアウトでは、走馬灯効果は実現しないかもしれません。例えば次のようなレイアウトでは、最初のTextViewだけが走馬灯効果があります。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:app="http://schemas.android.com/apk/res-auto"
 android:layout_width="match_parent"
 android:layout_height="match_parent">

 <TextView
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:id="@+id/tv1"
  android:singleLine="true"
  android:ellipsize="marquee"
  android:focusable="true"
  android:focusableInTouchMode="true"
  android:text="       、  、     ,             ,            。" />
 <TextView
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_below="@+id/tv1"
  android:layout_marginTop="10dp"
  android:singleLine="true"
  android:ellipsize="marquee"
  android:focusable="true"
  android:focusableInTouchMode="true"
  android:text="       、  、     ,             ,            。" />


</RelativeLayout>

この時はViewをカスタマイズして走馬灯の効果を実現します。
カスタムMaQueeText View TextView  isFocusedを書き換えて、trueに戻ります。

public class MarqueeText extends TextView {
 public MarqueeText(Context context) {
  super(context);
 }

 public MarqueeText(Context context, @Nullable AttributeSet attrs) {
  super(context, attrs);
 }

 public MarqueeText(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
  super(context, attrs, defStyleAttr);
 }

 @Override
 public boolean isFocused() {
  return true;
 }
}

レイアウトで使用

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:app="http://schemas.android.com/apk/res-auto"
 android:layout_width="match_parent"
 android:layout_height="match_parent">

 <com.example.dhj.marqueedemo.View.MarqueeText
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:id="@+id/tv1"
  android:singleLine="true"
  android:ellipsize="marquee"
  android:focusable="true"
  android:focusableInTouchMode="true"
  android:text="       、  、     ,             ,            。" />
 <com.example.dhj.marqueedemo.View.MarqueeText
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_below="@+id/tv1"
  android:layout_marginTop="10dp"
  android:singleLine="true"
  android:ellipsize="marquee"
  android:focusable="true"
  android:focusableInTouchMode="true"
  android:text="       、  、     ,             ,            。" />


</RelativeLayout>
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。