日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Android自定義TextBanner實(shí)現(xiàn)自動(dòng)滾動(dòng)

瀏覽:127日期:2022-09-23 10:44:01

本文實(shí)例為大家分享了Android自定義TextBanner實(shí)現(xiàn)自動(dòng)滾動(dòng)的具體代碼,供大家參考,具體內(nèi)容如下

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、設(shè)置幻燈片的形式滾動(dòng) // viewFlipper.startFlipping(); // 2、設(shè)置自動(dòng)翻頁(yè)滾動(dòng) viewFlipper.setAutoStart(true); viewFlipper.isAutoStart(); }}

用到的資源

1、動(dòng)畫(huà)資源

(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

<?xml version='1.0' encoding='utf-8'?><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

<?xml version='1.0' encoding='utf-8'?><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('你好'); TextBanner viewById = this.findViewById(R.id.text_banner); viewById.setData(arrayList); viewById.startAnimation(); }}

具體效果

Android自定義TextBanner實(shí)現(xiàn)自動(dòng)滾動(dòng)

沒(méi)有自測(cè)哦 有bug自己解決

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Android
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
天堂va蜜桃一区二区三区| 国产精品欧美三级在线观看| 婷婷成人基地| 男女男精品视频网| 国产欧美日韩精品高清二区综合区 | 国产精久久一区二区| 国产在线观看91一区二区三区 | 日韩成人精品一区二区| 日本国产精品| 亚洲日韩视频| 国产一区二区三区网| 激情欧美一区| 欧美自拍一区| 91亚洲人成网污www| 99在线|亚洲一区二区| 日韩国产91| www.51av欧美视频| 亚洲免费播放| 欧美黄色精品| 午夜欧美精品| 国产激情欧美| 日韩一区二区久久| 国产精品久久久免费| 99久久亚洲精品蜜臀| 日韩福利视频一区| 香蕉成人av| 日韩avvvv在线播放| 久久久久91| 亚洲三级在线| 精品日韩视频| 久久国产精品免费一区二区三区| 成人日韩在线观看| 青青在线精品| 亚洲激情中文| 久久一区亚洲| 亚洲另类av| 久久久久久久久久久妇女| 日本视频中文字幕一区二区三区| 国产91一区| 国产精品日本一区二区不卡视频| 91成人超碰| 精品视频一区二区三区在线观看| 麻豆成人在线| 成人污污视频| 日本麻豆一区二区三区视频| 一本一道久久a久久精品蜜桃| 久久精品国产99国产精品| 午夜在线视频观看日韩17c| 精品视频黄色| 日韩激情视频网站| 欧美+日本+国产+在线a∨观看| 国产精品玖玖玖在线资源| 美女久久一区| 亚洲福利专区| 国产精品福利在线观看播放| 亚洲精品亚洲人成在线观看| 久久精品亚洲人成影院| 你懂的国产精品永久在线| 99在线精品视频在线观看| 日产精品一区二区| 久久国产生活片100| 视频一区视频二区中文字幕| 四虎884aa成人精品最新| 高清一区二区三区| 国产精品观看| 日韩av中文字幕一区| 国产精品嫩草99av在线| 日韩在线看片| 久久亚洲精精品中文字幕| 国产欧美日韩精品一区二区三区| 亚洲专区视频| 羞羞答答国产精品www一本| 国产99精品| 国产精品yjizz视频网| 欧美激情aⅴ一区二区三区| 久久激五月天综合精品| 日韩精品中文字幕一区二区| 日韩精品一级中文字幕精品视频免费观看 | 欧美激情麻豆| 国产免费av一区二区三区| 亚洲精品在线a| 香蕉久久久久久久av网站| 欧美特黄一级| 99久久精品国产亚洲精品| 亚洲一级少妇| 桃色av一区二区| av高清不卡| av资源亚洲| 欧美日韩视频免费观看| 日韩一区二区三区免费播放| 黑人精品一区| 日本激情一区| 激情国产在线| 日韩免费高清| 99精品电影| 亚洲特级毛片| 尤物精品在线| 欧美专区18| 亚洲毛片一区| 国产欧美在线| 免费一级欧美片在线观看网站| 麻豆91精品视频| 精品资源在线| 国产资源在线观看入口av| 亚洲1234区| 亚洲午夜黄色| 香蕉国产精品| 日韩中文字幕亚洲一区二区va在线| 久久不射网站| 亚洲v天堂v手机在线| 日韩视频1区| 国产乱人伦精品一区| 国产精品99精品一区二区三区∴ | 亚洲激情黄色| 国产精品老牛| 日韩一区中文| 国产精品久久久网站| 久久97视频| 蜜臀国产一区| 国产韩日影视精品| 中文字幕亚洲影视| 国产精品久久久久久久久免费高清| 久久亚洲国产精品尤物| 日本少妇一区| 久久成人精品| 国产美女久久| 少妇久久久久| 亚洲欧美在线专区| 久久爱www.| 99久久激情| 日韩欧美2区| 麻豆精品视频在线观看| 美女福利一区二区三区| 亚洲一区二区三区高清| 欧美日韩91| 日韩伦理在线一区| 在线看片日韩| 久久这里只有精品一区二区| 91精品国产成人观看| 亚洲三区欧美一区国产二区| 精品视频99| 国产精品外国| 久久不卡日韩美女| 尹人成人综合网| 国产精品一二| 亚洲国产专区校园欧美| 偷拍亚洲精品| 色婷婷综合网| 蜜臀国产一区二区三区在线播放| 久久精品av麻豆的观看方式| 蜜桃av在线播放| 亚州av日韩av| 亚洲综合电影| 婷婷精品久久久久久久久久不卡| 精品免费视频| 水野朝阳av一区二区三区| 精品一区二区三区视频在线播放 | 久久99偷拍| 狠狠操综合网| 九九久久婷婷| 国产精品毛片aⅴ一区二区三区| 久久免费国产| 欧美日韩国产一区二区在线观看| 亚洲播播91| 欧美一区免费| 欧美在线亚洲| 久久精品91| 国产精品嫩模av在线| 欧美日韩三区| 国产一区二区三区天码| 涩涩涩久久久成人精品| 日韩中文在线电影| 欧美一级网站| 激情视频一区二区三区| 国产精品a久久久久| 亚洲网站视频| 麻豆91在线播放| 综合国产视频| 日韩和的一区二在线| 日韩高清在线一区| 成人av二区| 欧美好骚综合网| 欧美精品中文字幕亚洲专区| 久久亚洲专区| 久久亚洲资源中文字| 色8久久久久| 自由日本语亚洲人高潮| 色婷婷综合网| 国产精品久久久一区二区| 亚洲一区二区三区中文字幕在线观看| а√在线中文在线新版| 国产精品一站二站| 亚洲激情中文| 日韩久久视频| 久久精品亚洲一区二区| 婷婷精品在线观看| 亚洲一区二区免费看| 久久精品国产99久久| 福利一区二区免费视频| 欧美日本久久|