本文实例为大家分享了Android实现app每月签到功能的具体代码,供大家参考,具体内容如下

先上一张效果图:

其中这些签到的效果图是在网上找的,然后重要用到的控件就是 GridvVew 了, 代码很简单,只有3个代码文件:

MainActivity.class 文件

package zhanghuan.cn.checkdesign; import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.GridView;import android.widget.TextView; import java.util.ArrayList;import java.util.Calendar;import java.util.List;import java.util.Locale; public class MainActivity extends AppCompatActivity { private List checkBeanList; private MyAdapter mAdapter; private GridView mGridview; private TextView monthTxt;  @Override protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.activity_main);  initDate(); }  private void initDate() {   Calendar calendar = Calendar.getInstance(Locale.CHINA);  int month = calendar.get(Calendar.MONTH) + 1;  int day = calendar.getActualMaximum(Calendar.DATE); // 获取当前月的天数   checkBeanList = new ArrayList();  for (int i = 0; i < day + 1; i++) {   CheckBean checkBean = new CheckBean();   if ((int) (Math.random() * 20 % 4) == 3) {    checkBean.day = i;    checkBean.check_status = CheckBean.CHECKED;   } else if ((int) (Math.random() * 20 % 4) == 2) {    checkBean.day = i;    checkBean.check_status = CheckBean.CHECK_NO;   } else {    checkBean.day = i;    checkBean.check_status = CheckBean.CHECK_WAIT;   }    checkBeanList.add(checkBean);  }   monthTxt = (TextView)findViewById(R.id.item_month);  if (month < 1 || month > 12) {   month = 1;  }  monthTxt.setText("当前签到月份是:" + month);   mAdapter = new MyAdapter(MainActivity.this);  mAdapter.setListDate(checkBeanList);   mGridview = (GridView) findViewById(R.id.main_gridview);  mGridview.setAdapter(mAdapter); }}

适配器文件:MyAdapter.class 

package zhanghuan.cn.checkdesign; import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;import android.widget.Toast; import java.util.List; /** * Created by zhanghuan on 2016/3/8. */public class MyAdapter extends BaseAdapter { private Context mContext; private List checkBeanList;  public MyAdapter(Context context) {  mContext = context; }  public void setListDate(List checklist) {  checkBeanList = checklist; }  @Override public int getCount() {  return checkBeanList.size(); }  @Override public Object getItem(int position) {  return checkBeanList.get(position); }  @Override public long getItemId(int position) {  return position; }  @Override public View getView(final int position, View convertView, ViewGroup parent) {  final MyHoder hoder;   if (convertView == null) {   convertView = LayoutInflater.from(mContext).inflate(R.layout.check_item, null);   hoder = new MyHoder();   hoder.day = (TextView) convertView.findViewById(R.id.item_day);   hoder.status = (ImageView) convertView.findViewById(R.id.item_image);   convertView.setTag(hoder);  } else {   hoder = (MyHoder) convertView.getTag();  }   hoder.day.setText("day" + checkBeanList.get(position).day);  if (checkBeanList.get(position).check_status == CheckBean.CHECK_NO) {   hoder.status.setImageResource(R.mipmap.check_no);   hoder.status.setOnClickListener(new View.OnClickListener() {    @Override    public void onClick(View v) {     Toast.makeText(mContext, "恭喜你,签到成功!", Toast.LENGTH_SHORT).show();     hoder.status.setImageResource(R.mipmap.checked);     hoder.status.setClickable(false);     checkBeanList.get(position).check_status = CheckBean.CHECKED;     /* 在此做一些签到请求的处理 */    }   });  } else if (checkBeanList.get(position).check_status == CheckBean.CHECK_WAIT) {   hoder.status.setImageResource(R.mipmap.check_wait);  } else if (checkBeanList.get(position).check_status == CheckBean.CHECKED) {   hoder.status.setImageResource(R.mipmap.checked);  }  return convertView; }  private static class MyHoder {  TextView day;  ImageView status; }}

CheckBean.class 文件:

package zhanghuan.cn.checkdesign; import java.io.Serializable; /** * Created by zhanghuan on 2016/3/8. */public class CheckBean implements Serializable { // 根据自己的需求可以做补签的字段设置  public static final int CHECKED = 3; //已签到 public static final int CHECK_NO = 2; //没有签到 public static final int CHECK_WAIT = 1; //等待签到 (时间没到无法签到)  public int day; public int check_status;}

源代码下载:点击打开链接

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

更多相关文章

  1. Android(安卓)Studio使用教程(三):常用快捷键
  2. Android获取文件夹路径 /data/data/
  3. Android(安卓)录音实现方法、仿微信语音、麦克风录音、发送语音
  4. Android——selector背景选择器
  5. 【Android(安卓)Studio】将一个Module直接复制到另一个Project中
  6. Android(安卓)7.0、8.1 导航栏上添加图标 及 相应功能
  7. Android多分辨率自适应
  8. 自己编译 tess-two几个库文件用于android OCR开发并合入你的工程
  9. android在代码中设置margin属性

随机推荐

  1. android 触摸事件、点击事件的区别
  2. Android(安卓)Service生命周期及用法
  3. Android(安卓)事件分发
  4. Android(安卓)HAL实现的三种方式(3) - 基
  5. 10个常见的 Android(安卓)新手误区
  6. 解读2015之Android篇:横向扩张、平稳发展
  7. 浅谈Android文件管理器的几种实现方式(原
  8. android 蓝牙开发
  9. Android(安卓)wifi驱动的移植 realtek 81
  10. Android(安卓)IO流使用详解-SDcard