(3)第一个单机项目手机锁----------fastActivity的实现

快速锁屏界面。是弹出的基于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点。

源码下载在这里哦。锁屏源码

猜你喜欢

转载自blog.csdn.net/wanmingjking/article/details/80549774