快速锁屏界面。是弹出的基于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点。
源码下载在这里哦。锁屏源码