之前搞了个时间的控件,项目里还有对日期的控件显示,干脆搞个小demo传上来。
这是对日期的显示,默认显示当天。
package com.example.calday;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.TextView;
public class MainActivity extends Activity {
private TextView tv_date;
private TextView tv_sun,tv_mon,tv_tues,tv_wed,tv_thur,tv_fri,tv_sat;
private ImageView img_toleft,img_toright;
private int today_d = 0;
private int flag_day = 1;
private int date_d = 0;
private int date_m = 0;
private int date_y = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findview();
}
protected void findview(){
tv_date = (TextView) findViewById(R.id.tv_date);
tv_sun = (TextView) findViewById(R.id.tv_sun);
tv_mon = (TextView) findViewById(R.id.tv_mon);
tv_tues = (TextView) findViewById(R.id.tv_tues);
tv_wed = (TextView) findViewById(R.id.tv_wed);
tv_thur = (TextView) findViewById(R.id.tv_thur);
tv_fri = (TextView) findViewById(R.id.tv_fri);
tv_sat = (TextView) findViewById(R.id.tv_sat);
img_toleft = (ImageView) findViewById(R.id.img_toleft);
img_toright = (ImageView) findViewById(R.id.img_toright);
tv_sun.setOnClickListener(new MyOnClick());
tv_mon.setOnClickListener(new MyOnClick());
tv_tues.setOnClickListener(new MyOnClick());
tv_wed.setOnClickListener(new MyOnClick());
tv_thur.setOnClickListener(new MyOnClick());
tv_fri.setOnClickListener(new MyOnClick());
tv_sat.setOnClickListener(new MyOnClick());
img_toleft.setOnClickListener(new MyOnClick());
img_toright.setOnClickListener(new MyOnClick());
}
private class MyOnClick implements OnClickListener{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId()){
case R.id.tv_sun:
weekDay(0);
break;
case R.id.tv_mon:
weekDay(1);
break;
case R.id.tv_tues:
weekDay(2);
break;
case R.id.tv_wed:
weekDay(3);
break;
case R.id.tv_thur:
weekDay(4);
break;
case R.id.tv_fri:
weekDay(5);
break;
case R.id.tv_sat:
weekDay(6);
break;
case R.id.img_toleft:
weekDay(today_d - 1);
DateShow();
break;
case R.id.img_toright:
weekDay(today_d + 1);
DateShow();
break;
default:
break;
}
}
private void weekDay(int i) {
flag_day = 1;
calcdate(i - today_d);
if(1 == flag_day){
showDay(i);
today_d = i;
DateShow();
}
if(-1 == today_d){
showDay(6);
today_d = 6;
}else if(7 == today_d){
showDay(0);
today_d = 0;
}
}
}
@SuppressLint("NewApi")
private void showDay(int id) {
tv_sun.setBackground(null);
tv_mon.setBackground(null);
tv_tues.setBackground(null);
tv_wed.setBackground(null);
tv_thur.setBackground(null);
tv_fri.setBackground(null);
tv_sat.setBackground(null);
switch (id) {
case 0:
tv_sun.setBackground(getResources().
getDrawable(R.drawable.week_selected));
break;
case 1:
tv_mon.setBackground(getResources().
getDrawable(R.drawable.week_selected));
break;
case 2:
tv_tues.setBackground(getResources().
getDrawable(R.drawable.week_selected));
break;
case 3:
tv_wed.setBackground(getResources().
getDrawable(R.drawable.week_selected));
break;
case 4:
tv_thur.setBackground(getResources().
getDrawable(R.drawable.week_selected));
break;
case 5:
tv_fri.setBackground(getResources().
getDrawable(R.drawable.week_selected));
break;
case 6:
tv_sat.setBackground(getResources().
getDrawable(R.drawable.week_selected));
break;
default:
break;
}
}
private void calcdate(int i) {
day += i;
if(day <= 0){
if(5 == month || 7 == month || 10 == month || 12 == month){
month--;
day += 30;
}else if(1 == month || 2 == month || 4 == month || 6 == month
|| 8 == month || 9 == month || 11 == month){
month--;
day += 31;
if(month <= 0){
month = 12;
year--;
}
}else if(3 == month){
month--;
if((year%4 == 0) && ((year%100 !=0) || year%400 ==0)){
day += 29;
}else{
day += 28;
}
}
}else if(day > 0){
if(1 == month || 3 == month || 5 == month || 7 == month
|| 8 == month || 10 == month || 12 == month){
if(day > 31){
day -= 31;
month++;
if(month > 12){
year++;
month -= 12;
}
}
}else if(2 == month){
if((year%4 == 0) && ((year%100 !=0) || year%400 ==0)){
if(day > 29){
day -= 29;
month++;
}
}else{
if(day > 28){
day -= 28;
month++;
}
}
}else if(4 == month || 6 == month || 9 == month || 11 == month){
if(day > 30){
day -= 30;
month++;
}
}
}
if(date_y < year || (date_m < month && date_y == year) || (
date_d < day && date_m == month && date_y == year)){
year = date_y;
month = date_m;
day = date_d;
ShowDate();
calDay();
flag_day = 0;
}
}
@SuppressLint("SimpleDateFormat")
private void calDay() {
SimpleDateFormat sdf_day = new SimpleDateFormat("EEEE",Locale.ENGLISH);
Date currenttime = new Date(java.lang.System.currentTimeMillis());
String dayshow = sdf_day.format(currenttime);
if(dayshow.equals("Sunday")){
today_d = 0;
}else if(dayshow.equals("Monday")){
today_d = 1;
}else if(dayshow.equals("Tuesday")){
today_d = 2;
}else if(dayshow.equals("Wednesday")){
today_d = 3;
}else if(dayshow.equals("Thursday")){
today_d = 4;
}else if(dayshow.equals("Friday")){
today_d = 5;
}else if(dayshow.equals("Saturday")){
today_d = 6;
}
showDay(today_d);
}
private int month;
private int day;
private int year;
@SuppressLint("SimpleDateFormat")
private void ShowDate() {
SimpleDateFormat sdf_m = new SimpleDateFormat("MM");
SimpleDateFormat sdf_d = new SimpleDateFormat("dd");
SimpleDateFormat sdf_y = new SimpleDateFormat("yyyy");
Date currenttime = new Date(java.lang.System.currentTimeMillis());
String timeshow_m = sdf_m.format(currenttime);
String timeshow_d = sdf_d.format(currenttime);
String timeshow_y = sdf_y.format(currenttime);
month = Integer.parseInt(timeshow_m);
day = Integer.parseInt(timeshow_d);
year = Integer.parseInt(timeshow_y);
date_d = day;
date_m = month;
date_y = year;
DateShow();
}
private void DateShow() {
String dayshow_m = null;
if(1 == month){
dayshow_m = "Jan.";
}else if(2 == month){
dayshow_m = "Feb.";
}else if(3 == month){
dayshow_m = "Mar.";
}else if(4 == month){
dayshow_m = "Apr.";
}else if(5 == month){
dayshow_m = "May.";
}else if(6 == month){
dayshow_m = "Jun.";
}else if(7 == month){
dayshow_m = "July.";
}else if(8 == month){
dayshow_m = "Aug.";
}else if(9 == month){
dayshow_m = "Sep.";
}else if(10 == month){
dayshow_m = "Oct.";
}else if(11 == month){
dayshow_m = "Nov.";
}else if(12 == month){
dayshow_m = "Dec.";
}
if(1 == flag_day){
if(day >= 10){
tv_date.setText(dayshow_m + day + "." + year);
}else{
tv_date.setText(dayshow_m + "0" + day + "." + year);
}
}
}
}
这里日期的转变我设为了不能跳到当天之后,如果想要往以后跳转的话只有把private void calcdate(int i)最后的这段代码去掉就行了
if(date_y < year || (date_m < month && date_y == year) || (
date_d < day && date_m == month && date_y == year)){
year = date_y;
month = date_m;
day = date_d;
ShowDate();
calDay();
flag_day = 0;
}
http://download.youkuaiyun.com/detail/u013898922/8178985