快速锁屏界面。是弹出的基于mainActivity的界面。
XML代码如下
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_vertical|center_horizontal"
>
<LinearLayout
android:id="@+id/layout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="@drawable/dialog_bg"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="20px"
android:textSize="15dp"
android:gravity="center"
android:textColor="#FFFFFF"
android:text="一键锁定"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="10dp"
android:textColor="#FFFFFF"
android:text="\t锁定时长为:"
/>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<Button
android:layout_height="30dp"
android:layout_width="wrap_content"
android:id="@+id/jia10"
android:textSize="20px"
android:textColor="#FFFFFF"
android:background="#000000"
android:text="+10"
android:gravity="center"
android:layout_marginLeft="15dp"
android:layout_marginRight="10dp"
android:layout_weight="1"/>
<Button
android:layout_height="30dp"
android:layout_width="wrap_content"
android:id="@+id/jia"
android:textColor="#FFFFFF"
android:background="#000000"
android:text="+"
android:gravity="center"
android:layout_marginRight="10dp"
android:layout_weight="1"/>
<Button
android:layout_height="30dp"
android:layout_width="wrap_content"
android:id="@+id/jia5"
android:textColor="#FFFFFF"
android:background="#000000"
android:textSize="20px"
android:text="+5"
android:layout_marginRight="15dp"
android:gravity="center"
android:layout_weight="1"/>
</LinearLayout>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="20px"
android:id="@+id/shichang"
android:textSize="15dp"
android:textColor="#EE6A50"
android:gravity="center"
android:text="1分钟"
/>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<Button
android:layout_height="30dp"
android:layout_width="wrap_content"
android:id="@+id/jian10"
android:textSize="20px"
android:textColor="#FFFFFF"
android:background="#000000"
android:text="-10"
android:gravity="center"
android:layout_marginLeft="15dp"
android:layout_marginRight="10dp"
android:layout_weight="1"/>
<Button
android:layout_height="30dp"
android:layout_width="wrap_content"
android:id="@+id/jian"
android:textColor="#FFFFFF"
android:background="#000000"
android:textSize="40px"
android:text="-"
android:gravity="center"
android:layout_marginRight="10dp"
android:layout_weight="1"/>
<Button
android:layout_height="30dp"
android:layout_width="wrap_content"
android:id="@+id/jian5"
android:textColor="#FFFFFF"
android:background="#000000"
android:textSize="20px"
android:text="-5"
android:layout_marginRight="15dp"
android:gravity="center"
android:layout_weight="1"/>
</LinearLayout>
<LinearLayout
android:layout_height="wrap_content"
android:layout_width="match_parent">
<Button
android:layout_height="50dp"
android:layout_width="wrap_content"
android:text="取消"
android:id="@+id/cancel"
android:layout_marginTop="25dp"
android:layout_marginLeft="15dp"
android:layout_marginRight="5dp"
android:layout_weight="1"
android:background="#575757"
/>
<Button
android:layout_height="50dp"
android:layout_width="wrap_content"
android:textColor="#98F5FF"
android:text="立即启动"
android:id="@+id/confirm"
android:layout_marginTop="25dp"
android:layout_marginRight="15dp"
android:layout_weight="1"
android:background="#575757"
/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
需要注意的是,这里我们弹出的fastActivity只是占用屏幕的一部分。其他地方显示mainActivity,因此要将该activity的主题设置为透明。在配置fastActivity中
<activity
android:name="com.example.mylock.fastActivity"
android:theme="@android:style/Theme.Translucent" /> <!--这句话配置主题为透明-->
下面就是fastActivity的java代码了
package com.example.mylock;
import java.text.SimpleDateFormat;
import java.util.Date;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.TextView;
/*
* 快速锁屏的选择时长界面
*/
public class fastActivity extends Activity {
private Button jia10, jia, jia5, jian10, jian, jian5;
private TextView shichang;
private Button cancel, startButton;
private long time_long = 1;
private getDataFromSp gdfs;
private Context myContext;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);// 重写父类方法
requestWindowFeature(Window.FEATURE_NO_TITLE); // 去除标题栏
setContentView(R.layout.activity_fast);
init();
setOnClickToButton();
}
public void init() {
myContext = this.getApplicationContext();
gdfs = new getDataFromSp(myContext);
jia10 = (Button) findViewById(R.id.jia10);
jia = (Button) findViewById(R.id.jia);
jia5 = (Button) findViewById(R.id.jia5);
jian10 = (Button) findViewById(R.id.jian10);
jian = (Button) findViewById(R.id.jian);
jian5 = (Button) findViewById(R.id.jian5);
shichang = (TextView) findViewById(R.id.shichang);
cancel = (Button) findViewById(R.id.cancel);
startButton = (Button) findViewById(R.id.confirm);
}
public void setOnClickToButton() {
jia10.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
time_long += 10;
shichang.setText(time_long + "分钟");
}
});
jia.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
time_long += 1;
shichang.setText(time_long + "分钟");
}
});
jia5.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
time_long += 5;
shichang.setText(time_long + "分钟");
}
});
jian10.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
if (time_long > 10)
time_long -= 10;
else
time_long = 1;
shichang.setText(time_long + "分钟");
}
});
jian.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
if (time_long > 1)
time_long -= 1;
else
time_long = 1;
shichang.setText(time_long + "分钟");
}
});
jian5.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
if (time_long > 5)
time_long -= 5;
else
time_long = 1;
shichang.setText(time_long + "分钟");
}
});
cancel.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
finish();
}
});
startButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
// 锁屏次数+1
gdfs.setLockNum();
// 增加锁屏时长
gdfs.setLockTime_long(time_long);
// 保存这一次的锁屏时长
gdfs.saveFastLockTime(time_long);
// 计算应该解锁的时间
setStopTime(time_long);
Log.v("时间", String.valueOf(time_long));
gdfs.setFastStatusToTrue();
// 在这里启动锁屏服务
Intent intent = new Intent(fastActivity.this,
tixingActivity.class);
startActivity(intent);
finish();
}
});
}
// 这里通过时长计算出应该结束锁屏的时-分,保存到SP文件中
public void setStopTime(long time) {
// 获取启动时的小时-分钟,保存到SP中,用于关机再次启动的时候跑时间。
long t = System.currentTimeMillis();
Date date = new Date(t);
SimpleDateFormat format = new SimpleDateFormat("HH");
String hour = format.format(date);
format = new SimpleDateFormat("mm");
String minute = format.format(date);
int h = Integer.parseInt(hour);
int m = Integer.parseInt(minute);
h += time / 60;
m += time % 60;
if (h > 23)
h = 23;
gdfs.setStopFastLockTimeOfHour(h);
gdfs.setStopFastLockTimeOfMinute(m);
}
}
快速锁屏的重点,其实就是保存一个Long类型的数值到SP文件中,这个值就是锁屏的分钟,当然,我们在启动锁屏服务之前要计算出准确的停止锁屏的时间,这里有个问题就是,当你设置锁屏时间太长超过了当天夜晚12点,会自动将解锁的小时设置为23,即夜晚11点。
源码下载在这里哦。锁屏源码