Android使用AnimationDrawable實(shí)現(xiàn)閃爍紅光動畫效果(案例詳解)
實(shí)現(xiàn)閃爍紅光效果可以使用Android中的Animation和Drawable資源。具體步驟如下:
1.創(chuàng)建一個(gè)Drawable資源文件,例如red_light.xml,用于定義紅光的形狀和顏色。示例代碼如下:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="#FF0000" />
<size android:width="20dp" android:height="20dp" />
</shape>這個(gè)資源文件定義了一個(gè)圓形形狀,并設(shè)置了紅色的填充色和大小。
2.創(chuàng)建一個(gè)Animation資源文件,例如red_light_anim.xml,用于定義紅光閃爍的動畫效果。示例代碼如下:
<animation-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:duration="500" android:drawable="@drawable/red_light" />
<item android:duration="500" android:drawable="@android:color/transparent" />
</animation-list>這個(gè)資源文件定義了一個(gè)動畫列表,包含兩個(gè)item。每個(gè)item指定了一個(gè)Drawable資源文件,并設(shè)置了動畫持續(xù)時(shí)間。第一個(gè)item使用了red_light.xml資源文件,表示紅光亮起;第二個(gè)item使用了Android系統(tǒng)自帶的透明顏色,表示紅光熄滅。這樣,就實(shí)現(xiàn)了紅光閃爍的效果。
3.在代碼中使用AnimationDrawable類來加載動畫資源,并將其設(shè)置為一個(gè)View的背景。示例代碼如下:
ImageView redLight = findViewById(R.id.red_light); AnimationDrawable anim = (AnimationDrawable) getResources().getDrawable(R.drawable.red_light_anim); redLight.setBackground(anim); anim.start();
這個(gè)示例中,我們使用findViewById()方法獲取了一個(gè)ImageView控件,然后使用getResources().getDrawable()方法加載了red_light_anim.xml資源文件,并將其轉(zhuǎn)換為一個(gè)AnimationDrawable對象。最后,將AnimationDrawable對象設(shè)置為ImageView的背景,并調(diào)用start()方法開始動畫。
這樣,當(dāng)界面中的ImageView控件顯示時(shí),就會閃爍紅光,實(shí)現(xiàn)數(shù)字報(bào)警效果。
使用BigDecimal判斷是否達(dá)到報(bào)警值
使用BigDecimal判斷溫濕度是否達(dá)到報(bào)警上下限值的步驟如下:
1.創(chuàng)建BigDecimal對象來表示溫濕度的值,例如:
BigDecimal temperature = new BigDecimal("26.5");
BigDecimal humidity = new BigDecimal("70.5");2.創(chuàng)建BigDecimal對象來表示報(bào)警上下限值,例如:
BigDecimal minTemperature = new BigDecimal("20.0");
BigDecimal maxTemperature = new BigDecimal("30.0");
BigDecimal minHumidity = new BigDecimal("50.0");
BigDecimal maxHumidity = new BigDecimal("80.0");3.使用compareTo()方法比較溫濕度的值和報(bào)警上下限值的大小關(guān)系,例如:
if (temperature.compareTo(minTemperature) < 0 || temperature.compareTo(maxTemperature) > 0) {
// 溫度超出報(bào)警范圍
}
if (humidity.compareTo(minHumidity) < 0 || humidity.compareTo(maxHumidity) > 0) {
// 濕度超出報(bào)警范圍
}在這個(gè)示例中,我們使用compareTo()方法比較了溫濕度的值和報(bào)警上下限值的大小關(guān)系。如果溫濕度的值超出了報(bào)警范圍,就可以執(zhí)行相應(yīng)的報(bào)警操作。
需要注意的是,使用BigDecimal進(jìn)行比較時(shí),需要使用compareTo()方法而不是直接使用>, <, ==等運(yùn)算符,以避免由于浮點(diǎn)數(shù)運(yùn)算精度問題而導(dǎo)致比較結(jié)果不準(zhǔn)確。
TextView 紅色閃爍報(bào)警效果
要實(shí)現(xiàn) TextView 的紅色閃爍報(bào)警效果,可以通過使用 AnimationDrawable 來實(shí)現(xiàn)。具體步驟如下:
1.在 res/drawable 目錄下創(chuàng)建一個(gè) XML 文件,用于定義閃爍動畫。
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">
<item android:drawable="@color/red" android:duration="500" />
<item android:drawable="@android:color/transparent" android:duration="500" />
</animation-list>在上述代碼中,我們使用 animation-list 標(biāo)簽定義了一個(gè)逐幀動畫,其中包含兩幀,第一幀的 drawable 是紅色,持續(xù)時(shí)間為 500 毫秒,第二幀的 drawable 是透明的,持續(xù)時(shí)間也為 500 毫秒。通過不斷循環(huán)播放這兩幀,就可以實(shí)現(xiàn)閃爍效果。
2.在代碼中獲取 TextView 控件,并設(shè)置其背景為上述定義的動畫。
TextView alertTextView = findViewById(R.id.alert_textview); alertTextView.setBackgroundResource(R.drawable.alert_animation); AnimationDrawable animationDrawable = (AnimationDrawable) alertTextView.getBackground(); animationDrawable.start();
在上述代碼中,我們獲取了布局文件中定義的 TextView 控件,并設(shè)置其背景為上述定義的動畫。然后,我們從 TextView 的背景中獲取了 AnimationDrawable 對象,并調(diào)用了其 start() 方法,啟動了閃爍動畫。
通過上述步驟,即可實(shí)現(xiàn) TextView 的紅色閃爍報(bào)警效果。需要注意的是,如果需要停止閃爍動畫,只需要調(diào)用 AnimationDrawable 的 stop() 方法即可。
到此這篇關(guān)于Android使用AnimationDrawable實(shí)現(xiàn)閃爍紅光動畫效果的文章就介紹到這了,更多相關(guān)Android閃爍紅光動畫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Android 開機(jī)自啟動Service實(shí)現(xiàn)詳解
這篇文章主要為大家介紹了Android 開機(jī)自啟動Service實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06
Android利用shape實(shí)現(xiàn)各種簡單的形狀
這篇文章主要給大家介紹了關(guān)于Android中利用shape實(shí)現(xiàn)各種簡單的形狀的相關(guān)資料,文中給出了詳細(xì)的示例代碼供大家參考學(xué)習(xí),需要的朋友們下面跟著小編一起來學(xué)習(xí)學(xué)習(xí)吧。2017-05-05
Android 阿里云OSS文件上傳的實(shí)現(xiàn)示例
這篇文章主要介紹了Android 阿里云OSS文件上傳的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
Android實(shí)現(xiàn)Reveal圓形Activity轉(zhuǎn)場動畫的完整步驟
這篇文章主要給大家介紹了關(guān)于Android Reveal圓形Activity轉(zhuǎn)場動畫的實(shí)現(xiàn)過程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-11-11
Android 4.4以上"沉浸式"狀態(tài)欄效果的實(shí)現(xiàn)方法
Android與ios效果互仿早已不是什么稀奇的事,我猜大概這個(gè)效果來自ios吧,有爭議說這種效果不能叫做沉浸式,叫透明狀態(tài)欄更合適,我也感覺這和沉浸式的含義不太一致。但是大家都這么叫了,那就這樣唄。下面來一起看看關(guān)于Android 4.4以上"沉浸式"效果的實(shí)現(xiàn)方法。2016-09-09
Android實(shí)現(xiàn)手勢滑動和簡單動畫效果
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)手勢滑動和簡單動畫效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05
Android使用recyclerview打造真正的下拉刷新上拉加載效果
這篇文章先介紹如何使用這個(gè)recyclerview,WZMRecyclerview 是一個(gè)集成了 下拉刷新、上拉加載、滑到底部自動加載、添加刪除頭尾部 四個(gè)主要功能的recyclerview,需要的朋友可以參考下2016-11-11
Android Studio Kotlin代碼和java代碼相互轉(zhuǎn)化實(shí)例
這篇文章主要介紹了Android Studio Kotlin代碼和java代碼相互轉(zhuǎn)化實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03

