以下代码来自AndroidBus
package com.example.wow.demo_lockscreen;
import android.content.Context;
import android.graphics.PixelFormat;
import android.graphics.Point;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.Button;
/**
* Created by wow on 15-4-9.
*/
public class LockScreen {
Point mLpSize;
Button mBtnUnlock;
ViewGroup mView;
final WindowManager mWindowManager;
final WindowManager.LayoutParams mLp;
public LockScreen(Context mContext){
mView = (ViewGroup) LayoutInflater.from(mContext).inflate(R.layout.lock_screen_view, null);
mWindowManager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
mLp = new WindowManager.LayoutParams();
mBtnUnlock = (Button)mView.findViewById(R.id.btn_unlock);
mBtnUnlock.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
show(false);
}
});
initLp();
}
private void initLp(){
mLp.type = WindowManager.LayoutParams.TYPE_SYSTEM_ERROR;// TYPE_SYSTEM_ALERT; 让当前显示的view无理由地出现在最上端
mLp.format = PixelFormat.RGBA_8888;
mLp.flags |= WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
| WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
| WindowManager.LayoutParams.FLAG_FULLSCREEN
| WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;
mLp.systemUiVisibility = View.STATUS_BAR_HIDDEN;
mLp.width = WindowManager.LayoutParams.MATCH_PARENT;
mLp.height = WindowManager.LayoutParams.MATCH_PARENT;
}
public void show(boolean flag){
if (flag){
mWindowManager.addView(mView, mLp);
} else {
mWindowManager.removeView(mView);
}
}
}
=============================================================================
package com.example.wow.demo_lockscreen;
import android.app.Activity;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
//<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
public class MainActivity extends Activity {
Button mBtnLock;
LockScreen mLockScreen;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mBtnLock = (Button)findViewById(R.id.btn_lock);
mLockScreen = new LockScreen(this);
mBtnLock.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mLockScreen.show(true);
}
});
}
}