国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android 系統(tǒng)鎖屏實現(xiàn)固件升級動畫

2019-11-06 09:40:33
字體:
供稿:網(wǎng)友

前言

在Android的開發(fā)過程中,有時候會有一些需求,實現(xiàn)一個類似鎖屏的功能,我們經(jīng)常會使用的一些懸浮窗效果或者彈出界面霸占整個手機屏幕,禁止用戶交互,比如:手機的虛擬導航菜單屏蔽掉,狀態(tài)欄禁止下拉或隱藏,原因就是用戶可以借助下拉狀態(tài)欄跳出程序回到桌面,如何屏蔽虛擬導航菜單欄和禁止下拉狀態(tài)欄呢?Android 沒有提供API 讓我們來調(diào)用,只有查看源碼, 利用java 的反射機制來屏蔽,結果效果不怎么理想。后來就想有沒有更好的辦法來實現(xiàn)和優(yōu)化呢,這就想到了WindowManger,例如Android本身就提供了Dialog等控件來實現(xiàn),但是在很多情況下,我們需要更加靈活的使用方式,比如完全自定義浮出窗口中所需要顯示的內(nèi)容等,這個時候我們就會用到WindowManager.addView的方式來顯示一個自定義的window,來遮擋住Activity里的布局,最終繞過了Activity。

正題

預覽下要實現(xiàn)的效果:

這里寫圖片描述 首先我們添加權限:

<!-- 系統(tǒng)彈框權限 --> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>

把Activity的主題設置為Dialog 的樣式:

<activity android:name=".UpdateFirmwareActivity" android:theme="@style/dialog_translucent"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter></activity>

MainActivity的主要代碼:

WindowManager wm=(WindowManager)getapplicationContext().getSystemService(Context.WINDOW_SERVICE); WindowManager.LayoutParams wmParams = new WindowManager.LayoutParams(); wmParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ERROR; wmParams.format = PixelFormat.TRANSPARENT; wmParams.flags=WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR; wmParams.width= Adaptation.screenWidth; wmParams.height=Adaptation.screenHeight; wm.addView(mView, wmParams); //設置全屏 getWindow().setLayout(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT);

這是設置類似系統(tǒng)鎖屏的主要代碼在onCreate()方法中調(diào)用,加載自己的布局文件用LayoutInflater來加載:

mView = LayoutInflater.from(this).inflate(R.layout.activity_update,null);

你可以在這個界面上設計成你想要的效果,就算按了鎖屏功能,你還是無法交互,只能強制重啟,直到打開這個再次打開這個界面。

上面的動畫就是簡單的屬性動畫啦! 代碼如下:

rotate_right.xml

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"> <rotate android:fromDegrees="0" android:toDegrees="-359" android:duration="1500" android:repeatCount="-1" android:pivotX="50%" android:pivotY="50%" /></set>

這是是逆時針圍著中心旋轉(zhuǎn)的,順時針旋轉(zhuǎn),把toDegrees 的值設置為正數(shù)就可以了。android:toDegrees=”-359” ,如果設置成360的話,每轉(zhuǎn)一圈,在起始的地方就會出現(xiàn)卡頓現(xiàn)象。 在MainActivity調(diào)用:

PRivate Animation OperatingAnimLeft; //逆時針旋轉(zhuǎn) //逆時針旋轉(zhuǎn) operatingAnimLeft = AnimationUtils.loadAnimation(this, R.anim.rotate_left); LinearInterpolator lin = new LinearInterpolator(); operatingAnimLeft.setInterpolator(lin); if(operatingAnimLeft!=null){ mToLeftRotate.startAnimation(operatingAnimLeft); }

最后為了防止我們調(diào)起界面退不回來,強制重啟的麻煩,設置一個監(jiān)聽事件:

/** * 防止為了退不出來,我設置一個點擊事件移除view */ mToLeftRotate.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (mView != null) { wm.removeView(mView); MainActivity.this.finish(); } } });

以上就是實現(xiàn)Android 系統(tǒng)類似鎖屏的效果的主要代碼,禁止用戶交互的方案,以上僅供參考!

源碼放在 GitHub上:【UpgradeAndLockScreen】

希望大家能夠指點或提出寶貴意見,共同學習,謝謝! 轉(zhuǎn)載請注明出處:http://blog.csdn.net/u011974987/article/details/56845216 歡迎關注我的社交網(wǎng)站! 個人博客:http://xuhaoblog.com Github:https://github.com/git-xuhao


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 察雅县| 基隆市| 昌邑市| 阿拉善右旗| 县级市| 九江县| 根河市| 横峰县| 左权县| 凭祥市| 万年县| 临夏市| 石河子市| 涞源县| 北碚区| 浦东新区| 荥阳市| 山阳县| 安阳市| 环江| 南宫市| 澄城县| 旌德县| 西盟| 蕉岭县| 昌宁县| 广平县| 丰县| 晴隆县| 阿尔山市| 永寿县| 长治市| 水城县| 宁城县| 新昌县| 双鸭山市| 衡山县| 新乡市| 云浮市| 云安县| 贵州省|