精华内容
下载资源
问答
  • 今天给大家推荐是这款倒计时插件设置日期右划屏幕就可以看到时间的流动~想知道怎么制作出独一无二手机插件,就一定要往下看哦~效果预览制作插件打开小妖精美化APP,打开任意一个倒计时插件,点击右编辑...
    971553ffb38bd544210aa6b3c5a276b8.png2759333c58b3e5c1540889de5ab5bbcc.png74c859da0d15c76db55b71242c470ed3.gif

    今天给大家推荐是这款倒计时插件

    设置好日期

    右划屏幕就可以看到时间的流动~

    18ab953393c02d53b8e9c9449439dc63.gifd4ccb3df3401caf9ace6680a99d38ef0.png

    想知道怎么制作出独一无二的手机插件,就一定要往下看哦~

    效果预览

    8cc1a96f3c7257668835a5134b8f1afc.gif

    制作插件

    打开小妖精美化APP,打开任意一个倒计时插件,点击右上角的编辑按钮,我们会看到这样的界面

    109c4a5df145e874cd77345a036f95d7.png

    最下方的背景、文本、倒计时、线条、进度条这几个选项,都是我们可以自制插件的选项~

    背景:相册里好看的壁纸和爱豆的绝美饭拍,都可以设置为倒计时的背景哦~

    文本:各种标语在这里就派上用场啦,还可以每天更换,为自己打气!

    倒计时:选择一个目标期限,时间开始倒数啦

    线条:各种样式、各种颜色,考验你DIY能力的时候到了

    进度条:让时间的流动更直观,还可以增加一点仪式感~

    d4ccb3df3401caf9ace6680a99d38ef0.png

    看完了是不是也想自己动手试试呢?

    做出的自制插件

    欢迎使用APP内部的投稿通道分享给我们哦~

    3b724232c9207c5193a77d9c9f15e8b0.png

    之后小妖还会给大家推出超多好看好玩的手机美化新玩法,期待一下吧~

    你喜欢什么样的插件效果呢?

    欢迎在评论里告诉小妖~

    fac06040dec1058ee613787dd0f6c447.gif
    展开全文
  • 1.4 新的64位机上的64位类型是什么样的? 指针声明 1.5 这样的声明有什么问题?char*p1,p2;我在使用p2的时候报错了。 1.6 我想声明一个指针,并为它分配一些空间,但却不行。这样的代码有什么问题?char*p;*p=...
  • 《你必须知道495个C语言问题》

    热门讨论 2010-03-20 16:41:18
    1.4 新的64位机上的64位类型是什么样的? 3 指针声明 3 1.5 这样的声明有什么问题?char *p1, p2; 我在使用p2的时候报错了。 3 1.6 我想声明一个指针,并为它分配一些空间,但却不行。这样的代码有什么问题?...
  • excel使用

    2012-11-25 17:06:01
    输入完毕之后,再次按下键盘上的Ctrl键,然后使用鼠标左键单击所选择的多个工作表,解除这些工作表的联系,否则在一张表单中输入的数据会接着出现在选中的其它工作表内。(6) 不连续单元格填充同一数据选中一个...
  • 1.4 新的64位机上的64位类型是什么样的? 3 指针声明 3 1.5 这样的声明有什么问题?char *p1, p2; 我在使用p2的时候报错了。 3 1.6 我想声明一个指针,并为它分配一些空间,但却不行。这样的代码有什么问题?...
  • javascript函数解释

    2011-02-26 11:03:52
    42.日期函数列表:dateObj.getTime()得到时间,dateObj.getYear()得到年份, dateObj.getFullYear()得到四位年份,dateObj.getMonth()得到月份,dateObj.getDate()得到 日,dateObj.getDay()得到日期几,dateObj.getHours...
  • android日历控件(一)

    2015-12-14 03:36:00
    自定义日历并且具备设置今天以前的时间不可点选,以前的颜色当前的颜色不同,以及获取两次点击日期之间间隔的天数所以说细节比较多 个人习惯,先图 靠,笔记本不知道怎么回事,禁用到触摸板之后 再次唤醒...

    自定义日历并且具备设置今天以前的时间不可点选,以前的颜色和当前的颜色不同,以及获取两次点击日期之间间隔的天数所以说细节比较多

    个人习惯,先上图

    靠,笔记本不知道怎么回事,禁用到触摸板之后 再次唤醒屏幕触摸板又恢复正常了,而且快捷键可能被占用还是怎么着,找不到关闭快捷键的图标,关闭的话 需要重启才行,懒得管了 蛋疼,瘪犊子玩意!

    项目中用到日历控件,需求大致是这样:

    有两处用到日历控件: 一个是显示每个月份全部的天数,实现滑动跳到下一月份,以前月份的天数不可点选,点击今天及以后的天数的时候刷新页面显示日期,获取两次点击的间隔数以及相关的计算(android这方面用原生的话肯定不行,而且后台和ios商量用ios风格,android仿ios这方面的轮子就更少了,没办法,遇到不会的就查呗,查不到就问呗,问不到的只能"靠"了);

    第二个需求是显示每周的天数实现多选,这个很简单。

    重点来了:::》》》

    所以说要完全自定义日历并且具备设置以前或者以后时间不可点选,以前的颜色和当前的颜色不同,以及获取两次点击日期之间间隔的天数所以说细节比较多,,,

    Calendar大家都清楚,获取时间:

    不断刷新秒,简单的时钟就出来了,

    package com.example.mydemo;

    import java.util.Calendar;

    import android.app.Activity;
    import android.os.Bundle;
    import android.os.Handler;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.view.Window;
    import android.widget.Button;
    import android.widget.TextView;

    public class MainActivity extends Activity implements OnClickListener{

    /**
    * 获取时间
    */
    private int mHour;
    private int mMinute;
    private int mYear;
    private int mMonth;
    private int mDay;
    private TextView text;
    private int second;
    private int ampm;
    private Handler mHandler=new Handler(){};
    @Override
    protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);


      text = (TextView) findViewById(R.id.text);
      button = (Button) findViewById(R.id.button);
      button.setOnClickListener(this);

      init();

      mHandler.postDelayed(new Runnable() {
        @Override
        public void run() {
        // TODO Auto-generated method stub
        mHandler.postDelayed(this, 1000);
        init();
        text.setText("年:"+mYear+",月:"+mMonth+",日:"+mDay+","+mHour+":"+mMinute+":秒"+second);
        }
      }, 1000);
    }
      private void init(){
        Calendar c = Calendar.getInstance();
        mYear = c.get(Calendar.YEAR); //获取当前年份
        mMonth = c.get(Calendar.MONTH)+1;//获取当前月份
        mDay = c.get(Calendar.DAY_OF_MONTH);//获取当前月份的日期号码
        mHour = c.get(Calendar.HOUR_OF_DAY);//获取当前的小时数
        mMinute = c.get(Calendar.MINUTE);//获取当前的分钟数
        second = c.get(Calendar.SECOND);//获取当前的秒数
        ampm = c.get(Calendar.AM_PM); //0-上午;1-下午
        //当前年的第几周 这个需求感觉没什么用
        int week_of_year = c.get(Calendar.WEEK_OF_YEAR);
        //当前月的第几周
        int week_of_month = c.get(Calendar.WEEK_OF_MONTH);
        //当前年的第几天
        int day_of_year = c.get(Calendar.DAY_OF_YEAR);

        mHandler.sendEmptyMessage(0);
      }

    /**
    * 点击出现日历弹框
    */
      private PickDialog dialog;
      private Button button;
      private void getData(){
      dialog = new PickDialog(this);
      dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
      dialog.show();
      }
      @Override
      public void onClick(View v) {
        // TODO Auto-generated method stub
        switch (v.getId()) {
        case R.id.button:
        getData();

        break;

        default:
      break;
      }
    }
    }

    -------------------------------

    由此,封装出工具类,这种工具类 轮子比较多,

    package com.example.mydemo.util;

    import java.io.Serializable;

    /**
    * 自定义日期类
    * @author kcw001
    */
    public class CustomDate implements Serializable{

    private static final long serialVersionUID = 1L;
    public int year;
    public int month;
    public int day;
    public int week;

    public CustomDate(int year,int month,int day){
    if(month > 12){
      month = 1;
      year++;
    }else if(month <1){
      month = 12;
      year--;
    }
      this.year = year;
      this.month = month;
      this.day = day;
    }

      public CustomDate(){

      this.year = DateUtils.getYear();
      this.month = DateUtils.getMonth();
      this.day = DateUtils.getCurrentMonthDay();
    }

    public static CustomDate modifiDayForObject(CustomDate date,int day){
    CustomDate modifiDate = new CustomDate(date.year,date.month,day);
      return modifiDate;
    }
    @Override
    public String toString() {
      return year+"-"+month+"-"+day;
    }

    public int getYear() {
      return year;
    }

    public void setYear(int year) {
      this.year = year;
    }

    public int getMonth() {
      return month;
    }

    public void setMonth(int month) {
      this.month = month;
    }

    public int getDay() {
      return day;
    }

     public void setDay(int day) {
      this.day = day;
    }

    public int getWeek() {
      return week;
    }

    public void setWeek(int week) {
      this.week = week;
      }

    }

    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;

    import android.annotation.SuppressLint;

    public class DateUtils {

    public static String[] weekName = { "周日", "周一", "周二", "周三", "周四", "周五","周六" };

    public static int getMonthDays(int year, int month) {
      if (month > 12) {
      month = 1;
      year += 1;
      } else if (month < 1) {
      month = 12;
      year -= 1;
    }
    int[] arr = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
    int days = 0;

    if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
      arr[1] = 29; // 闰年2月29天
    }

    try {
      days = arr[month - 1];
      } catch (Exception e) {
      e.getStackTrace();
     }

      return days;
    }

    public static int getYear() {
      return Calendar.getInstance().get(Calendar.YEAR);
    }

    public static int getMonth() {
      return Calendar.getInstance().get(Calendar.MONTH) + 1;
    }

    public static int getCurrentMonthDay() {
      return Calendar.getInstance().get(Calendar.DAY_OF_MONTH);
    }

    public static int getWeekDay() {
      return Calendar.getInstance().get(Calendar.DAY_OF_WEEK);
    }

    public static int getHour() {
      return Calendar.getInstance().get(Calendar.HOUR_OF_DAY);
    }
    public static int getMinute() {
      return Calendar.getInstance().get(Calendar.MINUTE);
    }

    public static CustomDate getNextSunday() {

      Calendar c = Calendar.getInstance();
      c.add(Calendar.DATE, 7 - getWeekDay()+1);
      CustomDate date = new CustomDate(c.get(Calendar.YEAR),
      c.get(Calendar.MONTH)+1, c.get(Calendar.DAY_OF_MONTH));
      return date;
    }

    public static int[] getWeekSunday(int year, int month, int day, int pervious) {
      int[] time = new int[3];
      Calendar c = Calendar.getInstance();
      c.set(Calendar.YEAR, year);
      c.set(Calendar.MONTH, month);
      c.set(Calendar.DAY_OF_MONTH, day);
      c.add(Calendar.DAY_OF_MONTH, pervious);
      time[0] = c.get(Calendar.YEAR);
      time[1] = c.get(Calendar.MONTH )+1;
      time[2] = c.get(Calendar.DAY_OF_MONTH);
      return time;

    }

    public static int getWeekDayFromDate(int year, int month) {
      Calendar cal = Calendar.getInstance();
      cal.setTime(getDateFromString(year, month));
      int week_index = cal.get(Calendar.DAY_OF_WEEK) - 1;
      if (week_index < 0) {
      week_index = 0;
      }
      return week_index;
    }

    @SuppressLint("SimpleDateFormat")
    public static Date getDateFromString(int year, int month) {
      String dateString = year + "-" + (month > 9 ? month : ("0" + month))
      + "-01";
      Date date = null;
      try {
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
      date = sdf.parse(dateString);
      } catch (ParseException e) {
      System.out.println(e.getMessage());
    }
      return date;
    }

    public static boolean isToday(CustomDate date){
      return(date.year == DateUtils.getYear() &&
      date.month == DateUtils.getMonth()
      && date.day == DateUtils.getCurrentMonthDay());
    }

    public static boolean isCurrentMonth(CustomDate date){
      return(date.year == DateUtils.getYear() &&
      date.month == DateUtils.getMonth());
      }

    /**
    * 返回当天日期
    * String 格式: "yyyy-MM-dd" "yyyy-MM-dd HH:mm:ss:SS"等
    */
    public static String getNowData(Date data,String dateformat) {
    // Date data = new Date();
    SimpleDateFormat format = new SimpleDateFormat(dateformat);// 可以方便地修改日期格式
    String now = format.format(data);
    return now;
    }
    /**
    * 传入字符串
    * @param point1 起始日期
    * @param point2 终止日期
    * @return
    */
    public static String getDays(String point1, String point2,boolean flag) {
    SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");
    long day = 0;
    try {
    java.util.Date date = myFormatter.parse(point1);
    java.util.Date mydate = myFormatter.parse(point2);
    day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000);
    if(flag)
    day = Math.abs(day);
    } catch (Exception e) {
    return "";
    }
    return day + "";
    }
    public static Calendar getDate(int day,int month,int year) {
    Calendar calDate = Calendar.getInstance();
    calDate.clear();
    calDate.set(Calendar.YEAR, year);
    calDate.set(Calendar.MONTH, month);
    calDate.set(Calendar.DAY_OF_MONTH, day);
    return calDate;
    }

    /**
    * 传入Date对象计算相隔天数
    */
    public static int getDays(Calendar fromCalendar,Calendar toCalendar){
    return (int) ((toCalendar.getTime().getTime() - fromCalendar.getTime().getTime()) / (1000 * 60 * 60 * 24));
    }
    public Calendar getDate2(Date date,int day,int month,int year) {
    Calendar calDate = Calendar.getInstance();
    calDate.setTime(date);
    calDate.set(Calendar.YEAR, year);
    calDate.set(Calendar.MONTH, month);
    calDate.set(Calendar.DAY_OF_MONTH, day);
    return calDate;
    }

    }

    ====================================

    DateUtil工具类

    package com.example.mydemo.util;

    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;

    import android.annotation.SuppressLint;
    import android.provider.ContactsContract.Data;

    public class DateUtils {

    public static String[] weekName = { "周日", "周一", "周二", "周三", "周四", "周五","周六" };

    public static int getMonthDays(int year, int month) {
      if (month > 12) {
        month = 1;
        year += 1;
      } else if (month < 1) {
        month = 12;
        year -= 1;
    }
    int[] arr = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
    int days = 0;

    if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
        arr[1] = 29; // 闰年2月29天
    }

    try {
      days = arr[month - 1];
    } catch (Exception e) {
      e.getStackTrace();
    }

      return days;
    }

    public static int getYear() {
      return Calendar.getInstance().get(Calendar.YEAR);
    }

    public static int getMonth() {
      return Calendar.getInstance().get(Calendar.MONTH) + 1;
    }

    public static int getCurrentMonthDay() {
      return Calendar.getInstance().get(Calendar.DAY_OF_MONTH);
    }

    public static int getWeekDay() {
      return Calendar.getInstance().get(Calendar.DAY_OF_WEEK);
    }

    public static int getHour() {
      return Calendar.getInstance().get(Calendar.HOUR_OF_DAY);
    }
    public static int getMinute() {
      return Calendar.getInstance().get(Calendar.MINUTE);
    }

    public static CustomDate getNextSunday() {

      Calendar c = Calendar.getInstance();
      c.add(Calendar.DATE, 7 - getWeekDay()+1);
      CustomDate date = new CustomDate(c.get(Calendar.YEAR),
      c.get(Calendar.MONTH)+1, c.get(Calendar.DAY_OF_MONTH));
      return date;
    }

    public static int[] getWeekSunday(int year, int month, int day, int pervious) {
      int[] time = new int[3];
      Calendar c = Calendar.getInstance();
      c.set(Calendar.YEAR, year);
      c.set(Calendar.MONTH, month);
      c.set(Calendar.DAY_OF_MONTH, day);
      c.add(Calendar.DAY_OF_MONTH, pervious);
      time[0] = c.get(Calendar.YEAR);
      time[1] = c.get(Calendar.MONTH )+1;
      time[2] = c.get(Calendar.DAY_OF_MONTH);
      return time;

    }

    public static int getWeekDayFromDate(int year, int month) {
      Calendar cal = Calendar.getInstance();
      cal.setTime(getDateFromString(year, month));
      int week_index = cal.get(Calendar.DAY_OF_WEEK) - 1;
      if (week_index < 0) {
      week_index = 0;
      }
      return week_index;
    }

    @SuppressLint("SimpleDateFormat")
    public static Date getDateFromString(int year, int month) {
      String dateString = year + "-" + (month > 9 ? month : ("0" + month))
                                  + "-01";
      Date date = null;
      try {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        date = sdf.parse(dateString);
      } catch (ParseException e) {
      System.out.println(e.getMessage());
      }
      return date;
    }
    public static boolean isToday(CustomDate date){
      return(date.year == DateUtils.getYear() &&
      date.month == DateUtils.getMonth()
      && date.day == DateUtils.getCurrentMonthDay());
    }

    public static boolean isCurrentMonth(CustomDate date){
      return(date.year == DateUtils.getYear() &&
      date.month == DateUtils.getMonth());
    }

    /**
    * 返回当天日期
    * String 格式: "yyyy-MM-dd" "yyyy-MM-dd HH:mm:ss:SS"等
    */
    public static String getNowData(Date data,String dateformat) {
    // Date data = new Date();
      SimpleDateFormat format = new SimpleDateFormat(dateformat);// 可以方便地修改日期格式
      String now = format.format(data);
      return now;
    }
    /**
    * 传入字符串
    * @param point1 起始日期
    * @param point2 终止日期
    * @return
    */
    public static String getDays(String point1, String point2,boolean flag) {
      SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");
      long day = 0;
      try {
      java.util.Date date = myFormatter.parse(point1);
      java.util.Date mydate = myFormatter.parse(point2);
      day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000);
      if(flag)
        day = Math.abs(day);
      } catch (Exception e) {
      return "";
      }
      return day + "";
     }
    public static Calendar getDate(int day,int month,int year) {
        Calendar calDate = Calendar.getInstance();
        calDate.clear();
        calDate.set(Calendar.YEAR, year);
        calDate.set(Calendar.MONTH, month);
        calDate.set(Calendar.DAY_OF_MONTH, day);
        return calDate;
    }

    /**
    * 传入Date对象计算相隔天数
    */
    public static int getDays(Calendar fromCalendar,Calendar toCalendar){
        return (int) ((toCalendar.getTime().getTime() - fromCalendar.getTime().getTime()) / (1000 * 60 * 60 * 24));
    }
    public Calendar getDate2(Date date,int day,int month,int year) {
          Calendar calDate = Calendar.getInstance();
          calDate.setTime(date);
          calDate.set(Calendar.YEAR, year);
          calDate.set(Calendar.MONTH, month);
          calDate.set(Calendar.DAY_OF_MONTH, day);
      return calDate;
      }

    }

    =========================

    package com.example.mydemo;

    import android.content.Context;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.graphics.Paint;
    import android.util.AttributeSet;
    import android.util.Log;
    import android.view.MotionEvent;
    import android.view.View;
    import android.view.ViewConfiguration;

    import com.example.mydemo.util.CustomDate;
    import com.example.mydemo.util.DateUtils;

    public class CalendarView extends View{
    private static final String TAG = "CalendarView";
    /**
    * 两种模式 (月份和星期)
    */
    public static final int MONTH_STYLE = 0;
    public static final int WEEK_STYLE = 1;

    private static final int TOTAL_COL = 7;
    private static final int TOTAL_ROW = 6;

    private Paint mCirclePaint;
    private Paint mTextPaint;
    private int mViewWidth;
    private int mViewHight;
    private int mCellSpace;
    private Row rows[] = new Row[TOTAL_ROW];
    private static CustomDate mShowDate;//自定义的日期 包括year month day
    public static int style = MONTH_STYLE;
    private static final int WEEK = 7;
    private CallBack mCallBack;//回调
    private int touchSlop;
    private boolean callBackCellSpace;

    public interface CallBack {

    void clickDate(CustomDate date);//回调点击的日期

    void onMesureCellHeight(int cellSpace);//回调cell的高度确定slidingDrawer高度

    void changeDate(CustomDate date);//回调滑动viewPager改变的日期

    void onClickOnDate();//设置日期点击item事件
    }

    public CalendarView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    init(context);

    }

    public CalendarView(Context context, AttributeSet attrs) {
    super(context, attrs);
    init(context);

    }

    public CalendarView(Context context) {
    super(context);
    init(context);
    }

    public CalendarView(Context context, int style, CallBack mCallBack) {
    super(context);
    CalendarView.style = style;
    this.mCallBack = mCallBack;
    init(context);
    }

    @Override
    protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    for (int i = 0; i < TOTAL_ROW; i++) {
    if (rows[i] != null)
    rows[i].drawCells(canvas);
    }
    }

    private void init(Context context) {
    mTextPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
    mCirclePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
    mCirclePaint.setStyle(Paint.Style.FILL);
    mCirclePaint.setColor(Color.parseColor("#F24949"));
    touchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
    initDate();

    }

    private void initDate() {
    if (style == MONTH_STYLE) {
    mShowDate = new CustomDate();
    } else if(style == WEEK_STYLE ) {
    mShowDate = DateUtils.getNextSunday();
    }
    fillDate();
    }

    @Override
    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
    super.onSizeChanged(w, h, oldw, oldh);
    mViewWidth = w;
    mViewHight = h;
    mCellSpace = Math.min(mViewHight / TOTAL_ROW, mViewWidth / TOTAL_COL);
    if (!callBackCellSpace) {
    mCallBack.onMesureCellHeight(mCellSpace);
    callBackCellSpace = true;
    }
    mTextPaint.setTextSize(mCellSpace / 3);

    }

    private Cell mClickCell;
    private float mDownX;
    private float mDownY;
    /*
    *
    * 触摸事件为了确定点击的位置日期
    */
    @Override
    public boolean onTouchEvent(MotionEvent event) {
    switch (event.getAction()) {
    case MotionEvent.ACTION_DOWN:
    mDownX = event.getX();
    mDownY = event.getY();
    break;
    case MotionEvent.ACTION_UP:
    float disX = event.getX() - mDownX;
    float disY = event.getY() - mDownY;
    if (Math.abs(disX) < touchSlop && Math.abs(disY) < touchSlop) {
    int col = (int) (mDownX / mCellSpace);
    int row = (int) (mDownY / mCellSpace);

    //执行点击事件
    mCallBack.onClickOnDate();
    measureClickCell(col, row);

    }
    break;
    }
    return true;
    }

    private void measureClickCell(int col, int row) {
    if (col >= TOTAL_COL || row >= TOTAL_ROW)
    return;
    if (mClickCell != null) {
    rows[mClickCell.j].cells[mClickCell.i] = mClickCell;
    }
    if (rows[row] != null) {
    mClickCell = new Cell(rows[row].cells[col].date,
    rows[row].cells[col].state, rows[row].cells[col].i,
    rows[row].cells[col].j);
    rows[row].cells[col].state = State.CLICK_DAY;
    CustomDate date = rows[row].cells[col].date;
    date.week = col;
    mCallBack.clickDate(date);
    invalidate();
    }
    }

    // 组
    class Row {
    public int j;

    Row(int j) {
    this.j = j;
    }

    public Cell[] cells = new Cell[TOTAL_COL];

    public void drawCells(Canvas canvas) {
    for (int i = 0; i < cells.length; i++) {
    if (cells[i] != null)
    cells[i].drawSelf(canvas);
    }

    }
    }

    // 单元格
    class Cell {
    public CustomDate date;
    public State state;
    public int i;
    public int j;

    public Cell(CustomDate date, State state, int i, int j) {
    super();
    this.date = date;
    this.state = state;
    this.i = i;
    this.j = j;
    }

    // 绘制一个单元格 如果颜色需要自定义可以修改
    public void drawSelf(Canvas canvas) {
    switch (state) {
    case CURRENT_MONTH_DAY:
    mTextPaint.setColor(Color.parseColor("#80000000"));//偏红
    break;
    case NEXT_MONTH_DAY:
    case PAST_MONTH_DAY:
    mTextPaint.setColor(Color.parseColor("#40000000"));//暗色
    break;
    case TODAY:
    mTextPaint.setColor(Color.parseColor("#F24949"));//红色
    break;
    case BEFORE_DAY:
    mTextPaint.setColor(Color.parseColor("#F24949"));//红色
    break;

    case CLICK_DAY:
    mTextPaint.setColor(Color.parseColor("#fffffe"));//白色
    canvas.drawCircle((float) (mCellSpace * (i + 0.5)),
    (float) ((j + 0.5) * mCellSpace), mCellSpace / 2,
    mCirclePaint);
    break;
    }
    // 绘制文字
    String content = date.day+"";
    canvas.drawText(content,
    (float) ((i+0.5) * mCellSpace - mTextPaint.measureText(content)/2),
    (float) ((j + 0.7) * mCellSpace - mTextPaint.measureText(
    content, 0, 1) / 2), mTextPaint);
    }
    }
    /**
    *
    * @author huang
    * cell的state
    *当前月日期,过去的月的日期,下个月的日期,今天,点击的日期
    *
    */
    enum State {
    CURRENT_MONTH_DAY, PAST_MONTH_DAY, NEXT_MONTH_DAY, TODAY, CLICK_DAY,BEFORE_DAY;
    }

    /**
    * 填充日期的数据
    */
    private void fillDate() {
    if (style == MONTH_STYLE) {
    fillMonthDate();
    } else if(style == WEEK_STYLE) {
    fillWeekDate();
    }
    mCallBack.changeDate(mShowDate);
    }

    /**
    * 填充星期模式下的数据 默认通过当前日期得到所在星期天的日期,然后依次填充日期
    */
    private void fillWeekDate() {
    int lastMonthDays = DateUtils.getMonthDays(mShowDate.year, mShowDate.month-1);
    rows[0] = new Row(0);
    int day = mShowDate.day;
    for (int i = TOTAL_COL -1; i >= 0 ; i--) {
    day -= 1;
    if (day < 1) {
    day = lastMonthDays;
    }
    CustomDate date = CustomDate.modifiDayForObject(mShowDate, day);
    if (DateUtils.isToday(date)) {
    mClickCell = new Cell(date, State.TODAY, i, 0);
    date.week = i;
    mCallBack.clickDate(date);
    rows[0].cells[i] = new Cell(date, State.CLICK_DAY, i, 0);
    continue;
    }
    rows[0].cells[i] = new Cell(date, State.CURRENT_MONTH_DAY,i, 0);
    }
    }

    /**
    * 填充月份模式下数据 通过getWeekDayFromDate得到一个月第一天是星期几就可以算出所有的日期的位置 然后依次填充
    * 重构一下
    */
    private void fillMonthDate() {
    int monthDay = DateUtils.getCurrentMonthDay();
    int lastMonthDays = DateUtils.getMonthDays(mShowDate.year, mShowDate.month - 1);
    int currentMonthDays = DateUtils.getMonthDays(mShowDate.year, mShowDate.month);
    int firstDayWeek = DateUtils.getWeekDayFromDate(mShowDate.year, mShowDate.month);
    boolean isCurrentMonth = false;
    if (DateUtils.isCurrentMonth(mShowDate)) {
    isCurrentMonth = true;
    }
    int day = 0;
    for (int j = 0; j < TOTAL_ROW; j++) {
    rows[j] = new Row(j);
    for (int i = 0; i < TOTAL_COL; i++) {
    int postion = i + j * TOTAL_COL;
    if (postion >= firstDayWeek
    && postion < firstDayWeek + currentMonthDays) {
    day++;// 这个月的
    if (isCurrentMonth && day == monthDay) {//今天
    CustomDate date = CustomDate.modifiDayForObject(mShowDate, day);
    mClickCell = new Cell(date,State.TODAY, i,j);
    date.week = i;
    mCallBack.clickDate(date);
    rows[j].cells[i] = new Cell(date,State.CLICK_DAY, i,j);
    continue;
    }if (isCurrentMonth && day < monthDay) { // 如果比这个月的今天要XIAO,表示还没到
    rows[j].cells[i] = new Cell(
    CustomDate.modifiDayForObject(mShowDate, day),
    State.BEFORE_DAY, i, j);
    continue;
    }

    rows[j].cells[i] = new Cell(CustomDate.modifiDayForObject(mShowDate, day),
    State.CURRENT_MONTH_DAY, i, j);
    } else if (postion < firstDayWeek) {
    rows[j].cells[i] = new Cell(new CustomDate(mShowDate.year, mShowDate.month-1, lastMonthDays - (firstDayWeek- postion - 1)), State.PAST_MONTH_DAY, i, j);
    } else if (postion >= firstDayWeek + currentMonthDays) {
    rows[j].cells[i] = new Cell((new CustomDate(mShowDate.year, mShowDate.month+1, postion - firstDayWeek - currentMonthDays + 1)), State.NEXT_MONTH_DAY, i, j);
    }
    }
    }
    }

    public void update() {
    fillDate();
    invalidate();
    }

    public void backToday(){
    initDate();
    invalidate();
    }

    //切换style
    public void switchStyle(int style) {
    CalendarView.style = style;
    if (style == MONTH_STYLE) {
    update();
    } else if (style == WEEK_STYLE) {
    int firstDayWeek = DateUtils.getWeekDayFromDate(mShowDate.year,
    mShowDate.month);
      int day = 1 + WEEK - firstDayWeek;
      mShowDate.day = day;

      update();
    }

    }
    //向右滑动
    public void rightSilde() {
      if (style == MONTH_STYLE) {

      if (mShowDate.month == 12) {
      mShowDate.month = 1;
      mShowDate.year += 1;
      } else {
      mShowDate.month += 1;
    }

    } else if (style == WEEK_STYLE) {
      int currentMonthDays = DateUtils.getMonthDays(mShowDate.year, mShowDate.month);
      if (mShowDate.day + WEEK > currentMonthDays) {
        if (mShowDate.month == 12) {
        mShowDate.month = 1;
        mShowDate.year += 1;
      } else {
      mShowDate.month += 1;
      }
      mShowDate.day = WEEK - currentMonthDays + mShowDate.day;
      }else{
        mShowDate.day += WEEK;

      }
     }
      update();
    }
    //向左滑动
    public void leftSilde() {

      if (style == MONTH_STYLE) {
      if (mShowDate.month == 1) {
      mShowDate.month = 12;
      mShowDate.year -= 1;
      } else {
      mShowDate.month -= 1;
      }

      } else if (style == WEEK_STYLE) {
      int lastMonthDays = DateUtils.getMonthDays(mShowDate.year, mShowDate.month);
      if (mShowDate.day - WEEK < 1) {
      if (mShowDate.month == 1) {
      mShowDate.month = 12;
      mShowDate.year -= 1;
      } else {
      mShowDate.month -= 1;
      }
      mShowDate.day = lastMonthDays - WEEK + mShowDate.day;

      }else{
      mShowDate.day -= WEEK;
      }
      Log.i(TAG, "leftSilde"+mShowDate.toString());
      }
      update();
    }
    }

    ====================================

    package com.example.mydemo;

    import android.content.Context;

    import com.example.mydemo.CalendarView.CallBack;


    /**
    * calendview辅助类 在这里 完成回调今天等功能
    * @author kcw001
    *
    */
    public class CalendarViewBuilder {

    private CalendarView[] calendarViews;

    /**
    * create 多个calendarviews
    * @param context
    * @param count
    * @param style
    * @param callBack
    * @return
    */
    public CalendarView[] createMassCalendarViews(Context context,int count,int style,CallBack callBack){
    calendarViews = new CalendarView[count];
    for(int i = 0; i < count;i++){
    calendarViews[i] = new CalendarView(context, style,callBack);
    }
    return calendarViews;
    }

    public CalendarView[] createMassCalendarViews(Context context,int count,CallBack callBack){

    return createMassCalendarViews(context, count, CalendarView.MONTH_STYLE,callBack);
    }

    /**
    * 切换CandlendarView的样式
    * @param style
    */
    public void swtichCalendarViewsStyle(int style){
    if(calendarViews != null)
    for(int i = 0 ;i < calendarViews.length;i++){
    calendarViews[i].switchStyle(style);
    }
    }

    /**
    * CandlendarView回到当前日期
    */

    public void backTodayCalendarViews(){
    if(calendarViews != null)
    for(int i = 0 ;i < calendarViews.length;i++){
    calendarViews[i].backToday();
    }
    }
    }

    ======================================

    package com.example.mydemo;

    import android.support.v4.view.ViewPager.OnPageChangeListener;

    public class CalendarViewPagerLisenter implements OnPageChangeListener{

    private SildeDirection mDirection = SildeDirection.NO_SILDE;
    int mCurrIndex = 498;
    private CalendarView[] mShowViews;

    public CalendarViewPagerLisenter(CustomViewPagerAdapter<CalendarView> viewAdapter) {
    super();
    this.mShowViews = viewAdapter.getAllItems();
    }

    @Override
    public void onPageSelected(int arg0) {
    measureDirection(arg0);
    updateCalendarView(arg0);
    }

    private void updateCalendarView(int arg0) {
    if(mDirection == SildeDirection.RIGHT){
    mShowViews[arg0 % mShowViews.length].rightSilde();
    }else if(mDirection == SildeDirection.LEFT){
    mShowViews[arg0 % mShowViews.length].leftSilde();
    }
    mDirection = SildeDirection.NO_SILDE;
    }

    /**
    * 判断滑动方向
    * @param arg0
    */
    private void measureDirection(int arg0) {

    if (arg0 > mCurrIndex) {
    mDirection = SildeDirection.RIGHT;

    } else if (arg0 < mCurrIndex) {
    mDirection = SildeDirection.LEFT;
    }
    mCurrIndex = arg0;
    }

    @Override
    public void onPageScrolled(int arg0, float arg1, int arg2) {
    }

    @Override
    public void onPageScrollStateChanged(int arg0) {
    }

    //反射
    enum SildeDirection {
    RIGHT, LEFT, NO_SILDE;
    }
    }

    ----------------------------------------------------------------------------------

    package com.example.mydemo;

    import android.content.Context;
    import android.content.res.TypedArray;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.graphics.Paint;
    import android.util.AttributeSet;
    import android.view.MotionEvent;
    import android.view.View;

    /**
    * 自定义布局 绘制文字和园
    * @author kcw001
    */
    public class CircleTextView extends View {

    private String mText = "订";
    private OnClickListener onClickListener;
    private Paint mCirclePaint;
    private Paint mTextPaint;
    private int mViewWidth;
    private int mViewHight;

    public CircleTextView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    // TODO Auto-generated constructor stub
    init();
    }

    public CircleTextView(Context context) {
    super(context);
    // TODO Auto-generated constructor stub
    init();
    }

    public CircleTextView(Context context, AttributeSet attrs) {
    super(context, attrs);
    // TODO Auto-generated constructor stub
    TypedArray t = context.obtainStyledAttributes(attrs,
    R.styleable.CircleTextView);
    mText = t.getString(R.styleable.CircleTextView_text);
    t.recycle();

    init();
    }

    @Override
    public void setOnClickListener(OnClickListener l) {
    super.setOnClickListener(l);
    this.onClickListener = l;
    }

    public void setmText(String mText) {
    this.mText = mText;
    }

    @Override
    protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    canvas.drawCircle(mViewWidth / 2, mViewWidth / 2, mViewWidth / 2,
    mCirclePaint);
    canvas.drawText(mText,
    (mViewWidth - mTextPaint.measureText(mText)) / 2,
    (mViewHight + mTextPaint.measureText(mText) / 2) / 2,
    mTextPaint);
    }

    public void init() {
    mTextPaint = new Paint(Paint.ANTI_ALIAS_FLAG);

    mCirclePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
    initPaint(false);
    }

    @Override
    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
    super.onSizeChanged(w, h, oldw, oldh);
    mViewWidth = w;
    mViewHight = h;
    mTextPaint.setTextSize(mViewWidth / 3);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
    switch (event.getAction()) {
    case MotionEvent.ACTION_DOWN:
    initPaint(true);
    break;

    case MotionEvent.ACTION_UP:
    case MotionEvent.ACTION_CANCEL:
    if (onClickListener != null)
    onClickListener.onClick(this);
    initPaint(false);
    break;
    }
    invalidate();
    return true;
    }

    private void initPaint(boolean isPress) {
    if (!isPress) {
    mCirclePaint.setStyle(Paint.Style.STROKE);
    mCirclePaint.setColor(Color.parseColor("#40000000"));
    mTextPaint.setColor(Color.parseColor("#80000000"));
    } else {
    mCirclePaint.setStyle(Paint.Style.FILL);
    mCirclePaint.setColor(Color.parseColor("#F24949"));
    mTextPaint.setColor(Color.parseColor("#fffffe"));
    }
    }
    }

    ============================================

    package com.example.mydemo;

    import android.os.Parcelable;
    import android.support.v4.view.PagerAdapter;
    import android.support.v4.view.ViewPager;
    import android.view.View;

    /**
    * 日历适配器
    * @author kcw001
    *
    */
    public class CustomViewPagerAdapter<V extends View> extends PagerAdapter {

    private V[] views;

    public CustomViewPagerAdapter(V[] views) {
    super();
    this.views = views;
    }

    @Override
    public void finishUpdate(View arg0) {
    }

    @Override
    public void notifyDataSetChanged() {
    super.notifyDataSetChanged();
    }

    @Override
    public int getCount() {
    return Integer.MAX_VALUE;
    }

    @Override
    public Object instantiateItem(View arg0, int arg1) {
    if (((ViewPager) arg0).getChildCount() == views.length) {
    ((ViewPager) arg0).removeView(views[arg1 % views.length]);
    }

    ((ViewPager) arg0).addView(views[arg1 % views.length], 0);

    return views[arg1 % views.length];
    }

    @Override
    public boolean isViewFromObject(View arg0, Object arg1) {
    return arg0 == (arg1);
    }

    @Override
    public Parcelable saveState() {
    return null;
    }

    @Override
    public void destroyItem(View arg0, int arg1, Object arg2) {
    // TODO Auto-generated method stub

    }

    @Override
    public void startUpdate(View arg0) {
    }


    public V[] getAllItems() {
    return views;
    }
    }

     =========================

    package com.example.mydemo;


    import android.app.Dialog;
    import android.content.Context;
    import android.content.DialogInterface;
    import android.graphics.Color;
    import android.os.Bundle;
    import android.support.v4.view.ViewPager;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.LinearLayout;
    import android.widget.SlidingDrawer;
    import android.widget.SlidingDrawer.OnDrawerOpenListener;
    import android.widget.SlidingDrawer.OnDrawerScrollListener;
    import android.widget.TextView;

    import com.example.mydemo.CalendarView.CallBack;
    import com.example.mydemo.util.CustomDate;
    import com.example.mydemo.util.DateUtils;

    public class PickDialog extends Dialog implements OnClickListener,CallBack{

    private Context context;
    private PickDialogListener pickDialogListener;
    private LinearLayout dialog_data;

    private CalendarViewBuilder builder = new CalendarViewBuilder();//创建view的辅助类

    private TextView monthCalendarView;
    private TextView weekCalendarView;

    private CircleTextView mSubscibeCircleView;
    private CircleTextView mNowCircleView;
    private CircleTextView mAddCircleView;
    private LinearLayout layout;
    //年月周
    private TextView showYearView;
    private TextView showMonthView;
    private TextView showWeekView;
    private ViewPager viewPager;
    private CalendarView[] views;
    private LayoutInflater inflater;

    private View mContentPager;
    private SlidingDrawer mSlidingDrawer;
    private CustomDate mClickDate;

    public PickDialog(Context context) {
    super(context);
    // TODO Auto-generated constructor stub
    this.context=context;
    }

    public PickDialog(Context context, int theme, PickDialogListener pickDialogListener) {
    super(context);
    // TODO Auto-generated constructor stub
    this.context=context;
    this.pickDialogListener=pickDialogListener;
    }

    //如何调用接口里面的
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);

    inflater = LayoutInflater.from(context);
    layout = (LinearLayout) inflater.inflate(
    R.layout.dialog_data, null);

    this.setCanceledOnTouchOutside(true);
    this.setOnCancelListener(new DialogInterface.OnCancelListener() {

    @Override
    public void onCancel(DialogInterface dialog) {
    // TODO Auto-generated method stub
    dismiss();
    }
    });
    init();

    this.setContentView(layout);

    }

    private void init(){

    viewPager = (ViewPager) layout.findViewById(R.id.viewpager);
    showMonthView = (TextView)layout.findViewById(R.id.show_month_view);
    showYearView = (TextView)layout.findViewById(R.id.show_year_view);
    showWeekView = (TextView)layout.findViewById(R.id.show_week_view);
    views = builder.createMassCalendarViews(getContext(), 5, this);
    monthCalendarView = (TextView) layout.findViewById(R.id.month_calendar_button);
    weekCalendarView = (TextView) layout.findViewById(R.id.week_calendar_button);
    mContentPager = layout.findViewById(R.id.contentPager);
    mSlidingDrawer = (SlidingDrawer)layout.findViewById(R.id.sildingDrawer);

    mSubscibeCircleView = (CircleTextView)layout.findViewById(R.id.subscibe_circle_view);
    mNowCircleView = (CircleTextView)layout.findViewById(R.id.now_circle_view);//点击今天回到今天
    mAddCircleView = (CircleTextView)layout.findViewById(R.id.add_circle_view);
    monthCalendarView.setOnClickListener(this);
    weekCalendarView.setOnClickListener(this);
    mSubscibeCircleView.setOnClickListener(this);
    mNowCircleView.setOnClickListener(this);
    mAddCircleView.setOnClickListener(this);

    setViewPager();
    setOnDrawListener();
    }

    @Override
    public void onClick(View v) {
    // TODO Auto-generated method stub
    switch (v.getId()) {
    case R.id.month_calendar_button://月份
    swtichBackgroundForButton(true);
    builder.swtichCalendarViewsStyle(CalendarView.MONTH_STYLE);
    mSlidingDrawer.close();
    break;
    case R.id.week_calendar_button://周
    swtichBackgroundForButton(false);
    mSlidingDrawer.open();

    break;
    case R.id.now_circle_view://点击今天会到今天
    builder.backTodayCalendarViews();
    break;
    case R.id.add_circle_view://加号 点击进入编辑

    break;
    case R.id.subscibe_circle_view:

    dismiss();
    }
    }

    private void swtichBackgroundForButton(boolean isMonth){
    if(isMonth){
    monthCalendarView.setBackgroundResource(R.drawable.press_left_text_bg);
    weekCalendarView.setBackgroundColor(Color.TRANSPARENT);
    }else{
    weekCalendarView.setBackgroundResource(R.drawable.press_right_text_bg);
    monthCalendarView.setBackgroundColor(Color.TRANSPARENT);
    }
    }

    private void setViewPager() {
    CustomViewPagerAdapter<CalendarView> viewPagerAdapter = new CustomViewPagerAdapter<CalendarView>(views);
    viewPager.setAdapter(viewPagerAdapter);
    viewPager.setCurrentItem(498);
    viewPager.setOnPageChangeListener(new CalendarViewPagerLisenter(viewPagerAdapter));
    }

    @SuppressWarnings("deprecation")
    private void setOnDrawListener() {

    mSlidingDrawer.setOnDrawerOpenListener(new OnDrawerOpenListener() {

    @Override
    public void onDrawerOpened() {
    builder.swtichCalendarViewsStyle(CalendarView.WEEK_STYLE);
    }
    });

    mSlidingDrawer.setOnDrawerScrollListener(new OnDrawerScrollListener() {

    @Override
    public void onScrollStarted() {
    builder.swtichCalendarViewsStyle(CalendarView.MONTH_STYLE);
    }

    @Override
    public void onScrollEnded() {
    }
    });
    }

     

    //------------------------------------------------callback
    @Override
    public void clickDate(CustomDate date) {
    // TODO Auto-generated method stub
    mClickDate = date;
    }

    @Override
    public void onMesureCellHeight(int cellSpace) {
    // TODO Auto-generated method stub
    mSlidingDrawer.getLayoutParams().height = mContentPager.getHeight() - cellSpace;
    }

    @Override
    public void changeDate(CustomDate date) {
    // TODO Auto-generated method stub
    setShowDateViewText(date.year,date.month);
    }

    private void setShowDateViewText(int year, int month) {
    // TODO Auto-generated method stub
    showYearView.setText(year+"");
    showMonthView.setText(month+"月");
    showWeekView.setText(DateUtils.weekName[DateUtils.getWeekDay()-1]);
    }

    @Override
    public void onDetachedFromWindow() {
    // TODO Auto-generated method stub
    super.onDetachedFromWindow();
    }


    /**
    * 获取到日历天数 点击功能的实现
    */
    boolean flag=true;
    @Override
    public void onClickOnDate() {
    int day = mClickDate.getDay();
    int month = mClickDate.getMonth();
    int year = mClickDate.getYear();

    //获取当前日期
    //Date data=new Date();
    //String nowData = DateUtils.getNowData(data,"yyyy-MM-dd");

    //获取点击日期
    /* Calendar date2 = DateUtils.getDate(day, month, year);
    Date time = date2.getTime();
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    String nowData = DateUtils.getNowData(time, "yyyy-MM-dd");
    Toast.makeText(getContext(), nowData, 0).show();*/

    //计算相邻天数相差
    /*String days = DateUtils.getDays("2016-1-12", "2016-1-18");
    Toast.makeText(context, days, 0).show();*/

    /**
    * 设置以前的时间不可点选
    */
    /*String days = DateUtils.getDays("2016-1-12", "2016-1-18",false);
    int num = Integer.parseInt(days);
    if(num<0)
    Toast.makeText(context, "不可点击", 0).show();
    else
    Toast.makeText(context, days, 0).show();*/

    }

    }

    ====================================

    package com.example.mydemo;

    public interface PickDialogListener {
    public void onLeftBtnClick();
    public void onRightBtnClick();
    public void onListItemClick(int position, String string);
    public void onListItemLongClick(int position, String string);
    public void onCancel();
    }

    ==========================================

    主页的布局文件

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <TextView
    android:id="@+id/text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/hello_world" />

    <Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:text="点我"
    />
    </RelativeLayout>

    ==================

    dialog页的布局文件

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:demo="http://schemas.android.com/apk/res/com.example.mydemo"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="50dip"
    android:background="@drawable/action_bar_bg"
    android:orientation="horizontal" >

    <TextView
    android:id="@+id/show_month_view"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:layout_marginLeft="15dip"
    android:layout_marginRight="10dip"
    android:layout_alignParentLeft="true"
    android:gravity="center"
    android:text="11月"
    android:textColor="#fffffe"
    android:textSize="24sp" />

    <LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:layout_toRightOf="@id/show_month_view"
    android:orientation="vertical" >

    <TextView
    android:id="@+id/show_week_view"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:layout_weight="1"
    android:gravity="bottom|left"
    android:paddingBottom="1dip"
    android:text="周六"
    android:textColor="#80ffffff"
    android:textSize="12sp" />

    <TextView
    android:id="@+id/show_year_view"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:layout_weight="1"
    android:gravity="top|left"
    android:paddingTop="1dip"
    android:text="2015"
    android:textColor="#80ffffff"
    android:textSize="12sp" />
    </LinearLayout>
    <LinearLayout
    android:layout_width="80dip"
    android:layout_height="25dip"
    android:layout_alignParentRight="true"
    android:layout_centerVertical="true"
    android:background="@drawable/select_view_bg"
    android:layout_marginRight="20dip"
    android:orientation="horizontal"
    >
    <TextView
    android:id="@+id/month_calendar_button"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:layout_weight="1"
    android:text="月"
    android:gravity="center"
    android:textColor="#ffffff"
    android:clickable="@drawable/press_left_text_bg"
    />
    <View
    android:layout_width="1px"
    android:layout_height="fill_parent"
    android:background="#80ffffff"
    android:textColor="#ffffff"
    />
    <TextView
    android:id="@+id/week_calendar_button"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:layout_weight="1"
    android:text="周"
    android:gravity="center"
    android:textColor="#ffffff"
    android:clickable="@drawable/press_right_text_bg"
    />
    </LinearLayout>
    </RelativeLayout>

    <LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:paddingLeft="10dip"
    android:paddingRight="10dip"
    android:background="#fffffe"
    android:orientation="vertical" >

    <View
    android:layout_width="fill_parent"
    android:layout_height="1px"
    android:layout_alignParentTop="true"
    android:background="#20000000" >
    </View>
    <TableLayout
    android:layout_width="fill_parent"
    android:layout_height="20dip"
    android:layout_marginBottom="2dip"
    android:layout_marginTop="2dip" >

    <TableRow>

    <TextView
    style="@style/dateStyle"
    android:text="日"
    android:textColor="@color/date_1" />

    <TextView
    style="@style/dateStyle"
    android:text="一"
    android:textColor="@color/date_2" />

    <TextView
    style="@style/dateStyle"
    android:text="二"
    android:textColor="@color/date_2" />

    <TextView
    style="@style/dateStyle"
    android:text="三"
    android:textColor="@color/date_2" />

    <TextView
    style="@style/dateStyle"
    android:text="四"
    android:textColor="@color/date_2" />

    <TextView
    style="@style/dateStyle"
    android:text="五"
    android:textColor="@color/date_2" />

    <TextView
    style="@style/dateStyle"
    android:text="六"
    android:textColor="@color/date_1" />
    </TableRow>
    </TableLayout>

    <View
    android:layout_width="fill_parent"
    android:layout_height="1px"
    android:layout_alignParentTop="true"
    android:background="#20000000" >
    </View>
    </LinearLayout>

    <RelativeLayout
    android:id="@+id/contentPager"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_weight="1"
    android:background="#fffffe"
    >
    <android.support.v4.view.ViewPager
    android:id="@+id/viewpager"
    android:layout_width="fill_parent"
    android:layout_height="300dp"
    android:layout_gravity="center"
    android:paddingLeft="15dip"
    android:paddingRight="10dip"
    android:background="#F7F7F7" >
    </android.support.v4.view.ViewPager>

    <SlidingDrawer
    android:id="@+id/sildingDrawer"
    android:layout_width="fill_parent"
    android:layout_height="100dip"
    android:orientation="vertical"
    android:layout_alignBottom="@+id/viewpager"
    android:handle="@+id/handlerText"
    android:content="@+id/contentText"
    >
    <LinearLayout
    android:id="@+id/handlerText"
    android:layout_height="wrap_content"
    android:minHeight="100dip"
    android:background="#fffffe"
    android:layout_width="fill_parent"
    android:orientation="vertical">
    <View
    android:layout_width="fill_parent"
    android:layout_height="1px"
    android:background="#30000000" >
    </View>
    <TextView
    android:layout_width="fill_parent"
    android:layout_height="50dip"
    android:paddingLeft="5dip"
    android:text="一座城池2012"
    android:textSize="16sp"
    android:textColor="#90000000"
    android:gravity="center_vertical"
    />
    <View
    android:layout_width="fill_parent"
    android:layout_height="1px"
    android:background="#20000000" >
    </View>
    </LinearLayout>
    <View
    android:id="@+id/contentText"
    android:background="#fffffe"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    </View>
    </SlidingDrawer>
    </RelativeLayout>


    <RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="60dip"
    android:background="@drawable/bottom_bar_bg" >

    <View
    android:layout_width="fill_parent"
    android:layout_height="1px"
    android:layout_alignParentTop="true"
    android:background="#20000000" >
    </View>

    <com.example.mydemo.CircleTextView
    android:id="@+id/now_circle_view"
    android:layout_width="50dip"
    android:layout_height="50dip"
    android:layout_centerInParent="true"
    android:layout_marginLeft="10dip"
    android:layout_marginRight="10dip"
    demo:text="今" />

    <com.example.mydemo.CircleTextView
    android:id="@+id/subscibe_circle_view"
    android:layout_width="50dip"
    android:layout_height="50dip"
    android:layout_centerInParent="true"
    android:layout_toLeftOf="@id/now_circle_view"
    demo:text="帅" />

    <com.example.mydemo.CircleTextView
    android:id="@+id/add_circle_view"
    android:layout_width="50dip"
    android:layout_height="50dip"
    android:layout_centerInParent="true"
    android:layout_toRightOf="@id/now_circle_view"
    demo:text="+" />
    </RelativeLayout>

    </LinearLayout>

    ========================================

    action_bar_bg.xml

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <solid android:color="#F24949"/>
    <corners android:topLeftRadius="5dip" android:topRightRadius="5dip" android:bottomLeftRadius="0dip" android:bottomRightRadius="0dip"></corners>

    </shape>

    ===================================================================

    bottom_bar_bg.xml

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <solid android:color="#F7F7F7"/>
    <corners android:topLeftRadius="0dip" android:topRightRadius="0dip" android:bottomLeftRadius="5dip" android:bottomRightRadius="5dip"></corners>

    </shape>

    ==================================

    press_left_text_bg.xml

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android" >

    <corners android:topLeftRadius="14dip" android:bottomLeftRadius="14dip"></corners>
    <solid android:color="#40ffffff"></solid>
    </shape>

     ==================================

    press_right_text_bg.xml

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android" >

    <corners android:topRightRadius="14dip" android:bottomRightRadius="14dip"></corners>
    <solid android:color="#40ffffff"></solid>
    </shape>

    ===================================

    select_view_bg.xml

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <solid android:color="@android:color/transparent"></solid>
    <corners android:radius="25dip"></corners>
    <stroke android:width="1px" android:color="#80ffffff"></stroke>

    </shape>

    ============================================

    value 目录下

    attrs.xml

    <?xml version="1.0" encoding="utf-8"?>
    <resources>

    <declare-styleable name="CircleTextView">
    <attr name="text" format="string"></attr>
    </declare-styleable>

    </resources>

     

    colors.xml

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
    <!-- 日历颜色 -->
    <color name="date_1">#F24949</color>
    <color name="date_2">#40000000</color>
    </resources>

     

    styles.xml中添加:

    <!-- 文字设置 -->
    <style name="dateStyle">
    <item name="android:layout_width">fill_parent</item>
    <item name="android:layout_height">fill_parent</item>
    <item name="android:layout_weight">1</item>
    <item name="android:gravity">center</item>
    <item name="android:textSize">12sp</item>
    </style>

    ok,就是这么多了,还有几个细节没处理,明天整理好后

    继续

    完整demo下载:

    http://download.csdn.net/detail/onebelowzero2012/9352913

    另附:欢迎加入群一块学习交流,谢谢大家!Android&Go,Let's go! 521039620

     

    有几个地方,后面会更新修改,

     

    转载于:https://www.cnblogs.com/yizuochengchi2012/p/5044039.html

    展开全文
  • 新版Android开发教程.rar

    千次下载 热门讨论 2010-12-14 15:49:11
    Android SDK 提供了在 Android 平台使用 JaVa 语言进行 Android 应用开发必须工具 API 接口。 特性 • 应用程序框架 支持组件重用与替换 • Dalvik Dalvik Dalvik Dalvik 虚拟机 专为移动设备优化 • ...
  • 400个DreamWeaver插件

    2013-03-28 15:30:13
    mxp/打开一个新窗口,并让窗口在屏幕上居中 mxp/Chromeless Windows,比我做X-window好。 mxp/可以联合Authorware, CourseBuilder extension for Dreamweaver ,UltraDev, Macromedia Flash Learning Extensions, ...
  • 如果需要播放本地硬盘上的音乐文件,那么只需要单击“N.Music”即可,此时屏幕左侧会显示相应的音乐文件,直接双击其中的某首即可,在播放过程中可以非常方便的在Artists、Albums、Genre、Playelists等各个视图之间...
  • Visual C++ 2008入门经典--详细书签版

    热门讨论 2013-02-02 16:07:15
    2.7 了解存储时间和作用域 71 2.7.1 自动变量 72 2.7.2 决定变量声明位置 74 2.7.3 全局变量 74 2.7.4 静态变量 77 2.8 命名空间 78 2.8.1 声明命名空间 79 2.8.2 多个命名空间 80 2.9 C++/CLI编程 81 ...
  • 2.7 了解存储时间和作用域 71 2.7.1 自动变量 72 2.7.2 决定变量声明位置 74 2.7.3 全局变量 74 2.7.4 静态变量 77 2.8 命名空间 78 2.8.1 声明命名空间 79 2.8.2 多个命名空间 80 2.9 C++/CLI编程 81 ...
  • C#微软培训教材(高清PDF)

    千次下载 热门讨论 2009-07-30 08:51:17
    18.2 在 C #代码中调用 C++ VB 编写组件 .240 18.3 版 本 控 制 .249 18.4 代 码 优 化 .252 18.5 小 结 .254 第五部分 附 录 .255 附录 A 关 键 字.255 附录 B 错 误 码.256 附录 C .Net 名字空间...
  • 本书注重对实际动手能力指导,在遵循技术研发知识体系严密性同时,在容易产生错误、不易理解环节配以了翔实开发情景截图,并将重要知识点开发技巧以“小实验”、“小提醒”、“小知识”、“注意”等...
  • 是由互联网上的 Linux社团(Linux Community)互通交流而完成的。Linux 不属于任何一 家公司或个人,任何人都可以免费取得甚至修改它的源代码(source code)。Linux 上的大部 分软件都是由 GNU倡导发展起来的,所以...
  • C#微软培训资料

    2014-01-22 14:10:17
    18.2 在 C #代码中调用 C++ VB 编写组件 .240 18.3 版 本 控 制 .249 18.4 代 码 优 化 .252 18.5 小 结 .254 第五部分 附 录 .255 附录 A 关 键 字.255 附录 B 错 误 码.256 附录 C .Net 名字空间...
  • 下面四行“IDE……”则标明了连接在IDE主从接口上的设备,包括硬盘型号及光驱型号等等。    3.主板信息   在第二个自检画面的最下方还会出现一行关于主板的信息,前面的日期显示的是当前主板的BIOS更新日期,...
  • 250 函数和宏使用上的选择 251 理解变量 252 理解变量类型 253 更改变量类型 254 理解局部变量 255 理解全局变量 256 C++允许在函数体中说明变量 257 理解存储类型 258 理解静态变量 259 定义全局静态变量 260 在...
  • 250 函数和宏使用上的选择 251 理解变量 252 理解变量类型 253 更改变量类型 254 理解局部变量 255 理解全局变量 256 C++允许在函数体中说明变量 257 理解存储类型 258 理解静态变量 259 定义全局静态变量 260 在...
  • 250 函数和宏使用上的选择 251 理解变量 252 理解变量类型 253 更改变量类型 254 理解局部变量 255 理解全局变量 256 C++允许在函数体中说明变量 257 理解存储类型 258 理解静态变量 259 定义全局静态变量 260 在...
  • 250 函数和宏使用上的选择 251 理解变量 252 理解变量类型 253 更改变量类型 254 理解局部变量 255 理解全局变量 256 C++允许在函数体中说明变量 257 理解存储类型 258 理解静态变量 259 定义全局静态变量 260 在...
  • c#学习笔记.txt

    热门讨论 2008-12-15 14:01:21
    对于实例方法,可调用实体由一个实例该实例上的方法组成。对于静态方法,可调用实体仅由一个方法组成。给定委托实例适当的参数集,便可以用该参数集调用此委托实例的所有方法。委托实例的一个有趣有用的属性是...
  • Linux从入门到精通

    2010-04-25 19:58:09
    9.5 时间和日期 9.6 内核守护进程配置 9.6.1 改变模组选项 9.6.2 改变模组 9.6.3 增加模组 9.6.4 重起动kerneld 10 Glint 10.1 启动glint 10.2 显示软件包 10.2.1 下文相关菜单 10.2.2 选择软件包 ...
  • 《Linux从入门到精通》

    热门讨论 2008-09-04 17:05:49
    9.5 时间和日期 9.6 内核守护进程配置 9.6.1 改变模组选项 9.6.2 改变模组 9.6.3 增加模组 9.6.4 重起动kerneld 10 Glint 10.1 启动glint 10.2 显示软件包 10.2.1 下文相关菜单 10.2.2 选择软件包 ...
  • 以此类推一直搜索到全局环境上的变量对象,如果这里都没,恭喜你,这里要抛错了。 <pre><code> JavaScript var c = '123'; var message = function(){ var g = '123'...
  • /*读取DS1302中的时间*/ void Ds1302ReadTime() { miao = Ds1302Read(READ_RTC_ADDR[0]); //读秒 fen = Ds1302Read(READ_RTC_ADDR[1]); //读分 shi = Ds1302Read(READ_RTC_ADDR[2]); //读时 ri = Ds1302...

空空如也

空空如也

1 2
收藏数 28
精华内容 11
关键字:

屏幕上的时间和日期怎么设置