成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

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

小編給大家分享一下Android怎么實(shí)現(xiàn)帶簽到贏積分功能的日歷,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

創(chuàng)新互聯(lián)成立與2013年,先為江蘇等服務(wù)建站,江蘇等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為江蘇企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。

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

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

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怎么實(shí)現(xiàn)帶簽到贏積分功能的日歷

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)處理返回了。

看完了這篇文章,相信你對(duì)“Android怎么實(shí)現(xiàn)帶簽到贏積分功能的日歷”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

網(wǎng)頁(yè)標(biāo)題:Android怎么實(shí)現(xiàn)帶簽到贏積分功能的日歷
網(wǎng)站地址:http://jinyejixie.com/article34/gcepse.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器搜索引擎優(yōu)化、手機(jī)網(wǎng)站建設(shè)、關(guān)鍵詞優(yōu)化、網(wǎng)站內(nèi)鏈、建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站
海门市| 岱山县| 凌海市| 城固县| 怀仁县| 河曲县| 锦屏县| 龙泉市| 福清市| 安西县| 丁青县| 织金县| 荣成市| 湛江市| 岳阳市| 社会| 柞水县| 威远县| 嘉善县| 黄大仙区| 南郑县| 吴江市| 巫山县| 卢龙县| 绍兴市| 平果县| 哈巴河县| 龙岩市| 兴义市| 维西| 平泉县| 绍兴县| 永泰县| 永丰县| 潢川县| 仙桃市| 从化市| 江津市| 五莲县| 太谷县| 连山|