【移動應用開發(fā)技術】Android如何實現(xiàn)文字垂直滾動、縱向走馬燈效果的實現(xiàn)方式_第1頁
【移動應用開發(fā)技術】Android如何實現(xiàn)文字垂直滾動、縱向走馬燈效果的實現(xiàn)方式_第2頁
【移動應用開發(fā)技術】Android如何實現(xiàn)文字垂直滾動、縱向走馬燈效果的實現(xiàn)方式_第3頁
【移動應用開發(fā)技術】Android如何實現(xiàn)文字垂直滾動、縱向走馬燈效果的實現(xiàn)方式_第4頁
【移動應用開發(fā)技術】Android如何實現(xiàn)文字垂直滾動、縱向走馬燈效果的實現(xiàn)方式_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

【移動應用開發(fā)技術】Android如何實現(xiàn)文字垂直滾動、縱向走馬燈效果的實現(xiàn)方式

這篇文章將為大家詳細講解有關Android如何實現(xiàn)文字垂直滾動、縱向走馬燈效果的實現(xiàn)方式,在下覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

方法一、使用系統(tǒng)控件ViewFlipper方式:布局文件:<ViewFlipper

android:id="@+id/view_flipper"

android:layout_width="300dp"

android:layout_height="35dp"

android:layout_centerInParent="true"

android:autoStart="true"

android:background="@drawable/warning_bg"

android:flipInterval="3000"

android:inAnimation="@anim/slide_in_bottom"

android:outAnimation="@anim/slide_out_top">

<TextView

android:id="@+id/tv_warning_content1"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:ellipsize="middle"

android:gravity="center"

android:singleLine="true"

android:text="有預警信息有預警信息有預警信息"

android:textColor="#000000"

android:textSize="16sp"/>

<TextView

android:id="@+id/tv_warning_content2"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:ellipsize="middle"

android:gravity="center"

android:singleLine="true"

android:text="當前天氣狀況當前天氣狀況當前"

android:textColor="#000000"

android:textSize="16sp"/>

<TextView

android:id="@+id/tv_warning_content3"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:ellipsize="middle"

android:gravity="center"

android:singleLine="true"

android:text="123456465"

android:textColor="#000000"

android:textSize="16sp"/>

</ViewFlipper>背景文件:warning_bg.xml<?xml

version="1.0"

encoding="utf-8"?>

<shape

xmlns:android="/apk/res/android"

android:shape="rectangle">

<solid

android:color="#34000000"/>

<corners

android:radius="80dp"/>

</shape>切入動畫:slide_in_bottom.xml<?xml

version="1.0"

encoding="utf-8"?>

<set

xmlns:android="/apk/res/android">

<translate

android:duration="1000"

android:fromYDelta="100%p"

android:toYDelta="0"

/>

</set>切出動畫:slide_out_top.xml<?xml

version="1.0"

encoding="utf-8"?>

<set

xmlns:android="/apk/res/android">

<translate

android:duration="1000"

android:fromYDelta="0"

android:toYDelta="-100%p"

/>

</set>注意:如果不在布局文件里設置:android:autoStart="true",可以在代碼中動態(tài)設置開始循環(huán)mViewFlipper.startFlipping();在Activity中顯示正常,但在fragment中可能會有重影的現(xiàn)象。方法二、使用三方框架Gradle:compile

'com.sunfusheng:marqueeview:1.3.3'屬性XML<com.sunfusheng.marqueeview.MarqueeView

android:id="@+id/marqueeView"

android:layout_width="match_parent"

android:layout_height="30dp"

app:mvAnimDuration="1000"

app:mvDirection="bottom_to_top"

app:mvInterval="3000"

app:mvTextColor="@color/white"

app:mvTextSize="14sp"

app:mvSingleLine="true"/>設置字符串列表數(shù)據(jù)MarqueeView

marqueeView

=

(MarqueeView)

findViewById(R.id.marqueeView);

List<String>

info

=

new

ArrayList<>();

info.add("11111111111111");

info.add("22222222222222");

info.add("33333333333333");

info.add("44444444444444");

info.add("55555555555555");

info.add("66666666666666");

marqueeView.startWithList(info);

//

在代碼里設置自己的動畫

marqueeView.startWithList(info,

R.anim.anim_bottom_in,

R.anim.anim_top_out);設置字符串數(shù)據(jù)String

notice

=

"心中有陽光,腳底有力量!心中有陽光,腳底有力量!心中有陽光,腳底有力量!";

marqueeView.startWithText(notice);

//

在代碼里設置自己的動畫

marqueeView.startWithText(notice,

R.anim.anim_bottom_in,

R.anim.anim_top_out);設置事件監(jiān)聽marqueeView.setOnItemClickListener(new

MarqueeView.OnItemClickListener()

{

@Override

public

void

onItemClick(int

position,

TextView

textView)

{

Toast.makeText(getApplicationContext(),

String.valueOf(marqueeView1.getPosition())

+

".

"

+

textView.getText(),

Toast.LENGTH_SHORT).show();

}

});重影問題可參考以下解決方案@Override

public

void

onStart()

{

super.onStart();

marqueeView.startFlipping();

}

@Override

public

void

onStop()

{

super.onStop();

marqueeView.stopFlipping();

}注意:這個庫主要還是繼承了ViewFlipper,類似的庫還有MarqueeViewLibrary,實現(xiàn)方法基本類似,在Activity中顯示正常,但在fragment中可能會有重影的現(xiàn)象。方法三、使用系統(tǒng)控件TextSwitcher實現(xiàn)布局文件<TextSwitcher

android:id="@+id/text_switcher"

android:layout_width="285dp"

android:layout_height="35dp"

android:background="@drawable/warning_bg"/>背景文件:warning_bg.xml<?xml

version="1.0"

encoding="utf-8"?>

<shape

xmlns:android="/apk/res/android"

android:shape="rectangle">

<solid

android:color="#34000000"/>

<corners

android:radius="80dp"/>

</shape>代碼:private

int

index

=

0;//textview上下滾動下標

private

Handler

handler

=

new

Handler();

private

boolean

isFlipping

=

false;

//

是否啟用預警信息輪播

private

List<String>

mWarningTextList

=

new

ArrayList<>();

private

void

setTextSwitcher()

{

mTextSwitcher.setInAnimation(AnimationUtils.loadAnimation(mContext,

R.anim.slide_in_bottom));

mTextSwitcher.setOutAnimation(AnimationUtils.loadAnimation(mContext,

R.anim.slide_out_top));

mTextSwitcher.setFactory(new

ViewSwitcher.ViewFactory()

{

@Override

public

View

makeView()

{

TextView

textView

=

new

TextView(mContext);

textView.setSingleLine();

textView.setTextSize(12);//字號

textView.setTextColor(Color.parseColor("#ffffff"));

textView.setEllipsize(TextUtils.TruncateAt.MIDDLE);

textView.setSingleLine();

textView.setGravity(Gravity.CENTER);

FrameLayout.LayoutParams

params

=

new

FrameLayout.LayoutParams(

ViewGroup.LayoutParams.MATCH_PARENT,

ViewGroup.LayoutParams.MATCH_PARENT);

params.gravity

=

Gravity.CENTER;

textView.setLayoutParams(params);

textView.setPadding(25,

0,

25,

0);

return

textView;

}

});

}

private

Runnable

runnable

=

new

Runnable()

{

@Override

public

void

run()

{

if

(!isFlipping)

{

return;

}

index++;

mTextSwitcher.setText(mWarningTextList.get(index

%

mWarningTextList.size()));

if

(index

==

mWarningTextList.size())

{

index

=

0;

}

startFlipping();

}

};

//開啟信息輪播

public

void

startFlipping()

{

if

(mWarningTextList.size()

>

1)

{

handler.removeCallbacks(runnable);

isFlipping

=

true;

handler.postDelayed(runnable,

3000);

}

}

//關閉信息輪播

public

void

stopFlipping()

{

if

(mWarningTextList.size()

>

1)

{

isFlipping

=

false;

handler.removeCallbacks(runnable);

}

}

//設置數(shù)據(jù)

private

void

setData()

{

if

(mWarningTextList.size()

==

1)

{

mTextSwitcher.setText(mWarningTextList.get(0));

index

=

0;

}

if

(mWarningTextList.size()

>

1)

{

handler.postDelayed(new

Runnable()

{

@Override

public

void

run()

{

mTextSwitcher.setText(mWarningTextList.get(0));

index

=

0;

}

},

1000);

mTextSwitcher.setInAnimation(AnimationUtils.loadAnimation(mContext,

R.anim.slide_in_bottom));

mTextSwitcher.setOutAnimation(AnimationUtils.loadAnimation(mContext,

R.anim.slide_out_top));

startFlipping();

}

}

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論