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

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】Android如何實(shí)現(xiàn)文字垂直滾動(dòng)、縱向走馬燈效果的實(shí)現(xiàn)方式

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

方法一、使用系統(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="有預(yù)警信息有預(yù)警信息有預(yù)警信息"

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="當(dāng)前天氣狀況當(dāng)前天氣狀況當(dāng)前"

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>切入動(dòng)畫: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>切出動(dòng)畫: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>注意:如果不在布局文件里設(shè)置:android:autoStart="true",可以在代碼中動(dòng)態(tài)設(shè)置開(kāi)始循環(huán)mViewFlipper.startFlipping();在Activity中顯示正常,但在fragment中可能會(huì)有重影的現(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è)置字符串列表數(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);

//

在代碼里設(shè)置自己的動(dòng)畫

marqueeView.startWithList(info,

R.anim.anim_bottom_in,

R.anim.anim_top_out);設(shè)置字符串?dāng)?shù)據(jù)String

notice

=

"心中有陽(yáng)光,腳底有力量!心中有陽(yáng)光,腳底有力量!心中有陽(yáng)光,腳底有力量!";

marqueeView.startWithText(notice);

//

在代碼里設(shè)置自己的動(dòng)畫

marqueeView.startWithText(notice,

R.anim.anim_bottom_in,

R.anim.anim_top_out);設(shè)置事件監(jiān)聽(tīng)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();

}

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

public

void

onStart()

{

super.onStart();

marqueeView.startFlipping();

}

@Override

public

void

onStop()

{

super.onStop();

marqueeView.stopFlipping();

}注意:這個(gè)庫(kù)主要還是繼承了ViewFlipper,類似的庫(kù)還有MarqueeViewLibrary,實(shí)現(xiàn)方法基本類似,在Activity中顯示正常,但在fragment中可能會(huì)有重影的現(xiàn)象。方法三、使用系統(tǒng)控件TextSwitcher實(shí)現(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上下滾動(dòng)下標(biāo)

private

Handler

handler

=

new

Handler();

private

boolean

isFlipping

=

false;

//

是否啟用預(yù)警信息輪播

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);//字號(hào)

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();

}

};

//開(kāi)啟信息輪播

public

void

startFlipping()

{

if

(mWarningTextList.size()

>

1)

{

handler.removeCallbacks(runnable);

isFlipping

=

true;

handler.postDelayed(runnable,

3000);

}

}

//關(guān)閉信息輪播

public

void

stopFlipping()

{

if

(mWarningTextList.size()

>

1)

{

isFlipping

=

false;

handler.removeCallbacks(runnable);

}

}

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

最新文檔

評(píng)論

0/150

提交評(píng)論