定製個人化屏保

來源:互聯網
上載者:User

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

 

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

       如何替換呢?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" 其中透明Activity的Style設定為

 

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

 

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

 

 

原文:http://blog.csdn.net/wukunting/archive/2010/01/24/5251302.aspx

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.