91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android自定義TextBanner實現自動滾動的方法

發布時間:2020-07-27 09:35:48 來源:億速云 閱讀:256 作者:小豬 欄目:開發技術

這篇文章主要講解了Android自定義TextBanner實現自動滾動的方法,內容清晰明了,對此有興趣的小伙伴可以學習一下,相信大家閱讀完之后會有幫助。

1、TextBanner

package com.example.myapplication.customview;
 
import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.ViewFlipper;
 
import com.example.myapplication.R;
 
import java.util.ArrayList;
import java.util.List;
 
public class TextBanner extends ViewGroup {
  private List<String> mData = new ArrayList<>();
  private ViewFlipper viewFlipper;
  private int parentWidthSpec;
 
  public TextBanner(Context context) {
    super(context);
  }
 
  public TextBanner(Context context, AttributeSet attrs) {
    super(context, attrs);
  }
 
  public TextBanner(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
  }
 
  @Override
  protected void onLayout(boolean changed, int l, int t, int r, int b) {
 
 
    int top = 0;
    int bottom = getChildAt(0).getMeasuredHeight();
 
 
    int left = 0;
    for (int i = 0; i < getChildCount(); i++) {
      View view = getChildAt(i);
      left = (parentWidthSpec - view.getMeasuredWidth()) / 2;
      view.layout(left, top, left + view.getMeasuredWidth(), bottom);
      top += view.getMeasuredHeight();
      bottom = top + view.getMeasuredHeight();
 
    }
    Log.d("tzg", "bottom: " + bottom);
    Log.d("tzg", "top: " + top);
 
 
  }
 
 
  public void setData(List<String> data) {
    mData.clear();
    if (data.isEmpty()) {
      return;
    }
    this.mData = data;
 
    setTextList();
  }
 
  private void setTextList() {
    viewFlipper = (ViewFlipper) LayoutInflater.from(getContext()).inflate(R.layout.flow_layout_viewflip, this, false);
    for (String mDatum : mData) {
 
      TextView view = (TextView) LayoutInflater.from(getContext()).inflate(R.layout.flow_layout_textview, this, false);
      view.setText(mDatum);
      viewFlipper.addView(view);
 
    }
    viewFlipper.setInAnimation(getContext(), R.anim.come_in);
    viewFlipper.setOutAnimation(getContext(), R.anim.come_out);
    viewFlipper.setFlipInterval(2000);
    addView(viewFlipper);
  }
 
 
  @Override
  protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
 
    parentWidthSpec = MeasureSpec.getSize(widthMeasureSpec);
    int parentHeightSpec = MeasureSpec.getSize(heightMeasureSpec);
 
 
    int childWidth = MeasureSpec.makeMeasureSpec(parentWidthSpec, MeasureSpec.AT_MOST);
    int childHeight = MeasureSpec.makeMeasureSpec(parentHeightSpec, MeasureSpec.AT_MOST);
 
    int totalHeight = getChildAt(0).getMeasuredHeight();
 
    for (int i = 0; i < getChildCount(); i++) {
      View view = getChildAt(i);
      measureChild(view, childWidth, childHeight);
    }
    Log.d("tzg", "totalCount: " + totalHeight);
    setMeasuredDimension(parentWidthSpec, totalHeight);
 
  }
 
 
  public void startAnimation() {
    // 1、設置幻燈片的形式滾動
    // viewFlipper.startFlipping();
 
    // 2、設置自動翻頁滾動
    viewFlipper.setAutoStart(true);
    viewFlipper.isAutoStart();
  }
}

用到的資源 

1、動畫資源

(1)、come_in.xml

<set xmlns:android="http://schemas.android.com/apk/res/android">
 
  <translate
    android:duration="1000"
    android:fromYDelta="100%p"
    android:toYDelta="0"/>
 
</set>

(2)、come_out.xml

<set xmlns:android="http://schemas.android.com/apk/res/android">
 
  <translate
    android:duration="1000"
    android:fromYDelta="0"
    android:toYDelta="-100%p"/>
 
</set>

2、布局資源

(1)、flow_layout_viewflip.xml

<&#63;xml version="1.0" encoding="utf-8"&#63;>
<ViewFlipper xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_gravity="center">
</ViewFlipper>

(2)、flow_layout_textview.xml

<&#63;xml version="1.0" encoding="utf-8"&#63;>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:gravity="center"
  android:padding="5dp"
  android:text="demo"
  android:textColor="#FF00FF" />

3、在mainActivity中的使用

package com.example.myapplication;
 
import androidx.appcompat.app.AppCompatActivity;
 
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.Toast;
 
import com.example.myapplication.customview.FlowLayout;
import com.example.myapplication.customview.TextBanner;
 
import java.util.ArrayList;
 
public class MainActivity extends AppCompatActivity {
 
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ArrayList<String> arrayList = new ArrayList<>();
    arrayList.add("111111111");
    arrayList.add("222222222222444444444444");
    arrayList.add("你好5");
    arrayList.add("你好633");
    arrayList.add("你好a7好a7");
    arrayList.add("你好7889");
    arrayList.add("你好2323423423 ");
    arrayList.add("你好sdfsfada你好sdfsfada ");
    arrayList.add("你好34345");
    arrayList.add("pppppppp");
    arrayList.add("你好");
    arrayList.add("你好你好");
    arrayList.add("電視");
    arrayList.add("冰箱冰箱冰箱冰箱冰箱冰箱冰箱冰箱冰箱冰箱");
    arrayList.add("woaoni");
    arrayList.add("襲擊");
    arrayList.add("你好");
    arrayList.add("你好");
    TextBanner viewById = this.findViewById(R.id.text_banner);
    viewById.setData(arrayList);
    viewById.startAnimation();
  }
}

具體效果

Android自定義TextBanner實現自動滾動的方法

沒有自測哦  有bug自己解決

看完上述內容,是不是對Android自定義TextBanner實現自動滾動的方法有進一步的了解,如果還想學習更多內容,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

高陵县| 荔浦县| 枣庄市| 北安市| 正定县| 灌南县| 沅江市| 合山市| 澎湖县| 报价| 镇巴县| 盈江县| 沅江市| 洞口县| 泸溪县| 浦东新区| 景谷| 改则县| 盐亭县| 枞阳县| 张家川| 石嘴山市| 电白县| 鸡东县| 盐亭县| 黑龙江省| 天全县| 托克逊县| 开江县| 屏东市| 金坛市| 望江县| 沂水县| 永丰县| 涪陵区| 瓮安县| 湘阴县| 临沭县| 北京市| 三原县| 海宁市|