定製個性化屏保

每次我們鎖鍵盤的時候,都看到如下頁面:

 

       看多了就產生審美疲勞手機是追求個性化的消費品,想到就是替換她,再找一個。

       如何替換呢?Android 提供如下函數:

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 事件,我現在還納悶了……

 

   最後就是再找一個她(個性化屏保)我目前在模仿Hero屏保,所以就以她來說了。

首先用一個服務啓動一個Activity.

如下:

           Intent it = new Intent();

       it.setClass(this, ScreenShow.class);

       it.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

       this.startActivity(it);

還要設置該Activity爲單態,並且爲透明屬性如下:

android:launchMode="singleTask" android:theme="@style/Theme.nd_Dialog" 其中透明ActivityStyle設置爲

 

<style name="Theme.nd_Dialog" parent="android:style/Theme.Translucent">

       <item name="android:windowNoTitle">true</item>

</style>

 

我們體驗過Hero屏保界面,就會發現,屏保的移動與手勢的用力大小相關。用力重的時候,屏保界面自動往下滑。

VelocityTracker mVelocityTracker;

if (mVelocityTracker == null) {

           mVelocityTracker = VelocityTracker.obtain();

}

 

mVelocityTracker.addMovement(event);

mVelocityTracker.computeCurrentVelocity(1000);

float yVel = mVelocityTracker.getYVelocity();

其中屏保自動往下滑的動作不是用Animation來做的,而是通過Handler, 隔一段時間發送一個消息達到動畫的效果:

mHandler.sendMessageAtTime(mHandler.obtainMessage(MSG_ANIMATE),

             mCurAnimationTime);

比起Animation, 通過Handle可以達到自如地控制動畫.

 

最後,講講屏保內容用到Receiver

// 時間Receiver

intentFilter.addAction(Intent.ACTION_TIME_CHANGED);

    intentFilter.addAction(Intent.ACTION_TIME_TICK);

    intentFilter.addAction(Intent.ACTION_TIMEZONE_CHANGED);

 

    // 配置變化關閉系統,

    intentFilter.addAction(Intent.ACTION_CONFIGURATION_CHANGED);

    intentFilter.addAction(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);

        

//網絡名稱Receiver(比如中國移動等)  intentFilter.addAction(Telephony.Intents.SPN_STRINGS_UPDATED_ACTION);

 

    // 電量改變Receiver

    intentFilter.addAction(Intent.ACTION_BATTERY_CHANGED);

 

// Sim狀態Receiver intentFilter.addAction(TelephonyIntents.ACTION_SIM_STATE_CHANGED;

 

……  慕然回首,那人卻在燈火闌珊處……

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章