产品要做签到功能,签到功能要基于一个日历来进行,所以就根据 要求自定义了一个日历

自定义控件相信做android都知道:

(1)首先创建一个类,继承一个容器类或者是一个控件

(2)然后就是你需要设置的属性等的,在attrs文件夹中

(3)然后就是在类里边进行属性的设置以及布局等等功能的添加

其实自定义一个日历问题都不多,很多人都会想到通过一个gridView然后填充就可以,确实是这样,主要是在显示每个月的第一天的位置以及每个月显示多少天有点绕。

思路:通过判断当前星期几然后进行日历的填充,但是填充的大小不能大于当月天数,通过当月第一天是星期几来判断从哪个位置填充。

代码:

package com.example.calenderdemo;

import android.content.Context;

import android.graphics.Color;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.BaseAdapter;

import android.widget.TextView;

public class CalendarViewAdapter extends BaseAdapter {

private Context mContext;

private int mCountDay = 49;

private int mCurrent_mouth_Countday;

private int mCurrent_Week;

private int id[] = { R.string.week7, R.string.week1, R.string.week2,

R.string.week3, R.string.week4, R.string.week5, R.string.week6 };

public CalendarViewAdapter(Context context, int countday) {

this.mContext = context;

this.mCurrent_Week = Utils.getCurrentMonthStart();

this.mCurrent_mouth_Countday = countday;

}

@Override

public int getCount() {

return mCountDay;

}

@Override

public Object getItem(int position) {

return null;

}

@Override

public long getItemId(int position) {

return position;

}

@Override

public View getView(int position, View convertView, ViewGroup parent) {

ViewHolder holder = null;

if (convertView == null) {

holder = new ViewHolder();

convertView = LayoutInflater.from(mContext).inflate(

R.layout.item_calendar, null);

holder.mTv_calendar_day = (TextView) convertView

.findViewById(R.id.tv_calendar_day);

convertView.setTag(holder);

} else

holder = (ViewHolder) convertView.getTag();

if (position <= 6) {

holder.mTv_calendar_day.setTextColor(Color.BLACK);

holder.mTv_calendar_day.setTextSize(mContext.getResources()

.getDimension(R.dimen.text_size_7));

holder.mTv_calendar_day.setText(mContext.getResources().getString(

id[position]));

} else {

if (mCurrent_Week == 7 && (position -6) <= mCurrent_mouth_Countday) {

holder.mTv_calendar_day.setText(position-6 + "");

} else if (position -7>= mCurrent_Week

&& position - mCurrent_Week -6 <= mCurrent_mouth_Countday) {

holder.mTv_calendar_day.setText(position - mCurrent_Week -6

+ "");

}

}

if (position % 7 == 6) {

holder.mTv_calendar_day.setBackgroundResource(R.drawable.line_right);

}else if (position % 7 == 0) {

holder.mTv_calendar_day.setBackgroundResource(R.drawable.line_left);

}

return convertView;

}

class ViewHolder {

TextView mTv_calendar_day;

}

}

把gridView填充了以后一个简单的日历控件就ok了。

自定义了一个日历以后就要做签到了,签到只要在自定义的Calendar中稍稍修改下就好了,看下效果图:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

自定义日历控android,Android自定义日历Calender代码实现相关推荐

  1. WPF Calendar 日历控件 样式自定义

    原文:WPF Calendar 日历控件 样式自定义 粗略的在代码上做了些注释 blend 生成出来的模版 有的时候 会生成 跟 vs ui界面不兼容的代码 会导致可视化设计界面 报错崩溃掉 但是确不 ...

  2. 【无私分享】干货!!!一个炫酷的自定义日历控件,摆脱日历时间选择烦恼,纯福利~...

    最近公司项目中有一个按日期查看信息的功能,楼主本想用之前用的wheelView将就使用的,不过产品经理有个新要求,就是点击按钮弹出的日期选择对话框必须显示农历节假日,周几什么的.这可就难为人了,倘若使 ...

  3. java自定义日历控件_【无私分享】修订版干货!!!一个炫酷的自定义日历控件,摆脱日历时间选择烦恼,纯福利~...

    可能不少的小伙伴都有看楼主昨天发的自定义日历控件,虽然实现功能不多,但也还算将就吧. 但是看了的小伙伴就很心急了,说楼主上传到gitHub的东西有问题,楼主下载来看了看,基本都没问题吧,没弄好的小伙伴 ...

  4. 【无私分享】修订版干货!!!一个炫酷的自定义日历控件,摆脱日历时间选择烦恼,纯福利~...

    可能不少的小伙伴都有看楼主昨天发的自定义日历控件,虽然实现功能不多,但也还算将就吧. 没有看的小伙伴如果有兴趣的话可以去看看:http://www.cnblogs.com/liushilin/p/57 ...

  5. android 自定义switch控件,Android中switch自定义样式

    android 原生开关按钮控件 Switch 提供样式自定义方式,可供我们修改为适合我们开发使用的样式控件,自定义样式过程如下: 自定义switch切换drawable 新建swith_thumb. ...

  6. 自定义View控件(2—手写实例代码)

    1. 步骤: + 1.自定义一个类继承于UIView + 2.在initWithFrame方法中添加子控件 + 3.在layoutSubviews中设置子控件的位置 + 4.提供一个属性保存外界传入的 ...

  7. android自定义选年控件,Android精美日历控件CalendarView自定义使用完全解析

    项目github地址 此框架采用组合的方式,各个模块互相独立,可自由采用各种提供的控件组合,完全自定义自己需要的UI,周视图和月视图可通过简单自定义任意自由绘制,不怕美工提需求!!!下面教程将介绍如何 ...

  8. android 自定义view控件,Android 自定义View——自定义View控件

    Android给我们提供了大量的View控件,但这还是远远满足不了我们的要求,有时候开发所需要的控件形式是在Android提供的控件中是不存在,这就需要我们自己去定义一个.那么如何自定义控件? 学习自 ...

  9. android 自定义刷新控件,Android开发中MJRefresh自定义刷新动画效果

    有时候我们对自己开发的项目经常不满意,但是我们要达到自定义刷新动画的效果有一定的难度,别着急,下面爱站技术频道和大家分享Android开发中MJRefresh自定义刷新动画效果,一起来学习吧! [一] ...

  10. Android 自定义titlebar控件(自定义UI控件)

    1.创建自定义的属性: 2.在自定义的布局中获取属性: 3.在mainActivity中使用 自定义控件,并使用自定义属性赋值. 1.创建自定义的属性创建 values/attr.xml 文件: &l ...

最新文章

  1. 《软件工艺师:专业、务实、自豪》一3.7.2 软件工艺概念走向全球
  2. BI Content、Metadata Repository
  3. vulcanjs 核心架构概念
  4. ElasticSearch 实践过程中遇到的几个小问题
  5. DOM(document object model),文档对象模型
  6. php是静态语言,Thinkphp静态缓存多语言切换
  7. 网络虚拟化基础一:linux名称空间Namespaces
  8. android 血压计开发,智能血压计方案开发
  9. 使用C#读取XML节点,修改XML节点
  10. linux用户管理相关
  11. ic卡信息保存在服务器,智能IC卡网络数据安全保密系统
  12. 虚拟化介绍及Docker与传统虚拟化有什么区别
  13. Matlab——m_map指南(3)——实例
  14. UVA 1001 Say Cheese(最短路)
  15. 第二届阿里巴巴大数据智能云上编程大赛亚军比赛攻略
  16. 从被遗忘到牛市龙头,一文梳理ETH 2020爆发逻辑
  17. 【化解数据结构】详解字典结构,并实现一个字典
  18. ios 7 Launch Images改变屏幕尺寸
  19. 玩《节奏大师》——换你所爱的歌曲
  20. Excel通过宏 实现数据的填充和表格的复制

热门文章

  1. 使用Servlet和Bootstrap上传Ajax文件
  2. jvm上的随机数与熵_向您的JVM添加一些熵
  3. jboss as安装配置_书评:JBoss AS 7:配置,部署和管理
  4. 项目学生:使用AOP简化代码
  5. Java,Scala,Guava和Trove集合-它们可以容纳多少数据?
  6. 使用Java EE安全性和JBoss AS 7.x保护JSF应用程序的安全
  7. 休眠事实:了解刷新操作顺序很重要
  8. Servlet异常和错误处理示例教程
  9. 使用Couchbase分页
  10. 自己构建GlassFish 4.0快照