日期的控件demo

之前搞了个时间的控件,项目里还有对日期的控件显示,干脆搞个小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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值