定制个性化屏保
定制個性化屏保
每次我們鎖鍵盤的時候,都看到如下頁面:
?????? 看多了就產(chǎn)生審美疲勞, 手機是追求個性化的消費品,想到就是替換她,再找一個。
?????? 如何替換呢?Android 提供如下函數(shù):
KeyguardManager mKeyguardManager = (KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE);
??? KeyguardLock mKeyguardLock = mKeyguardManager.newKeyguardLock("");
??? mKeyguardLock.disableKeyguard();
??? 拿到鍵盤守護鎖,屏蔽她既可。接下來就是在合適的時機替代她, 這個合適的時機就是接收Intent.ACTION_SCREEN_OFF.
?? IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_OFF);
registerReceiver(mReceiver, filter);
? ?這里有點奇怪的是,如果通過android.manifest 配置receiver的話,就得不到Action_screen_off 事件,我現(xiàn)在還納悶了……
?
?? 最后就是再找一個她(個性化屏保)了, 我目前在模仿Hero屏保,所以就以她來說了。
首先用一個服務(wù)啟動一個Activity.
如下:
?????? ??? Intent it = new Intent();
?????? it.setClass(this, ScreenShow.class);
?????? it.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
?????? this.startActivity(it);
還要設(shè)置該Activity為單態(tài),并且為透明, 屬性如下:
android:launchMode="singleTask" android:theme="@style/Theme.nd_Dialog" 其中透明Activity的Style設(shè)置為
?
<style name="Theme.nd_Dialog" parent="android:style/Theme.Translucent">
?????? <item name="android:windowNoTitle">true</item>
</style>
?
我們體驗過Hero屏保界面,就會發(fā)現(xiàn),屏保的移動與手勢的用力大小相關(guān)。用力重的時候,屏保界面自動往下滑。
VelocityTracker mVelocityTracker;
if (mVelocityTracker == null) {
?????????? mVelocityTracker = VelocityTracker.obtain();
}
?
mVelocityTracker.addMovement(event);
mVelocityTracker.computeCurrentVelocity(1000);
float yVel = mVelocityTracker.getYVelocity();
其中屏保自動往下滑的動作不是用Animation來做的,而是通過Handler, 隔一段時間發(fā)送一個消息達到動畫的效果:
mHandler.sendMessageAtTime(mHandler.obtainMessage(MSG_ANIMATE),
???????????? mCurAnimationTime);
比起Animation, 通過Handle可以達到自如地控制動畫.
?
最后,講講屏保內(nèi)容用到Receiver,
// 時間Receiver
intentFilter.addAction(Intent.ACTION_TIME_CHANGED);
??? intentFilter.addAction(Intent.ACTION_TIME_TICK);
??? intentFilter.addAction(Intent.ACTION_TIMEZONE_CHANGED);
?
??? // 配置變化, 關(guān)閉系統(tǒng),
??? intentFilter.addAction(Intent.ACTION_CONFIGURATION_CHANGED);
??? intentFilter.addAction(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
?????? ?
//網(wǎng)絡(luò)名稱Receiver(比如中國移動等)? intentFilter.addAction(Telephony.Intents.SPN_STRINGS_UPDATED_ACTION);
?
??? // 電量改變Receiver
??? intentFilter.addAction(Intent.ACTION_BATTERY_CHANGED);
?
// Sim狀態(tài)Receiver intentFilter.addAction(TelephonyIntents.ACTION_SIM_STATE_CHANGED;
?
哈……? 慕然回首,那人卻在燈火闌珊處……
總結(jié)
- 上一篇: 创新+工匠,TCL推XESS重定义电视行
- 下一篇: 微型计算机原理无微机接口,微机原理与接口