国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > Android > 正文

Android實(shí)現(xiàn)帶簽到贏積分功能的日歷

2019-10-22 18:10:42
字體:
供稿:網(wǎng)友

Android實(shí)現(xiàn)點(diǎn)擊簽到按鈕直接簽到,彈出dialog,先上效果圖

Android,簽到,日歷

demo是利用gridview實(shí)現(xiàn)的,現(xiàn)附上布局文件

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"   android:layout_width="match_parent"   android:layout_height="match_parent"   android:orientation="vertical"  >  <LinearLayout  android:layout_width="match_parent"  android:layout_height="wrap_content"  android:padding="2dp"  android:orientation="vertical"  android:background="@drawable/shape_btn_white"  >  <RelativeLayout  android:layout_width="match_parent"  android:layout_height="40dp"  >  <ImageView   android:id="@+id/iv_front"   android:layout_width="30dp"   android:layout_height="40dp"   android:padding="10dp"   android:layout_marginLeft="8dp"   android:scaleType="centerCrop"   android:layout_alignParentLeft="true"   android:layout_centerInParent="true"   android:src="@mipmap/icon_sign_front"   />  <TextView   android:id="@+id/tv_date"   android:layout_width="wrap_content"   android:layout_height="wrap_content"   android:layout_centerInParent="true"   android:textColor="#2fbbef"   android:textSize="15sp"   android:text="2016-7-16"   />  <ImageView   android:id="@+id/iv_next"   android:layout_width="30dp"   android:layout_height="40dp"   android:layout_marginRight="8dp"   android:padding="10dp"   android:scaleType="centerCrop"   android:layout_alignParentRight="true"   android:layout_centerInParent="true"   android:src="@mipmap/icon_sign_next"   />  </RelativeLayout>  <LinearLayout  android:layout_width="match_parent"  android:layout_height="40dp"  >  <TextView   android:layout_width="40dp"   android:layout_height="40dp"   android:layout_weight="1"   android:gravity="center"   android:text="日"   android:textSize="15sp"   android:textColor="#888"   />  <TextView   android:layout_width="40dp"   android:layout_height="40dp"   android:layout_weight="1"   android:gravity="center"   android:text="一"   android:textSize="15sp"   android:textColor="#888"   />  <TextView   android:layout_width="40dp"   android:layout_height="40dp"   android:layout_weight="1"   android:gravity="center"   android:text="二"   android:textSize="15sp"   android:textColor="#888"   />  <TextView   android:layout_width="40dp"   android:layout_height="40dp"   android:layout_weight="1"   android:gravity="center"   android:text="三"   android:textSize="15sp"   android:textColor="#888"   />  <TextView   android:layout_width="40dp"   android:layout_height="40dp"   android:layout_weight="1"   android:gravity="center"   android:text="四"   android:textSize="15sp"   android:textColor="#888"   />  <TextView   android:layout_width="40dp"   android:layout_height="40dp"   android:layout_weight="1"   android:gravity="center"   android:text="五"   android:textSize="15sp"   android:textColor="#888"   />  <TextView   android:layout_width="40dp"   android:layout_height="40dp"   android:layout_weight="1"   android:gravity="center"   android:text="六"   android:textSize="15sp"   android:textColor="#888"   />  </LinearLayout>  <GridView  android:id="@+id/gv_sign_date"  android:layout_width="match_parent"  android:layout_height="wrap_content"  android:background="#dbdbdb"  android:clickable="true"  android:clipChildren="true"  android:columnWidth="30dp"  android:listSelector="@null"  android:numColumns="7"  android:paddingBottom="1dp"  android:stretchMode="columnWidth"  android:verticalSpacing="1dp"  ></GridView>  <TextView   android:layout_width="match_parent"   android:layout_height="1dp"   android:background="#dbdbdb"   />  <LinearLayout   android:layout_width="match_parent"   android:layout_height="50dp"   android:gravity="center"   >   <TextView   android:layout_width="wrap_content"   android:layout_height="wrap_content"   android:text="連續(xù)簽到會(huì)有更多積分哦 !"   android:textColor="#2a2a2a"   android:layout_marginRight="5dp"   android:textSize="14sp"   />   <TextView   android:id="@+id/tv_sign_num"   android:layout_width="wrap_content"   android:layout_height="wrap_content"   android:layout_marginRight="20dp"   android:visibility="gone"   android:text="3天"   />   <TextView   android:layout_width="wrap_content"   android:layout_height="wrap_content"   android:text="@string/jifen"   android:textColor="#2a2a2a"   android:visibility="gone"    android:layout_marginRight="5dp"   android:textSize="14sp"   />   <TextView   android:id="@+id/tv_jifen_num"   android:visibility="gone"   android:layout_width="wrap_content"   android:layout_height="wrap_content"   android:text="100"   />  </LinearLayout> </LinearLayout> </LinearLayout> 

效果圖: 

Android,簽到,日歷

dialog中的主要代碼:

public class SignDataDialog extends Dialog implements View.OnClickListener{  private GridView gridView;  private ImageView iv_front,iv_next;  private TextView tv_date,tv_sign_days,tv_jifen;  private MyCalendarAdapter adapter;  private SpecialCalendar sp;  private Context context;  private SignDateModle modle;  private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-M-d");  private String systime;  private int year,month;  String[] b=new String[]{   "0","0","0","0","0","0","0",   "0","0","0","0","0","0","0",   "0","0","0","0","0","0","0",   "0","0","0","0","0","0","0",   "0","0","0","0","0","0","0",   "0","0","0","0","0","0","0"  };  public SignDataDialog(Context context,SignDateModle modle) {  super(context);  this.context=context;  this.modle=modle;  setContentView(R.layout.dialog_sign_data);  Window window = getWindow();  WindowManager.LayoutParams params = window.getAttributes();  params.gravity = Gravity.CENTER;  window.setBackgroundDrawableResource(android.R.color.transparent);  window.setAttributes(params);  setCanceledOnTouchOutside(true);  }   @Override  protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  sp=new SpecialCalendar();  Date date = new Date();  systime = sdf.format(date);  year=Integer.valueOf(systime.split("-")[0]);  month=Integer.valueOf(systime.split("-")[1]);  iv_front= (ImageView) findViewById(R.id.iv_front);  iv_next= (ImageView) findViewById(R.id.iv_next);  gridView= (GridView) findViewById(R.id.gv_sign_date);  tv_date= (TextView) findViewById(R.id.tv_date);  tv_sign_days= (TextView) findViewById(R.id.tv_sign_num);  tv_jifen= (TextView) findViewById(R.id.tv_jifen_num);  tv_date.setText(systime);  iv_front.setOnClickListener(this);  iv_next.setOnClickListener(this);  if (modle!=null) {   String dates=modle.getDateTime();   adapter = new MyCalendarAdapter(context, Integer.valueOf(dates.split("-")[0]), Integer.valueOf(dates.split("-")[1]), 17, getStrings(modle));   gridView.setAdapter(adapter);  }  } public String[] getStrings(SignDateModle modle){  int year=Integer.valueOf(modle.getDateTime().split("-")[0]);  int moth=Integer.valueOf(modle.getDateTime().split("-")[1]);  int start=sp.getWeekdayOfMonth(year,moth);  for (int i=0;i<modle.getDatas().size();i++){  if (modle.getDatas().get(i).getStatus()==1){   b[i]=String.valueOf(1);  }  }  return b; }  @Override  public void onClick(View v) {  switch (v.getId()){   case R.id.iv_front:   redMonth();   tv_date.setText(year+"-"+month+"-"+systime.split("-")[2]);   changeOtherMoth(year, month);   break;   case R.id.iv_next:   addMonth();   tv_date.setText(year+"-"+month+"-"+systime.split("-")[2]);   changeOtherMoth(year,month);   break;  }  }  public void addMonth(){  month++;  if (month==13){   month=1;   year++;  }  }  public void redMonth(){  month--;  if (month==0){   month=12;   year--;  }  }  public void changeOtherMoth(int year,int moth){  if (CMethod.isNet(context)){   JSONObject jsonObject= NetJsonModle.getJsonObject(context,"528");   try {   jsonObject.put("reporterId",new LastLoginUtils(context).getReporterId());   jsonObject.put("time", year + "-" + moth);   HttpUtils.PostDataToWeb(UrlAddressUrils.CODE_OTHER, AppConstants.SIGN_DATA_INFO, jsonObject, new HttpClientListener() {    @Override    public void onSuccess(String result) {    Gson gson = new Gson();    SignDateModle m = gson.fromJson(result, SignDateModle.class);    for (int i = 0; i < b.length; i++) {     b[i] = "0";    }    if (m != null) {     String dates = m.getDateTime();     adapter = new MyCalendarAdapter(context, Integer.valueOf(dates.split("-")[0]), Integer.valueOf(dates.split("-")[1]), 17, getStrings(m));     gridView.setAdapter(adapter);    }    }     @Override    public void onFailure(String result) {     }     @Override    public void onError() {     }   });   } catch (JSONException e) {   e.printStackTrace();   }  }else {   T.s("請(qǐng)檢查網(wǎng)絡(luò)是否連接");  }  } 

其計(jì)算日期的主要代碼在適配器中:

 class MyCalendarAdapter extends BaseAdapter{  private boolean isLeapyear = false; // 是否為閏年  private int daysOfMonth = 0; // 某月的天數(shù)  private int dayOfWeek = 0; // 具體某一天是星期幾  private int lastDaysOfMonth = 0; // 上一個(gè)月的總天數(shù)  private Context context;  private String[] dayNumber = new String[42]; // 一個(gè)gridview中的日期存入此數(shù)組中  private SpecialCalendar sc = null;  private String currentYear = "";  private String currentMonth = "";  private int currentFlag = -1; // 用于標(biāo)記當(dāng)天  private String showYear = ""; // 用于在頭部顯示的年份  private String showMonth = ""; // 用于在頭部顯示的月份  private String animalsYear = "";  private String leapMonth = ""; // 閏哪一個(gè)月  // 系統(tǒng)當(dāng)前時(shí)間  private String sysDate = "";  private String sys_year = "";  private String sys_month = "";  private String sys_day = "";  private boolean flag;// 標(biāo)記是不是本月  private String[] data;  private int a;  public MyCalendarAdapter() {   Date date = new Date();   sysDate = sdf.format(date); // 當(dāng)期日期   sys_year = sysDate.split("-")[0];   sys_month = sysDate.split("-")[1];   sys_day = sysDate.split("-")[2];   }  public MyCalendarAdapter(Context context,int year_c,int month_c, int day_c, String[] a) {   // TODO Auto-generated constructor stub   this();   this.context = context;   sc = new SpecialCalendar();   currentYear = String.valueOf(year_c);// 得到當(dāng)前的年份   currentMonth = String.valueOf(month_c);   getCalendar(Integer.parseInt(currentYear),    Integer.parseInt(currentMonth));   data = a;  }  @Override  public int getCount() {   return dayNumber.length;  }   @Override  public Object getItem(int position) {   return position;  }   @Override  public long getItemId(int position) {   return position;  }   @Override  public View getView(int position, View convertView, ViewGroup parent) {   ViewHolder holder;   if (convertView==null){   holder=new ViewHolder();   convertView= LayoutInflater.from(context).inflate(R.layout.item_sign_data,null);   holder.iv_bg= (ImageView) convertView.findViewById(R.id.iv_bg);   holder.tv_date= (TextView) convertView.findViewById(R.id.tv_date);   convertView.setTag(holder);   }else {   holder= (ViewHolder) convertView.getTag();   }   String d = dayNumber[position];   holder.tv_date.setText(d);   holder.tv_date.setTextColor(Color.GRAY);    if (position < daysOfMonth + dayOfWeek && position >= dayOfWeek) {   // 當(dāng)前月信息顯示   holder.tv_date.setTextColor(Color.parseColor("#2a2a2a"));// 當(dāng)月字體設(shè)黑   flag = true;   a++;   } else {   flag = false;   }   if (flag) {   if (a <= data.length) {    String att = data[a - 1];    if (att.equals("1")) {//簽到     holder.tv_date.setTextColor(Color.parseColor("#2a2a2a"));     holder.iv_bg.setVisibility(View.VISIBLE);    }   }   }   if (currentFlag == position) {   // 設(shè)置當(dāng)天的背景 //  String dv="今日"; //  SpannableString sp = new SpannableString(d + "/n" + dv);//當(dāng)天字體加粗 //  sp.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), 0, //   d.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //  sp.setSpan(new RelativeSizeSpan(1.2f), 0, d.length(), //   Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //  sp.setSpan(new RelativeSizeSpan(0.75f), d.length() , //   dayNumber[position].length()+ 3, //   Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //  holder.tv_date.setText(sp); //  holder.iv_bg.setVisibility(View.VISIBLE);   holder.iv_bg.setImageDrawable(context.getResources().getDrawable(R.mipmap.icon_sign_bg_today));   }   return convertView;  }  class ViewHolder{   private ImageView iv_bg;   private TextView tv_date;  }  // 得到某年的某月的天數(shù)且這月的第一天是星期幾  public void getCalendar(int year, int month) {   isLeapyear = sc.isLeapYear(year); // 是否為閏年   daysOfMonth = sc.getDaysOfMonth(isLeapyear, month); // 某月的總天數(shù)   dayOfWeek = sc.getWeekdayOfMonth(year, month); // 某月第一天為星期幾   lastDaysOfMonth = sc.getDaysOfMonth(isLeapyear, month - 1); // 上一個(gè)月的總天數(shù)   getweek(year, month);  }  // 將一個(gè)月中的每一天的值添加入數(shù)組dayNuber中  private void getweek(int year, int month) {   int j = 1;   int flag = 0;   String lunarDay = "";    // 得到當(dāng)前月的所有日程日期(這些日期需要標(biāo)記)   for (int i = 0; i < dayNumber.length; i++) {    if (i < dayOfWeek) { // 前一個(gè)月    int temp = lastDaysOfMonth - dayOfWeek + 1;    dayNumber[i] = (temp + i) + "";   } else if (i < daysOfMonth + dayOfWeek) { // 本月    String day = String.valueOf(i - dayOfWeek + 1); // 得到的日期    dayNumber[i] = i - dayOfWeek + 1 + "";    // 對(duì)于當(dāng)前月才去標(biāo)記當(dāng)前日期    if (sys_year.equals(String.valueOf(year))     && sys_month.equals(String.valueOf(month))     && sys_day.equals(day)) {    // 標(biāo)記當(dāng)前日期    currentFlag = i;    }    setShowYear(String.valueOf(year));    setShowMonth(String.valueOf(month));   } else { // 下一個(gè)月    dayNumber[i] = j + "";    j++;   }   }   String abc = "";   for (int i = 0; i < dayNumber.length; i++) {   abc = abc + dayNumber[i] + ":";   }  }   public String getShowYear() {   return showYear;  }   public void setShowYear(String showYear) {   this.showYear = showYear;  }   public String getShowMonth() {   return showMonth;  }   public void setShowMonth(String showMonth) {   this.showMonth = showMonth;  }   public String getAnimalsYear() {   return animalsYear;  }   public void setAnimalsYear(String animalsYear) {   this.animalsYear = animalsYear;  }   public String getLeapMonth() {   return leapMonth;  }   public void setLeapMonth(String leapMonth) {   this.leapMonth = leapMonth;  } } 
public class SpecialCalendar {   private int daysOfMonth = 0; // 某月的天數(shù)  private int dayOfWeek = 0; // 具體某一天是星期幾   // 判斷是否為閏年  public boolean isLeapYear(int year) {  if (year % 100 == 0 && year % 400 == 0) {   return true;  } else if (year % 100 != 0 && year % 4 == 0) {   return true;  }  return false;  }   // 得到某月有多少天數(shù)  public int getDaysOfMonth(boolean isLeapyear, int month) {  switch (month) {  case 1:  case 3:  case 5:  case 7:  case 8:  case 10:  case 12:   daysOfMonth = 31;   break;  case 4:  case 6:  case 9:  case 11:   daysOfMonth = 30;   break;  case 2:   if (isLeapyear) {   daysOfMonth = 29;   } else {   daysOfMonth = 28;   }   }  return daysOfMonth;  }   // 指定某年中的某月的第一天是星期幾  public int getWeekdayOfMonth(int year, int month) {  Calendar cal = Calendar.getInstance();  cal.set(year, month - 1, 1);  dayOfWeek = cal.get(Calendar.DAY_OF_WEEK) - 1;  return dayOfWeek;  }  } 

積分當(dāng)然是交給后臺(tái)處理返回了。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到Android開發(fā)頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 庆阳市| 比如县| 桦南县| 当阳市| 绥中县| 乌拉特中旗| 南丹县| 延寿县| 张家港市| 磴口县| 阳江市| 招远市| 正宁县| 伊通| 西丰县| 凤阳县| 茌平县| 绿春县| 绥阳县| 临汾市| 揭东县| 巴彦淖尔市| 泌阳县| 太和县| 石河子市| 大悟县| 印江| 安溪县| 黑水县| 昌黎县| 老河口市| 高清| 西青区| 河西区| 涞水县| 措勤县| 秭归县| 永平县| 乌拉特后旗| 锡林郭勒盟| 蓬溪县|