styles.xml
- 往styles.xml里添加下面的主题格式,改变日期视图字体颜色与选中的颜色
<style name="CalenderViewDateCustomText" parent="android:TextAppearance.DeviceDefault.Small">
<item name="android:textColor">@android:color/black</item>
<item name="android:weekNumberColor">@android:color/holo_blue_light</item>
</style>
<style name="CalenderViewWeekCustomText" parent="android:TextAppearance.DeviceDefault.Small">
<item name="android:textColor">@android:color/holo_blue_dark</item>
</style>
calendarview.xml布局构思
- 日期视图的xml总体是一个垂直线性布局
- 里面放1个Textview文本,1个日期视图CalendarView,1个Button按钮
<CalendarView
android:id="@+id/calendarview"
android:theme="@style/CalenderViewCustom"
android:dateTextAppearance="@style/CalenderViewDateCustomText"
android:weekDayTextAppearance="@style/CalenderViewWeekCustomText"
android:layout_width="match_parent"
android:layout_height="300dp"
android:layout_marginTop="70dp" />
calendarview.java
public class calendarview extends AppCompatActivity {
private Button dingwei;
private CalendarView calendarview;
private TextView text1;
private String date;
private String date2;
Handler1 handler1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.calendarview);
calendarview = findViewById(R.id.calendarview);
final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
format.setTimeZone(TimeZone.getTimeZone("GMT+08:00"));
date = format.format(calendarview.getDate());
text1 = findViewById(R.id.text);
handler1 =new Handler1();
Thread1 thread1 =new Thread1();
thread1.start();
calendarview.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
@Override
public void onSelectedDayChange(@NonNull CalendarView calendarView, int i, int i1, int i2) {
date2 = i + "年" + (i1 + 1) + "月" + i2 + "日";
if (date2.equals("2020年4月13日")) {
Toast.makeText(getApplicationContext(), " 您选择的时间是今天 ~~~ "+ date2, Toast.LENGTH_SHORT).show();
dingwei.setVisibility(View.GONE);
} else {
dingwei.setVisibility(View.VISIBLE);
Toast.makeText(getApplicationContext(), "您手动选择的时间是: " + date2 , Toast.LENGTH_SHORT).show();
}
}
});
dingwei = view.findViewById(R.id.dingwei);
dingwei.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getApplicationContext(), "当前时间是: " + getTime(), Toast.LENGTH_SHORT).show();
}
});
return view;
}
public String getTime(){
final Calendar c = Calendar.getInstance();
c.setTimeZone(TimeZone.getTimeZone("GMT+8:00"));
String mYear = String.valueOf(c.get(Calendar.YEAR));
String mMonth = String.valueOf(c.get(Calendar.MONTH) + 1);
String mDay = String.valueOf(c.get(Calendar.DAY_OF_MONTH));
String mWay = String.valueOf(c.get(Calendar.DAY_OF_WEEK));
String mHour = String.valueOf(c.get(Calendar.HOUR_OF_DAY));
String mMinute = String.valueOf(c.get(Calendar.MINUTE));
String mSecond = String.valueOf(c.get(Calendar.SECOND));
if("1".equals(mWay)){
mWay ="日";
}else if("2".equals(mWay)){
mWay ="一";
}else if("3".equals(mWay)){
mWay ="二";
}else if("4".equals(mWay)){
mWay ="三";
}else if("5".equals(mWay)){
mWay ="四";
}else if("6".equals(mWay)){
mWay ="五";
}else if("7".equals(mWay)){
mWay ="六";
}
return mYear + "-" + mMonth + "-" + mDay+" "+"星期"+ mWay +" "+mHour+":"+mMinute+":"+mSecond;
}
class Handler1 extends android.os.Handler{
@Override
public void handleMessage(Message msg){
switch (msg.what){
case 0x8f:
text1.setText(" 当前时间为: " + getTime());
}
}
}
class Thread1 extends Thread{
@Override
public void run(){
for (int i=1;i<=1000000000;i++){
Message message =new Message();
message.what = 0x8f;
message.arg1 = i;
handler1.sendMessage(message);
try {
Thread1.sleep(1000);
}catch (InterruptedException e){
e.printStackTrace();
}
}
}
}
}
设计效果图
- 点击 当前时间 按钮
- 点击当前日期弹出提示
datepicker.xml
- 日期选择器的xml总体是一个垂直线性布局
- 里面放了1个日期选择器datepicker,1个Button按钮
<DatePicker
android:layout_marginTop="100dp"
android:theme="@style/DatePickerViewCustom"
android:dateTextAppearance="@style/CalenderViewDateCustomText"
android:weekDayTextAppearance="@style/CalenderViewWeekCustomText"
android:id="@+id/dataPicker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
Styles.xml
- 往styles.xml里添加下面的主题格式,改变日期选择题头部字体颜色
<style name="DatePickerViewCustom" parent="Theme.AppCompat.DayNight.Dialog">
<item name="android:textColor">@android:color/darker_gray</item>
<item name="android:weekNumberColor">@android:color/holo_blue_bright</item>
</style>
datepicker.java
- 主要实现在datepicker里选择日期以及回到今天的操作
public class datepicker extends AppCompatActivity {
private DatePicker datapicker;
String date;
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.setting);
datapicker = findViewById(R.id.dataPicker);
Calendar calendar = Calendar.getInstance();
final int year = calendar.get(Calendar.YEAR);
final int month = calendar.get(Calendar.MONTH);
final int dayofmonth = calendar.get(Calendar.DAY_OF_MONTH);
datapicker.init(year, month, dayofmonth, new DatePicker.OnDateChangedListener() {
@Override
public void onDateChanged(DatePicker datePicker, int i, int i1, int i2) {
date = i + "年" + (i1 + 1) + "月" + i2 + "日";
if (date.equals("2020年4月13日")) {
button.setVisibility(View.GONE);
Toast.makeText(getApplicationContext(), " 您选择的时间是今天 ~~~ " + date, Toast.LENGTH_SHORT).show();
} else {
button.setVisibility(View.VISIBLE);
Toast.makeText(getApplicationContext(), date, Toast.LENGTH_SHORT).show();
}
}
});
button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
button.setVisibility(View.GONE);
datapicker.init(year, month, dayofmonth, new DatePicker.OnDateChangedListener() {
@Override
public void onDateChanged(DatePicker datePicker, int i, int i1, int i2) {
date = i + "年" + (i1 + 1) + "月" + i2 + "日";
if (date.equals("2020年4月13日")) {
button.setVisibility(View.GONE);
Toast.makeText(getApplicationContext(), " 您选择的时间是今天 ~~~ " + date, Toast.LENGTH_SHORT).show();
} else {
button.setVisibility(View.VISIBLE);
Toast.makeText(getApplicationContext(), date, Toast.LENGTH_SHORT).show();
}
}
});
}
});
}
}
设计效果图
- 博主用了fragment作为APP开发的基本框架,后续会写到这个用法,纯粹是为了达到简洁美观的效果
- 刚进去的界面
- 点击当前设置的日期弹出提示
- 点击别的日期,出现 回到今天 的按钮,并且弹出当前日期
- 点击回到今天按钮后跳回当前设置的日期