㈠ android studio怎样实现夜间模式
就是在设置里提供一个ToggleButton,打开或者关闭夜间模式。同时在新的API里提供接口,对所有支持夜间模式的应用进行统一调度。打开
总开关,默认开启其他第三方应用的夜间模式。然后也设置一个规则,可忽略某个软件。再自动化一些,可以设置个时间段,即默认开启夜间模式的时间段。
这个Feature的实现必然要第三方开发者支持。虽然有时候夜间模式看起来可有可无,但是对于喜欢睡前玩一下手机的人来说,也是个挺人性化的功能呢。
当然目前Android API还没有这个,不过我们还是可以在自己应用中给用户接口,让用户选择夜间模式,或者设置个时间段触发该功能。
写了个小Demo,简单了实现了切换夜间模式,总结一下:
在工程目录res/values/下新建attrs.xml,内容如下:
view sourceprint?
01.<?xml version="1.0" encoding="utf-8"?>
02.<resources>
03.
04.<attr name="btnColor" format="color" />
05.<attr name="mainBackground" format="color" />
06.<attr name="mainTextColor" format="reference|color" />
07.<attr name="textString" format="string" />
08.
09.</resources>
然后就是在style中定义两种主题,每一种主题都要至少包含以上attrs中的几种属性:
view sourceprint?
01.<?xml version="1.0" encoding="utf-8"?>
02.<resources>
03.
04.<!-- 默认 -->
05.<style name="MyThemeDefault" parent="@android:style/Theme">
06.<item name="btnColor">#00ff00</item>
07.<item name="mainBackground">#ffffff</item>
08.<item name="mainTextColor">#000000</item>
09.<item name="textString">默认主题</item>
10.</style>
11.
12.<!-- 夜间 -->
13.<style name="MyThemeNight" parent="@android:style/Theme">
14.<item name="btnColor">#0000ff</item>
15.<item name="mainBackground">#000000</item>
16.<item name="mainTextColor">#ffffff</item>
17.<item name="textString">夜间主题</item>
18.</style>
19.
20.</resources>
主题定义好了,然后就是在布局文件中引用了,里面有?号的地方就是引用以上定义的label:
view sourceprint?
01.<?xml version="1.0" encoding="utf-8"?>
02.<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
03.android:layout_width="fill_parent"
04.android:layout_height="fill_parent"
05.android:background="?mainBackground"
06.android:orientation="vertical" >
07.
08.<TextView
09.android:layout_width="fill_parent"
10.android:layout_height="wrap_content"
11.android:text="?textString" />
12.
13.<ImageView
14.android:id="@+id/ivBook"
15.android:layout_width="62dip"
16.android:layout_height="42dip"
17.android:layout_gravity="center"
18.android:layout_marginTop="0dip"
19.android:gravity="center"
20.android:src="?btnColor" />
21.
22.<Button
23.android:id="@+id/btnSet"
24.android:layout_width="wrap_content"
25.android:layout_height="wrap_content"
26.android:layout_marginTop="50dp"
27.android:text="改变主题" />
28.
29.<Button
30.android:id="@+id/btnGet"
31.android:layout_width="wrap_content"
32.android:layout_height="wrap_content"
33.android:layout_marginTop="50dp"
34.android:text="Get Flag" />
35.
36.</LinearLayout>
下面就是在Activiy中定义要使用那种主题了:
view sourceprint?
01.public class MainActivity extends Activity {
02.private boolean blFlag = false;
03.private ImageView ivBook;
04.private Button btnSet;
05.private Button btnGet;
06.
07.@Override
08.public void onCreate(Bundle savedInstanceState) {
09.super.onCreate(savedInstanceState);
10.this.setTheme(R.style.MyThemeDefault);
11.setContentView(R.layout.main);
12.btnSet = (Button) findViewById(R.id.btnSet);
13.btnGet = (Button) findViewById(R.id.btnGet);
14.ivBook = (ImageView) findViewById(R.id.ivBook);
15.btnSet.setOnClickListener(new onClickListenerImp());
16.btnGet.setOnClickListener(new onClickListenerImp());
17.ivBook.setOnClickListener(new onClickListenerImp());
18.
19.}
20.
21.class onClickListenerImp implements OnClickListener {
22.@Override
23.public void onClick(View v) {
24.// TODO Auto-generated method stub
25.if (v == btnSet || v == ivBook) {
26.if (blFlag) {
27.setTheme(R.style.MyThemeDefault);
28.blFlag = false;
29.} else if (!blFlag) {
30.setTheme(R.style.MyThemeNight);
31.blFlag = true;
32.}
33.setContentView(R.layout.main);
34.btnSet = (Button) findViewById(R.id.btnSet);
35.btnGet = (Button) findViewById(R.id.btnGet);
36.ivBook = (ImageView) findViewById(R.id.ivBook);
37.btnSet.setOnClickListener(new onClickListenerImp());
38.btnGet.setOnClickListener(new onClickListenerImp());
39.ivBook.setOnClickListener(new onClickListenerImp());
40.} else if (v == btnGet) {
41.Toast.makeText(MainActivity.this, "blFlag: " + blFlag,
42.Toast.LENGTH_SHORT).show();
43.}
44.}
45.
46.}
47.
48.}
要注意的是,在onClickListenerImp()类中的
view sourceprint?
1.setContentView(R.layout.main);
这句后面,要重新绑定各组件及其监听器,不然只能监听一次。这是因为在setContentView后,组件不是之前那个组件了。
㈡ (高分,Android)求一个时间选择控件,支持选择一段时间
Android 时间段选择
看看这个符合不
㈢ 怎么让手机桌面上时间和日期显示出来
设置时间日期在手机桌面上显示步骤如下:
1、以MIUI系统为例,长按手机底部菜单键,进入桌面编辑模式,点击“桌面工具”菜单。
Android有较多的软件,面向Android手机桌面的软件通常称为Android桌面软件。
安装这类软件后可以不采用Android原生界面,进入一些个性化地主页。市场上的Android桌面主要在桌面配色,桌面主题及桌面滑屏效果方面做了很大的改进,使Android用户桌面体验得到了很大的提升。
㈣ 有没有这样一款安卓闹钟软件,可以在指定时刻响起一段时间后自动关闭,而且这段时间可以设置的
有,很多闹钟都有,不过我用过最好用的是 Xtreme闹钟,老外的,你说的功能它都有,而且比你想的更加方便。比起国内那些闹钟好用多了,没有乱七八糟的其他功能,而闹钟的功能确非常完善,可以下到无广告版的,强烈建议使用-------里面有重响间隔,就是每隔多少时间响一次,高级设置里有关闭闹钟时间,就是你要的功能,还有闹钟声音从小到大设置,打盹方式,就是响一次,你不想起来,过几分钟再响。
㈤ android 怎么判断是否在时间段 范围内
Calendar cal = Calendar.getInstance();// 当前日期
int hour = cal.get(Calendar.HOUR_OF_DAY);// 获取小时
int minute = cal.get(Calendar.MINUTE);// 获取分钟
int minuteOfDay = hour * 60 + minute;// 从0:00分开是到目前为止的分钟数
final int start = 17 * 60 + 20;// 起始时间 17:20的分钟数
final int end = 19 * 60;// 结束时间 19:00的分钟数
if (minuteOfDay >= start && minuteOfDay <= end) {
System.out.println("在外围内");
} else {
System.out.println("在外围外");
}
推荐学安卓的利器:
android学习手册,里面有源码。android学习手册包含9个章节,108个例子,源码文档随便看,例子都是可交互,可运行,源码采用android studio目录结构,高亮显示代码,文档都采用文档结构图显示,可以快速定位。360手机助手中下载,图标上有贝壳:
㈥ android自定义时间选择器,滑动选择日期,智能判断每月多少天
自定义一个类:
/DateTimePicker/src/com/wwj/datetimepicker/DateTimePickDialogUtil.java
[java] view plain
package com.wwj.datetimepicker;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.widget.DatePicker;
import android.widget.DatePicker.OnDateChangedListener;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TimePicker;
import android.widget.TimePicker.OnTimeChangedListener;
/**
* 日期时间选择控件 使用方法: private EditText inputDate;//需要设置的日期时间文本编辑框 private String
* initDateTime="2012年9月3日 14:44",//初始日期时间值 在点击事件中使用:
* inputDate.setOnClickListener(new OnClickListener() {
*
* @Override public void onClick(View v) { DateTimePickDialogUtil
* dateTimePicKDialog=new
* DateTimePickDialogUtil(SinvestigateActivity.this,initDateTime);
* dateTimePicKDialog.dateTimePicKDialog(inputDate);
*
* } });
*
* @author
*/
public class DateTimePickDialogUtil implements OnDateChangedListener,
OnTimeChangedListener {
private DatePicker datePicker;
private TimePicker timePicker;
private AlertDialog ad;
private String dateTime;
private String initDateTime;
private Activity activity;
/**
* 日期时间弹出选择框构造函数
*
* @param activity
* :调用的父activity
* @param initDateTime
* 初始日期时间值,作为弹出窗口的标题和日期时间初始值
*/
public DateTimePickDialogUtil(Activity activity, String initDateTime) {
this.activity = activity;
this.initDateTime = initDateTime;
}
public void init(DatePicker datePicker, TimePicker timePicker) {
Calendar calendar = Calendar.getInstance();
if (!(null == initDateTime || "".equals(initDateTime))) {
calendar = this.getCalendarByInintData(initDateTime);
} else {
initDateTime = calendar.get(Calendar.YEAR) + "年"
+ calendar.get(Calendar.MONTH) + "月"
+ calendar.get(Calendar.DAY_OF_MONTH) + "日 "
+ calendar.get(Calendar.HOUR_OF_DAY) + ":"
+ calendar.get(Calendar.MINUTE);
}
datePicker.init(calendar.get(Calendar.YEAR),
calendar.get(Calendar.MONTH),
calendar.get(Calendar.DAY_OF_MONTH), this);
timePicker.setCurrentHour(calendar.get(Calendar.HOUR_OF_DAY));
timePicker.setCurrentMinute(calendar.get(Calendar.MINUTE));
}
/**
* 弹出日期时间选择框方法
*
* @param inputDate
* :为需要设置的日期时间文本编辑框
* @return
*/
public AlertDialog dateTimePicKDialog(final EditText inputDate) {
LinearLayout dateTimeLayout = (LinearLayout) activity
.getLayoutInflater().inflate(R.layout.common_datetime, null);
datePicker = (DatePicker) dateTimeLayout.findViewById(R.id.datepicker);
timePicker = (TimePicker) dateTimeLayout.findViewById(R.id.timepicker);
init(datePicker, timePicker);
timePicker.setIs24HourView(true);
timePicker.setOnTimeChangedListener(this);
ad = new AlertDialog.Builder(activity)
.setTitle(initDateTime)
.setView(dateTimeLayout)
.setPositiveButton("设置", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
inputDate.setText(dateTime);
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
inputDate.setText("");
}
}).show();
onDateChanged(null, 0, 0, 0);
return ad;
}
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
onDateChanged(null, 0, 0, 0);
}
public void onDateChanged(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
// 获得日历实例
Calendar calendar = Calendar.getInstance();
calendar.set(datePicker.getYear(), datePicker.getMonth(),
datePicker.getDayOfMonth(), timePicker.getCurrentHour(),
timePicker.getCurrentMinute());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm");
dateTime = sdf.format(calendar.getTime());
ad.setTitle(dateTime);
}
/**
* 实现将初始日期时间2012年07月02日 16:45 拆分成年 月 日 时 分 秒,并赋值给calendar
*
* @param initDateTime
* 初始日期时间值 字符串型
* @return Calendar
*/
private Calendar getCalendarByInintData(String initDateTime) {
Calendar calendar = Calendar.getInstance();
// 将初始日期时间2012年07月02日 16:45 拆分成年 月 日 时 分 秒
String date = spliteString(initDateTime, "日", "index", "front"); // 日期
String time = spliteString(initDateTime, "日", "index", "back"); // 时间
String yearStr = spliteString(date, "年", "index", "front"); // 年份
String monthAndDay = spliteString(date, "年", "index", "back"); // 月日
String monthStr = spliteString(monthAndDay, "月", "index", "front"); // 月
String dayStr = spliteString(monthAndDay, "月", "index", "back"); // 日
String hourStr = spliteString(time, ":", "index", "front"); // 时
String minuteStr = spliteString(time, ":", "index", "back"); // 分
int currentYear = Integer.valueOf(yearStr.trim()).intValue();
int currentMonth = Integer.valueOf(monthStr.trim()).intValue() - 1;
int currentDay = Integer.valueOf(dayStr.trim()).intValue();
int currentHour = Integer.valueOf(hourStr.trim()).intValue();
int currentMinute = Integer.valueOf(minuteStr.trim()).intValue();
calendar.set(currentYear, currentMonth, currentDay, currentHour,
currentMinute);
return calendar;
}
/**
* 截取子串
*
* @param srcStr
* 源串
* @param pattern
* 匹配模式
* @param indexOrLast
* @param frontOrBack
* @return
*/
public static String spliteString(String srcStr, String pattern,
String indexOrLast, String frontOrBack) {
String result = "";
int loc = -1;
if (indexOrLast.equalsIgnoreCase("index")) {
loc = srcStr.indexOf(pattern); // 取得字符串第一次出现的位置
} else {
loc = srcStr.lastIndexOf(pattern); // 最后一个匹配串的位置
}
if (frontOrBack.equalsIgnoreCase("front")) {
if (loc != -1)
result = srcStr.substring(0, loc); // 截取子串
} else {
if (loc != -1)
result = srcStr.substring(loc + 1, srcStr.length()); // 截取子串
}
return result;
}
}
/DateTimePicker/src/com/wwj/datetimepicker/DateTimePickerActivity.java
[java] view plain
package com.wwj.datetimepicker;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;
/**
* 时间拾取器界面
*
* @author wwj_748
*
*/
public class DateTimePickerActivity extends Activity {
/** Called when the activity is first created. */
private EditText startDateTime;
private EditText endDateTime;
private String initStartDateTime = "2013年9月3日 14:44"; // 初始化开始时间
private String initEndDateTime = "2014年8月23日 17:44"; // 初始化结束时间
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 两个输入框
startDateTime = (EditText) findViewById(R.id.inputDate);
endDateTime = (EditText) findViewById(R.id.inputDate2);
startDateTime.setText(initStartDateTime);
endDateTime.setText(initEndDateTime);
startDateTime.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
DateTimePickDialogUtil dateTimePicKDialog = new DateTimePickDialogUtil(
DateTimePickerActivity.this, initEndDateTime);
dateTimePicKDialog.dateTimePicKDialog(startDateTime);
}
});
endDateTime.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
DateTimePickDialogUtil dateTimePicKDialog = new DateTimePickDialogUtil(
DateTimePickerActivity.this, initEndDateTime);
dateTimePicKDialog.dateTimePicKDialog(endDateTime);
}
});
}
}
自定义界面:
/DateTimePicker/res/layout/common_datetime.xml
[html] view plain
<?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:orientation="vertical" >
<DatePicker
android:id="@+id/datepicker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:calendarViewShown="false" />
<TimePicker
android:id="@+id/timepicker"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
㈦ 安卓平板熄屏显示时间
方法如下:
1、打开华为pad手机的设置。
2、在设置这里,我们选择显示。
3、在显示这里,我们就可以设置屏幕睡眠时间,点击下休眠。
4、我们可以设置15秒、30秒、1分钟、2分钟、5分钟、10分钟这6个时间段。
进入手机设置界面,选择显示和息屏的时间,就设置好了。
㈧ android 如何获取当天23:59的毫秒数
您好:很高兴回答你的问题;
主要有以下两种办法:
方法一:
Date date=new Date();
String ss= ""+date.getTime();
Calendar c = Calendar.getInstance();
long l = c.getTimeInMillis();
方法二:
Date dt= new Date();
Long time= dt.getTime();
Long time2=System.currentTimeMillis();
这里提供了两种方式获取时间,但是如果想获取前一天的时间,用日历类实现即可。
我具体写了一下如何改变日期,希望有用。
public class Test02 {public static void main(String args[]) {Calendar c = Calendar.getInstance();System.out.println("昨天是:"+c.getTime());//System.out.println("今天是:"+c.get(Calendar.YEAR)+"年"+c.get(Calendar.MONTH+1)+"月"+c.get(Calendar.DAY_OF_YEAR)+"日");c.add(Calendar.DAY_OF_YEAR, -1);System.out.println("昨天是:"+c.getTime());//System.out.println("今天是:"+c.get(Calendar.YEAR)+"年"+c.get(Calendar.MONTH+1)+"月"+c.get(Calendar.DAY_OF_YEAR)+"日");long time1 = c.getTimeInMillis();long randtime=(long)(Math.random()*(long)Math.pow(10, 6));long time2 = c.getTimeInMillis()+randtime;System.out.println(time1 + "," + time2);}} 其中long randtime=(long)(Math.random()*(long)Math.pow(10, 6));是随机产生的一个值,如果你是一天中的时间段,是不是用这个值可以控制时间段的长度,知道开始时间和时间段长度就可以知道结束时间。
肯定行!希望能帮助你,望采纳,谢谢!
㈨ android 时间选择器怎么设置不可选
先定义你的Edtext 然后为他定义一个点击事件 如 //Time 是Edtext的ID Time.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { new DatePickerDialog(text6.this, new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { QS.setText("起始日期:" + String.format("%d-%d-%d", year, monthOfYear + 1, dayOfMonth)); } //2016,1,1是弹出时间选择器的默认时间 }, 2016, 1, 2).show(); } }); 哪里不了解再问