关于项目的一点点总结,签到返利日历的实现
2017-09-26 12:05
441 查看
突然发现之前已经有两篇博客了,最近开发了两个新项目,10.1之前上线,所以一直都很忙,新项目用到了几个知识点,所以在此总结一下,
首先做了一个签到返利效果的,在网上找了蛮多的demo,但是没有合适的,主要看了两种
我接触的两种方式
1.通过GridView 去写一个日历
2.通过自定义去画一个日历
最后我选了自定义View 不管哪一种,都需要用到DateUtils,获取年月日
(这里因为是测试库的数据,所以签到金额UI显示有问题,但是线上库的数据不是100,是0.1,0.2这样的数字,所以文字上偏移不会太大)
然后就是在代码中画出来自己想要的布局
这里是先通过一个循环遍历取出一个月中的天,给每一天设置在Canvas中显示的位置,(关于自定义View,推荐扔物线大神写的一系列文章 http://hencoder.com/ui-1-5/)
因为我们还需要设置一些签到之后显示的效果,所以把显示的效果在
drawCircle(int row, int column, int day, Canvas canvas, Map
主要功能代码大概就是这样,现在贴出来全部代码
至于在代码中调用 因为需要和服务器对接数据,服务器回传过来日期金额以及是否签到状态
这样大概就是整个签到返利效果的日历了
下面是布局的部分代码 ,因为借鉴网上的,所以修改了一下
首先做了一个签到返利效果的,在网上找了蛮多的demo,但是没有合适的,主要看了两种
我接触的两种方式
1.通过GridView 去写一个日历
2.通过自定义去画一个日历
最后我选了自定义View 不管哪一种,都需要用到DateUtils,获取年月日
(这里因为是测试库的数据,所以签到金额UI显示有问题,但是线上库的数据不是100,是0.1,0.2这样的数字,所以文字上偏移不会太大)
public class DateUtils { /** * 通过年份和月份 得到当月的日子 * * @param year * @param month * @return */ public static int getMonthDays(int year, int month) { month++; switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: return 31; case 4: case 6: case 9: case 11: return 30; case 2: if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)){ return 29; }else{ return 28; } default: return -1; } } /** * 返回当前月份1号位于周几 * @param year * 年份 * @param month * 月份,传入系统获取的,不需要正常的 * @return * 日:1 一:2 二:3 三:4 四:5 五:6 六:7 */ public static int getFirstDayWeek(int year, int month){ Calendar calendar = Calendar.getInstance(); calendar.set(year, month, 1); Log.d("DateView", "DateView:First:" + calendar.getFirstDayOfWeek()); return calendar.get(Calendar.DAY_OF_WEEK); } }
然后就是在代码中画出来自己想要的布局
这里是先通过一个循环遍历取出一个月中的天,给每一天设置在Canvas中显示的位置,(关于自定义View,推荐扔物线大神写的一系列文章 http://hencoder.com/ui-1-5/)
这里写代码片 只给出核心代码 public class MonthDateView extends View { @Override protected void onDraw(Canvas canvas) { initSize(); daysString = new int[6][7]; mPaint.setTextSize(mDaySize * mDisplayMetrics.scaledDensity); String dayString; //日 数量 30 int mMonthDays = DateUtils.getMonthDays(mSelYear, mSelMonth); //获取当前第一天 是第几周 int weekNumber = DateUtils.getFirstDayWeek(mSelYear, mSelMonth); Log.d("DateView", "DateView:" + mSelMonth + "月1号周" + weekNumber); //这是画每一天 for (int day = 0; day < mMonthDays; day++) { //dayString 就是当前date的Int 值 dayString = (day + 1) + ""; int column = (day + weekNumber - 1) % 7; int row = (day + weekNumber - 1) / 7; //画每一天 daysString[row][column] = day + 1; int startX = (int) (mColumnSize * column + (mColumnSize - mPaint.measureText(dayString)) / 2); int startY = (int) (mRowSize * row + mRowSize / 2 - (mPaint.ascent() + mPaint.descent()) / 2); if (dayString.equals(mSelDay + "")) { //画 选中每一天的背景样式 float startCirX = (float) (mColumnSize * column + mColumnSize / 2); float startCirY = (float) (mRowSize * row + mRowSize / 2); mPaint.setColor(mCircleColor); mPaint.setAntiAlias(true); canvas.drawCircle(startCirX, startCirY, 40, mPaint); //记录第几行,即第几周 weekRow = row + 1; } //画有返利金额天数的背景样式 以及下面的 样式 画了很多次造成这样子的UI效果 // drawCircle(startX, startY, row,day, canvas, dayMoney); drawCircle(row, column, day, canvas, dayMoney); if (dayString.equals(mSelDay + "")) { mPaint.setColor(mSelectDayColor); } else if (dayString.equals(mCurrDay + "") && mCurrDay != mSelDay && mCurrMonth == mSelMonth) { //正常月,选中其他日期,则今日为红色 mPaint.setColor(mCurrentColor); } else { mPaint.setColor(mDayColor); } canvas.drawText(dayString, startX, startY, mPaint); if (tv_date != null) { tv_date.setText(mSelYear + "年" + (mSelMonth + 1) + "月"); } if (tv_week != null) { tv_week.setText("第" + weekRow + "周"); } } } }
因为我们还需要设置一些签到之后显示的效果,所以把显示的效果在
drawCircle(int row, int column, int day, Canvas canvas, Map
public void drawCircle(int row, int column, int day, Canvas canvas, Map<Integer, String> textMoney) { if (daysHasThingList != null && daysHasThingList.size() > 0) { //包含此天!!!!!!!! if (!daysHasThingList.contains(day)) return; if (getmSelMonth() == mCurrMonth) { Resources resources = getResources(); float startCirX = (float) (mColumnSize * column + mColumnSize / 2); float startCirY = (float) (mRowSize * row + mRowSize / 2); //天数 背景 圆环 mColumnSize = 97 固定值 int newColumn = mColumnSize * column; int newRow = mRowSize * row; Bitmap bitmap2 = BitmapFactory.decodeResource(resources, myDrawableSHape); int mBitWidth = bitmap2.getWidth(); int mBitHeight = bitmap2.getHeight(); // // float shapeX = (float) (newColumn+ mColumnSize*0.17 ); // float shapey = (float) (newRow +mRowSize*0.18 ); float shapeX = (float) (newColumn+mBitWidth*0.28 ); float shapey = (float) (newRow +mBitHeight/4 ); mPaint.setAntiAlias(true); canvas.drawBitmap(bitmap2, shapeX, shapey, mPaint); /** *TODO 重新画 很重要 */ // int mBitWidth = bitmap2.getWidth(); // int mBitHeight = bitmap2.getHeight(); // int roundleft = newColumn; // int roundtop = newRow ; // mSrcRect = new Rect(roundleft, roundtop, mBitWidth, mBitHeight); // mDestRect = new Rect(roundleft, roundtop, mBitWidth, mBitHeight); // canvas.drawBitmap(bitmap2, mSrcRect, mDestRect, mPaint); //金额背景 float circleX = (float) (mColumnSize * column + mColumnSize * 0.05); float circley = (float) (mRowSize * row + mRowSize * 0.7); mPaint.setAntiAlias(true); Bitmap bitmap = BitmapFactory.decodeResource(resources, myDrawable); canvas.drawBitmap(bitmap, circleX, circley, mPaint); //金额 String money = textMoney.get(day); // float textY = (float) circley + mRowSize / 3; Paint paint1 = new Paint(); paint1.setColor(mMoneyColor); paint1.setAntiAlias(true); paint1.setTextSize((mDaySize * mDisplayMetrics.scaledDensity / 3) * 2); // float textX = (float) (mColumnSize * column + (mColumnSize - paint1.measureText(String.valueOf(day))) / 2);; float textX = (float) newColumn +mColumnSize/4; float textY = (float) ((float) circley +(float) mColumnSize *0.3); String newmoney ="+" + money + "元"; canvas.drawText(newmoney, textX, textY, paint1); } } }
主要功能代码大概就是这样,现在贴出来全部代码
public class MonthDateView extends View { private static final int NUM_COLUMNS = 7; private static final int NUM_ROWS = 6; private Paint mPaint; private int mDayColor = Color.parseColor("#000000"); private int mSelectDayColor = Color.parseColor("#ffffff"); private int mSelectBGColor = Color.parseColor("#1FC2F3"); private int mCurrentColor = Color.parseColor("#ff0000"); private int mCurrYear, mCurrMonth, mCurrDay; private int mSelYear, mSelMonth, mSelDay; private int mColumnSize, mRowSize; private DisplayMetrics mDisplayMetrics; private int mDaySize = 16; private TextView tv_date, tv_week; private int weekRow; private int[][] daysString; private int mCircleRadius = 6; private DateClick dateClick; private int mCircleColor = Color.parseColor("#ff0000"); private int mTextColor = Color.parseColor("#1d1d1d"); // private int mMoneyColor = Color.parseColor("#1d1d1d"); private int mMoneyColor = Color.parseColor("#ffffff"); private List<Integer> daysHasThingList; private Map<Integer, String> dayMoney; private int myDrawable = R.drawable.signin_calendar_moneybg; private int myDrawableSHape = R.drawable.signin_calendar_round; private int dateTag = 0; public MonthDateView(Context context, AttributeSet attrs) { super(context, attrs); //density = 2.0 mDisplayMetrics = getResources().getDisplayMetrics(); Calendar calendar = Calendar.getInstance(); mPaint = new Paint(); mCurrYear = calendar.get(Calendar.YEAR); mCurrMonth = calendar.get(Calendar.MONTH); mCurrDay = calendar.get(Calendar.DATE); setSelectYearMonth(mCurrYear, mCurrMonth, mCurrDay); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); } @Override protected void onDraw(Canvas canvas) { initSize(); daysString = new int[6][7]; mPaint.setTextSize(mDaySize * mDisplayMetrics.scaledDensity); String dayString; //日 数量 30 int mMonthDays = DateUtils.getMonthDays(mSelYear, mSelMonth); //获取当前第一天 是第几周 int weekNumber = DateUtils.getFirstDayWeek(mSelYear, mSelMonth); Log.d("DateView", "DateView:" + mSelMonth + "月1号周" + weekNumber); //这是画每一天 for (int day = 0; day < mMonthDays; day++) { //dayString 就是当前date的Int 值 dayString = (day + 1) + ""; int column = (day + weekNumber - 1) % 7; int row = (day + weekNumber - 1) / 7; //画每一天 daysString[row][column] = day + 1; int startX = (int) (mColumnSize * column + (mColumnSize - mPaint.measureText(dayString)) / 2); int startY = (int) (mRowSize * row + mRowSize / 2 - (mPaint.ascent() + mPaint.descent()) / 2); if (dayString.equals(mSelDay + "")) { //画 选中每一天的背景样式 float startCirX = (float) (mColumnSize * column + mColumnSize / 2); float startCirY = (float) (mRowSize * row + mRowSize / 2); mPaint.setColor(mCircleColor); mPaint.setAntiAlias(true); canvas.drawCircle(startCirX, startCirY, 40, mPaint); //记录第几行,即第几周 weekRow = row + 1; } //画有返利金额天数的背景样式 以及下面的 样式 画了很多次造成这样子的UI效果 // drawCircle(startX, startY, row,day, canvas, dayMoney); drawCircle(row, column, day, canvas, dayMoney); if (dayString.equals(mSelDay + "")) { mPaint.setColor(mSelectDayColor); } else if (dayString.equals(mCurrDay + "") && mCurrDay != mSelDay && mCurrMonth == mSelMonth) { //正常月,选中其他日期,则今日为红色 mPaint.setColor(mCurrentColor); } else { mPaint.setColor(mDayColor); } canvas.drawText(dayString, startX, startY, mPaint); if (tv_date != null) { tv_date.setText(mSelYear + "年" + (mSelMonth + 1) + "月"); } if (tv_week != null) { tv_week.setText("第" + weekRow + "周"); } } } private Rect mSrcRect, mDestRect; public void drawCircle(int row, int column, int day, Canvas canvas, Map<Integer, String> textMoney) { if (daysHasThingList != null && daysHasThingList.size() > 0) { //包含此天!!!!!!!! if (!daysHasThingList.contains(day)) return; if (getmSelMonth() == mCurrMonth) { Resources resources = getResources(); float startCirX = (float) (mColumnSize * column + mColumnSize / 2); float startCirY = (float) (mRowSize * row + mRowSize / 2); //天数 背景 圆环 mColumnSize = 97 固定值 int newColumn = mColumnSize * column; int newRow = mRowSize * row; Bitmap bitmap2 = BitmapFactory.decodeResource(resources, myDrawableSHape); int mBitWidth = bitmap2.getWidth(); int mBitHeight = bitmap2.getHeight(); // // float shapeX = (float) (newColumn+ mColumnSize*0.17 ); // float shapey = (float) (newRow +mRowSize*0.18 ); float shapeX = (float) (newColumn+mBitWidth*0.28 ); float shapey = (float) (newRow +mBitHeight/4 ); mPaint.setAntiAlias(true); canvas.drawBitmap(bitmap2, shapeX, shapey, mPaint); /** *TODO 重新画 很重要 */ // int mBitWidth = bitmap2.getWidth(); // int mBitHeight = bitmap2.getHeight(); // int roundleft = newColumn; // int roundtop = newRow ; // mSrcRect = new Rect(roundleft, roundtop, mBitWidth, mBitHeight); // mDestRect = new Rect(roundleft, roundtop, mBitWidth, mBitHeight); // canvas.drawBitmap(bitmap2, mSrcRect, mDestRect, mPaint); //金额背景 float circleX = (float) (mColumnSize * column + mColumnSize * 0.05); float circley = (float) (mRowSize * row + mRowSize * 0.7); mPaint.setAntiAlias(true); Bitmap bitmap = BitmapFactory.decodeResource(resources, myDrawable); canvas.drawBitmap(bitmap, circleX, circley, mPaint); //金额 String money = textMoney.get(day); // float textY = (float) circley + mRowSize / 3; Paint paint1 = new Paint(); paint1.setColor(mMoneyColor); paint1.setAntiAlias(true); paint1.setTextSize((mDaySize * mDisplayMetrics.scaledDensity / 3) * 2); // float textX = (float) (mColumnSize * column + (mColumnSize - paint1.measureText(String.valueOf(day))) / 2);; float textX = (float) newColumn +mColumnSize/4; float textY = (float) ((float) circley +(float) mColumnSize *0.3); String newmoney ="+" + money + "元"; canvas.drawText(newmoney, textX, textY, paint1); } } } @Override public boolean performClick() { return super.performClick(); } private int downX = 0, downY = 0; @Override public boolean onTouchEvent(MotionEvent event) { int eventCode = event.getAction(); switch (eventCode) { case MotionEvent.ACTION_DOWN: downX = (int) event.getX(); downY = (int) event.getY(); break; case MotionEvent.ACTION_MOVE: break; case MotionEvent.ACTION_UP: int upX = (int) event.getX(); int upY = (int) event.getY(); if (Math.abs(upX - downX) < 10 && Math.abs(upY - downY) < 10) {//点击事件 performClick(); doClickAction((upX + downX) / 2, (upY + downY) / 2); } break; } return true; } /** * 初始化列宽行高 */ private void initSize() { mColumnSize = getWidth() / NUM_COLUMNS; mRowSize = getHeight() / NUM_ROWS; } /** * 设置年月 * * @param year * @param month */ private void setSelectYearMonth(int year, int month, int day) { mSelYear = year; mSelMonth = month; mSelDay = day; } /** * 执行点击事件 * * @param x * @param y */ private void doClickAction(int x, int y) { int row = y / mRowSize; int column = x / mColumnSize; setSelectYearMonth(mSelYear, mSelMonth, daysString[row][column]); invalidate(); //执行activity发送过来的点击处理事件 if (dateClick != null) { dateClick.onClickOnDate(); } } /** * 左点击,日历向后翻页 */ public void onLeftClick() { int year = mSelYear; int month = mSelMonth; int day = mSelDay; if (month == 0) {//若果是1月份,则变成12月份 year = mSelYear - 1; month = 11; } else if (DateUtils.getMonthDays(year, month) == day) { //如果当前日期为该月最后一点,当向前推的时候,就需要改变选中的日期 month = month - 1; day = DateUtils.getMonthDays(year, month); } else { month = month - 1; } setSelectYearMonth(year, month, day); invalidate(); } /** * 右点击,日历向前翻页 */ public void onRightClick() { int year = mSelYear; int month = mSelMonth; int day = mSelDay; if (month == 11) {//若果是12月份,则变成1月份 year = mSelYear + 1; month = 0; } else if (DateUtils.getMonthDays(year, month) == day) { //如果当前日期为该月最后一点,当向前推的时候,就需要改变选中的日期 month = month + 1; day = DateUtils.getMonthDays(year, month); } else { month = month + 1; } setSelectYearMonth(year, month, day); invalidate(); } /** * 获取选择的年份 * * @return */ public int getmSelYear() { return mSelYear; } /** * 获取选择的月份 * * @return */ public int getmSelMonth() { return mSelMonth; } /** * 获取选择的日期 * * @param */ public int getmSelDay() { return this.mSelDay; } /** * 普通日期的字体颜色,默认黑色 * * @param mDayColor */ public void setmDayColor(int mDayColor) { this.mDayColor = mDayColor; } /** * 选择日期的颜色,默认为白色 * * @param mSelectDayColor */ public void setmSelectDayColor(int mSelectDayColor) { this.mSelectDayColor = mSelectDayColor; } /** * 选中日期的背景颜色,默认蓝色 * * @param mSelectBGColor */ public void setmSelectBGColor(int mSelectBGColor) { this.mSelectBGColor = mSelectBGColor; } /** * 当前日期不是选中的颜色,默认红色 * * @param mCurrentColor */ public void setmCurrentColor(int mCurrentColor) { this.mCurrentColor = mCurrentColor; } /** * 日期的大小,默认18sp * * @param mDaySize */ public void setmDaySize(int mDaySize) { this.mDaySize = mDaySize; } /** * 设置显示当前日期的控件 * * @param tv_date 显示日期 * @param tv_week 显示周 */ public void setTextView(TextView tv_date, TextView tv_week) { this.tv_date = tv_date; this.tv_week = tv_week; invalidate(); } /** * 设置事务天数 * * @param daysHasThingList */ public void setDaysHasThingList(List<Integer> daysHasThingList) { this.daysHasThingList = daysHasThingList; } /*** * 设置圆圈的半径,默认为6 * * @param mCircleRadius */ public void setmCircleRadius(int mCircleRadius) { this.mCircleRadius = mCircleRadius; } /** * 设置圆圈的半径 * * @param mCircleColor */ public void setmCircleColor(int mCircleColor) { this.mCircleColor = mCircleColor; } /** * 设置日期的点击回调事件 * * @author shiwei.deng */ public interface DateClick { public void onClickOnDate(); } /** * 设置日期点击事件 * * @param dateClick */ public void setDateClick(DateClick dateClick) { this.dateClick = dateClick; } /** * 跳转至今天 */ public void setTodayToView() { setSelectYearMonth(mCurrYear, mCurrMonth, mCurrDay); invalidate(); } /* 需要日期 需要 金额 */ public void setMoney(Map<Integer, String> money) { this.dayMoney = money; } }
public class WeekDayView extends View { //上横线颜色 private int mTopLineColor = Color.parseColor("#CCE4F2"); //下横线颜色 private int mBottomLineColor = Color.parseColor("#CCE4F2"); //周一到周五的颜色 private int mWeedayColor = Color.parseColor("#1d1d1d"); //周六、周日的颜色 private int mWeekendColor = Color.parseColor("#ff0000"); //线的宽度 private int mStrokeWidth = 4; private int mWeekSize = 14; private Paint paint; private DisplayMetrics mDisplayMetrics; private String[] weekString = new String[]{"日","一","二","三","四","五","六"}; public WeekDayView(Context context, AttributeSet attrs) { super(context, attrs); mDisplayMetrics = getResources().getDisplayMetrics(); paint = new Paint(); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int widthSize = MeasureSpec.getSize(widthMeasureSpec); int widthMode = MeasureSpec.getMode(widthMeasureSpec); int heightSize = MeasureSpec.getSize(heightMeasureSpec); int heightMode = MeasureSpec.getMode(heightMeasureSpec); if(heightMode == MeasureSpec.AT_MOST){ heightSize = mDisplayMetrics.densityDpi * 30; } if(widthMode == MeasureSpec.AT_MOST){ widthSize = mDisplayMetrics.densityDpi * 300; } setMeasuredDimension(widthSize, heightSize); } @Override protected void onDraw(Canvas canvas) { int width = getWidth(); int height = getHeight(); //进行画上下线 paint.setStyle(Style.STROKE); paint.setColor(mTopLineColor); paint.setStrokeWidth(mStrokeWidth); canvas.drawLine(0, 0, width, 0, paint); //画下横线 paint.setColor(mBottomLineColor); canvas.drawLine(0, height, width, height, paint); paint.setStyle(Style.FILL); paint.setTextSize(mWeekSize * mDisplayMetrics.scaledDensity); int columnWidth = width / 7; for(int i=0;i < weekString.length;i++){ String text = weekString[i]; int fontWidth = (int) paint.measureText(text); int startX = columnWidth * i + (columnWidth - fontWidth)/2; int startY = (int) (height/2 - (paint.ascent() + paint.descent())/2); if(text.indexOf("日") > -1|| text.indexOf("六") > -1){ paint.setColor(mWeekendColor); }else{ paint.setColor(mWeedayColor); } canvas.drawText(text, startX, startY, paint); } } /** * 设置顶线的颜色 * @param mTopLineColor */ public void setmTopLineColor(int mTopLineColor) { this.mTopLineColor = mTopLineColor; } /** * 设置底线的颜色 * @param mBottomLineColor */ public void setmBottomLineColor(int mBottomLineColor) { this.mBottomLineColor = mBottomLineColor; } /** * 设置周一-五的颜色 * @return */ public void setmWeedayColor(int mWeedayColor) { this.mWeedayColor = mWeedayColor; } /** * 设置周六、周日的颜色 * @param mWeekendColor */ public void setmWeekendColor(int mWeekendColor) { this.mWeekendColor = mWeekendColor; } /** * 设置边线的宽度 * @param mStrokeWidth */ public void setmStrokeWidth(int mStrokeWidth) { this.mStrokeWidth = mStrokeWidth; } /** * 设置字体的大小 * @param mWeekSize */ public void setmWeekSize(int mWeekSize) { this.mWeekSize = mWeekSize; } /** * 设置星期的形式 * @param weekString * 默认值 "日","一","二","三","四","五","六" */ public void setWeekString(String[] weekString) { this.weekString = weekString; } }
至于在代码中调用 因为需要和服务器对接数据,服务器回传过来日期金额以及是否签到状态
List<Integer> listDate = new ArrayList<Integer>(); Map<Integer, String> listMoney = new HashMap<>(); /** * 获取网络数据 签到日期 返利金额 * * @param response */ private void processTaskData(String response) { Type collectionType = new TypeToken<List<DataPOJO>>() { }.getType(); data = (List<DataPOJO>) new Gson() .fromJson(response, collectionType); list = new ArrayList<>(); listDate.clear(); listMoney.clear(); //获取服务器数据 for (int i = 0; i < data.size(); i++) { String date = data.get(i).date; String money = data.get(i).money; String status = data.get(i).status; if (status.equals("0")) { listDate.add(i); listMoney.put(i, money); } } //设置签到显示 monthDateView.setDaysHasThingList(listDate); monthDateView.setMoney(listMoney); ProgressBarUtil.dismissProgress(getActivity()); };
这样大概就是整个签到返利效果的日历了
下面是布局的部分代码 ,因为借鉴网上的,所以修改了一下
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main12" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/standard_white" android:fitsSystemWindows="true" android:orientation="vertical"> <RelativeLayout android:layout_width="match_parent" android:layout_height="160dp" android:background="@drawable/signin_bg"> <RelativeLayout android:id="@+id/task_main_click" android:layout_width="100dp" android:layout_height="100dp" android:layout_centerHorizontal="true" android:layout_marginTop="@dimen/commen_30dp" android:background="@drawable/signin_menu_nor"> <TextView android:id="@+id/task_main_profit" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_marginTop="@dimen/commen_50dp" android:text="点击签到" android:textColor="@color/standard_red" android:textSize="16sp" /> <TextView android:id="@+id/task_main_time" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_marginTop="@dimen/commen_70dp" android:text="未登录" android:textColor="#ffa478" android:textSize="11sp" /> </RelativeLayout> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_marginBottom="@dimen/commen_10dp" android:gravity="center_horizontal" android:text="连续打卡天数越多,打卡奖金越高噢!" android:textColor="#99ffffff" /> </RelativeLayout> <!-- 日历时间选择栏 --> <RelativeLayout android:layout_width="fill_parent" android:layout_height="25dp" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_marginTop="@dimen/commen_30dp" android:background="#ffffff" android:gravity="center_vertical"> <ImageView android:id="@+id/iv_left" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_centerVertical="true" android:layout_marginLeft="75dp" android:background="@drawable/signin_arrow_left" android:contentDescription="@null" /> <ImageView android:id="@+id/iv_right" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:layout_marginRight="75dp" android:background="@drawable/signin_arrow_right" android:contentDescription="@null" /> <LinearLayout android:id="@+id/date_operator_ll" android:layout_width="fill_parent" android:layout_height="match_parent" android:layout_centerInParent="true" android:gravity="center" android:orientation="horizontal"> <TextView android:id="@+id/tv_today" android:layout_width="25dp" android:layout_height="25dp" android:layout_marginRight="5dp" android:background="#FFD700" android:gravity="center" android:text="今" android:textColor="#ffffff" android:textSize="17sp" android:visibility="gone" /> <TextView android:id="@+id/date_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_vertical" android:text="" android:textColor="@color/text_black" android:textSize="20sp" /> <TextView android:id="@+id/week_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:gravity="center_horizontal" android:text="" android:textColor="#93C73C" android:textSize="20sp" android:visibility="gone" /> </LinearLayout> </RelativeLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_marginTop="@dimen/commen_30dp" android:background="#ffffff" android:orientation="vertical"> <io.dcloud.H53CF40A7.view.WeekDayView android:layout_width="match_parent" android:layout_height="30dp" /> <io.dcloud.H53CF40A7.view.MonthDateView android:id="@+id/monthDateView" android:layout_width="fill_parent" android:layout_height="match_parent" /> </LinearLayout> </LinearLayout>
相关文章推荐
- Spring MVC学习总结(5)——SpringMVC项目关于安全的一些配置与实现方式
- Spring MVC学习总结(5)——SpringMVC项目关于安全的一些配置与实现方式
- 关于最近做项目的一点点总结
- Spring MVC学习总结(5)——SpringMVC项目关于安全的一些配置与实现方式
- 网上一位仁兄关于项目管理的总结
- 我在项目管理中关于需求分析的总结
- 关于ET项目的总结
- 项目技术经验总结二:系统多风格的实现
- 关于pushlet的一些总结,它实际只实现了poll而未实现push
- MOSS2007 如何实现SSO项目总结
- 关于EXT使用蒙版和单操作(添加,修改,导入)的一点点总结
- 关于JAVA实训项目的总结
- 关于web应用程序权限管理的总结(实现)
- 使用Spring+Ibatis的项目,关于如何使用事务、如何提升性能的几点总结
- 关于QQ项目的一些总结
- 关于电子地图项目的总结和展望
- 【原】关于ActiveX插件小项目总结
- 关于项目中异常处理的一些总结
- 关于Hibernate操作数据库为空(数值类型)以及引起的问题的一点点总结
- EMF的一些总结(3)——关于Resource的实现