Browse Source

更新代码

gongpm 9 years ago
parent
commit
ecd5217f09
25 changed files with 1681 additions and 153 deletions
  1. 0 1
      WeiChat/build.gradle
  2. 4 1
      WeiChat/src/main/AndroidManifest.xml
  3. 10 8
      WeiChat/src/main/java/com/xzjmyk/pm/activity/db/dao/FriendDao.java
  4. 51 6
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/calendar/bizs/decors/DPDecor.java
  5. 3 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/calendar/cons/DPMode.java
  6. 21 42
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/calendar/views/DatePicker.java
  7. 62 38
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/calendar/views/MonthView.java
  8. 252 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/calendar/views/TaskDatePicker.java
  9. 791 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/calendar/views/TaskMonthView.java
  10. 6 6
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/calendar/views/TimeView.java
  11. 8 8
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/AddTaskActivity.java
  12. 8 8
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/ClientActivity.java
  13. 34 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/OA_AlarmaActivity.java
  14. 67 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/SigninActivity.java
  15. 3 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/WebViewCommActivity.java
  16. 11 3
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/message/SubscriptionActivity.java
  17. 6 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/util/TimeUtils.java
  18. BIN
      WeiChat/src/main/res/drawable-xxhdpi/alar.png
  19. BIN
      WeiChat/src/main/res/drawable-xxhdpi/alarm.png
  20. BIN
      WeiChat/src/main/res/drawable-xxhdpi/back.png
  21. BIN
      WeiChat/src/main/res/drawable-xxhdpi/oa_rili.png
  22. 24 0
      WeiChat/src/main/res/drawable/oa_signin_tv_bg.xml
  23. 10 3
      WeiChat/src/main/res/layout/activity_client.xml
  24. 128 0
      WeiChat/src/main/res/layout/activity_oa__alarma.xml
  25. 182 25
      WeiChat/src/main/res/layout/activity_signin.xml

+ 0 - 1
WeiChat/build.gradle

@@ -68,5 +68,4 @@ dependencies {
     compile 'com.android.support:support-v4:22+'
     compile 'com.umeng.analytics:analytics:latest.integration'
     compile 'com.android.support:cardview-v7:22.2.0'
-    compile 'cn.aigestudio.datepicker:DatePicker:2.2.0'
 }

+ 4 - 1
WeiChat/src/main/AndroidManifest.xml

@@ -404,7 +404,10 @@
             android:theme="@style/Theme.AppCompat.Light.NoActionBar" />
         <activity
             android:name=".ui.erp.activity.SigninActivity"
-            android:theme="@style/Theme.AppCompat.Light.NoActionBar"/>
+            android:theme="@style/Theme.AppCompat.Light.NoActionBar" />
+        <activity
+            android:name=".ui.erp.activity.OA_AlarmaActivity"
+            android:theme="@style/Theme.AppCompat.Light.NoActionBar" />
     </application>
 
 </manifest>

+ 10 - 8
WeiChat/src/main/java/com/xzjmyk/pm/activity/db/dao/FriendDao.java

@@ -14,14 +14,14 @@ import com.j256.ormlite.stmt.DeleteBuilder;
 import com.j256.ormlite.stmt.PreparedQuery;
 import com.j256.ormlite.stmt.QueryBuilder;
 import com.j256.ormlite.stmt.UpdateBuilder;
-import com.xzjmyk.pm.activity.bean.message.NewFriendMessage;
 import com.xzjmyk.pm.activity.MyApplication;
-
+import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.bean.AttentionUser;
 import com.xzjmyk.pm.activity.bean.Friend;
 import com.xzjmyk.pm.activity.bean.message.ChatMessage;
 import com.xzjmyk.pm.activity.bean.message.MucRoom;
 import com.xzjmyk.pm.activity.bean.message.MucRoomMember;
+import com.xzjmyk.pm.activity.bean.message.NewFriendMessage;
 import com.xzjmyk.pm.activity.bean.message.XmppMessage;
 import com.xzjmyk.pm.activity.db.SQLiteHelper;
 import com.xzjmyk.pm.activity.db.SQLiteRawUtil;
@@ -33,8 +33,6 @@ import java.sql.SQLException;
 import java.util.List;
 import java.util.UUID;
 
-import com.xzjmyk.pm.activity.R;
-
 /**
  * 访问朋友数据的Dao
  */
@@ -74,6 +72,7 @@ public class FriendDao {
     public void checkSystemFriend(String ownerId) {
 
     }
+
     /**
      * 检测4个系统号是否存在
      *
@@ -259,7 +258,7 @@ public class FriendDao {
             if (friendsList == null || friendsList.size() <= 0) {// 添加这个面试中心10003
                 friendDao.create(friend);
             /*	ChatMessage chatMessage = new ChatMessage();
-			chatMessage.setType(XmppMessage.TYPE_TIP);
+            chatMessage.setType(XmppMessage.TYPE_TIP);
 			chatMessage.setPacketId(UUID.randomUUID().toString().replaceAll("-", ""));// 随机产生一个PacketId
 			chatMessage.setFromUserId(Friend.ID_ERP_NOTICE);
 			chatMessage.setMessageState(ChatMessageListener.MESSAGE_SEND_SUCCESS);
@@ -377,7 +376,10 @@ public class FriendDao {
             if (results != null) {
                 String[] first = results.getFirstResult();
                 if (first != null && first.length > 0) {
-                    return Integer.parseInt(first[0]);
+                    if (first[0] != null)
+                        return Integer.parseInt(first[0]);
+                    else
+                        return 0;
                 }
             }
         } catch (SQLException e) {
@@ -530,8 +532,8 @@ public class FriendDao {
 
 
     /**
-     * @param ownerId
-     * @param friendId
+     * @param
+     * @param
      * @return
      */
     public Friend getFriendByKey(String key, String value) {

+ 51 - 6
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/calendar/bizs/decors/DPDecor.java

@@ -14,12 +14,19 @@ import android.graphics.Rect;
 public class DPDecor {
     /**
      * 绘制当前日期区域左上角的装饰物
-     * 
      * Draw decor on Top left of current date area
      *
      * @param canvas 绘制图形的画布 Canvas of image drew
      * @param rect   可以绘制的区域范围 Area you can draw
      * @param paint  画笔对象 Paint
+     * @param data   日期
+     */
+    public void drawDecorTL(Canvas canvas, Rect rect, Paint paint, String data) {
+        drawDecorTL(canvas, rect, paint);
+    }
+
+    /**
+     * @see #drawDecorTL(Canvas, Rect, Paint, String)
      */
     public void drawDecorTL(Canvas canvas, Rect rect, Paint paint) {
 
@@ -27,12 +34,19 @@ public class DPDecor {
 
     /**
      * 绘制当前日期区域顶部的装饰物
-     * 
      * Draw decor on top of current date area
      *
      * @param canvas 绘制图形的画布 Canvas of image drew
      * @param rect   可以绘制的区域范围 Area you can draw
      * @param paint  画笔对象 Paint
+     * @param data   日期
+     */
+    public void drawDecorT(Canvas canvas, Rect rect, Paint paint, String data) {
+        drawDecorT(canvas, rect, paint);
+    }
+
+    /**
+     * @see #drawDecorT(Canvas, Rect, Paint, String)
      */
     public void drawDecorT(Canvas canvas, Rect rect, Paint paint) {
 
@@ -40,12 +54,19 @@ public class DPDecor {
 
     /**
      * 绘制当前日期区域右上角的装饰物
-     * 
      * Draw decor on Top right of current date area
      *
      * @param canvas 绘制图形的画布 Canvas of image drew
      * @param rect   可以绘制的区域范围 Area you can draw
      * @param paint  画笔对象 Paint
+     * @param data   日期
+     */
+    public void drawDecorTR(Canvas canvas, Rect rect, Paint paint, String data) {
+        drawDecorTR(canvas, rect, paint);
+    }
+
+    /**
+     * @see #drawDecorTR(Canvas, Rect, Paint, String)
      */
     public void drawDecorTR(Canvas canvas, Rect rect, Paint paint) {
 
@@ -53,12 +74,19 @@ public class DPDecor {
 
     /**
      * 绘制当前日期区域左边的装饰物
-     * 
      * Draw decor on left of current date area
      *
      * @param canvas 绘制图形的画布 Canvas of image drew
      * @param rect   可以绘制的区域范围 Area you can draw
      * @param paint  画笔对象 Paint
+     * @param data   日期
+     */
+    public void drawDecorL(Canvas canvas, Rect rect, Paint paint, String data) {
+        drawDecorL(canvas, rect, paint);
+    }
+
+    /**
+     * @see #drawDecorL(Canvas, Rect, Paint, String)
      */
     public void drawDecorL(Canvas canvas, Rect rect, Paint paint) {
 
@@ -66,12 +94,19 @@ public class DPDecor {
 
     /**
      * 绘制当前日期区域右边的装饰物
-     * 
      * Draw decor on right of current date area
      *
      * @param canvas 绘制图形的画布 Canvas of image drew
      * @param rect   可以绘制的区域范围 Area you can draw
      * @param paint  画笔对象 Paint
+     * @param data   日期
+     */
+    public void drawDecorR(Canvas canvas, Rect rect, Paint paint, String data) {
+        drawDecorR(canvas, rect, paint);
+    }
+
+    /**
+     * @see #drawDecorR(Canvas, Rect, Paint, String)
      */
     public void drawDecorR(Canvas canvas, Rect rect, Paint paint) {
 
@@ -79,14 +114,24 @@ public class DPDecor {
 
     /**
      * 绘制当前日期区域背景的装饰物
-     * 
      * Draw decor of background of current date area
      *
      * @param canvas 绘制图形的画布 Canvas of image drew
      * @param rect   可以绘制的区域范围 Area you can draw
      * @param paint  画笔对象 Paint
+     * @param data   日期
+     */
+    public void drawDecorBG(Canvas canvas, Rect rect, Paint paint, String data) {
+        drawDecorBG(canvas, rect, paint);
+    }
+
+    /**
+     * @see #drawDecorBG(Canvas, Rect, Paint, String)
      */
     public void drawDecorBG(Canvas canvas, Rect rect, Paint paint) {
 
     }
+
+
+
 }

+ 3 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/calendar/cons/DPMode.java

@@ -2,7 +2,7 @@ package com.xzjmyk.pm.activity.ui.calendar.cons;
 
 /**
  * 日期选择模式
- * 支持单选和多选
+ * 支持单选和多选,不可选
  *
  * Date select mode
  * Support SINGLE or MULTIPLE
@@ -10,5 +10,6 @@ package com.xzjmyk.pm.activity.ui.calendar.cons;
  * @author AigeStudio 2015-07-02
  */
 public enum DPMode {
-    SINGLE, MULTIPLE
+    SINGLE, MULTIPLE,NONE
+
 }

+ 21 - 42
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/calendar/views/DatePicker.java

@@ -10,10 +10,10 @@ import android.widget.RelativeLayout;
 import android.widget.TextView;
 
 import com.xzjmyk.pm.activity.ui.calendar.bizs.decors.DPDecor;
+import com.xzjmyk.pm.activity.ui.calendar.bizs.languages.DPLManager;
 import com.xzjmyk.pm.activity.ui.calendar.bizs.themes.DPTManager;
 import com.xzjmyk.pm.activity.ui.calendar.cons.DPMode;
 import com.xzjmyk.pm.activity.ui.calendar.utils.MeasureUtil;
-import com.xzjmyk.pm.activity.ui.calendar.bizs.languages.DPLManager;
 
 import java.util.List;
 
@@ -27,21 +27,18 @@ import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;
 public class DatePicker extends LinearLayout {
     private DPTManager mTManager;// 主题管理器
     private DPLManager mLManager;// 语言管理器
-    private boolean isMonth = false, isTime = false;
+
     private MonthView monthView;// 月视图
     private TextView tvYear, tvMonth;// 年份 月份显示
     private TextView tvEnsure;// 确定按钮显示
 
 
     private OnDateSelectedListener onDateSelectedListener;// 日期多选后监听
-    private TimeView timeView;
-    private String time;
 
     /**
      * 日期单选监听器
      */
     public interface OnDatePickedListener {
-        //        if(timeView!=null)
         void onDatePicked(String date);
     }
 
@@ -100,6 +97,7 @@ public class DatePicker extends LinearLayout {
         tvYear.setText("2015");
         tvYear.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16);
         tvYear.setTextColor(mTManager.colorTitle());
+
         // 月份显示
         tvMonth = new TextView(context);
         tvMonth.setText("六月");
@@ -138,7 +136,7 @@ public class DatePicker extends LinearLayout {
         addView(llWeek, llParams);
 
         // ------------------------------------------------------------------------------------月视图
-        monthView = new MonthView(context,this);
+        monthView = new MonthView(context);
         monthView.setOnDateChangeListener(new MonthView.OnDateChangeListener() {
             @Override
             public void onMonthChange(int month) {
@@ -155,23 +153,6 @@ public class DatePicker extends LinearLayout {
             }
         });
         addView(monthView, llParams);
-
-        TextView tv = new TextView(context);
-        tv.setHeight(100);
-
-        timeView = new TimeView(context, this);
-        addView(timeView, llParams);
-    }
-
-    /**
-     * 设置时间
-     */
-    public void setTimes(String time) {
-        isTime = true;
-        this.time = time;
-//        if (isMonth) {
-//                monthView.setOnDatePickedListener();
-//        }
     }
 
     /**
@@ -200,12 +181,28 @@ public class DatePicker extends LinearLayout {
      * @param mode ...
      */
     public void setMode(DPMode mode) {
-        if (mode == DPMode.SINGLE) {
+        if (mode != DPMode.MULTIPLE) {
             tvEnsure.setVisibility(GONE);
         }
         monthView.setDPMode(mode);
     }
 
+    public void setFestivalDisplay(boolean isFestivalDisplay) {
+        monthView.setFestivalDisplay(isFestivalDisplay);
+    }
+
+    public void setTodayDisplay(boolean isTodayDisplay) {
+        monthView.setTodayDisplay(isTodayDisplay);
+    }
+
+    public void setHolidayDisplay(boolean isHolidayDisplay) {
+        monthView.setHolidayDisplay(isHolidayDisplay);
+    }
+
+    public void setDeferredDisplay(boolean isDeferredDisplay) {
+        monthView.setDeferredDisplay(isDeferredDisplay);
+    }
+
     /**
      * 设置单选监听器
      *
@@ -216,25 +213,7 @@ public class DatePicker extends LinearLayout {
             throw new RuntimeException(
                     "Current DPMode does not SINGLE! Please call setMode set DPMode to SINGLE!");
         }
-
         monthView.setOnDatePickedListener(onDatePickedListener);
-
-    }
-
-    public void setOnTimeListener(OnDatePickedListener onDatePickedListener) {
-        if (monthView.getDPMode() != DPMode.SINGLE) {
-            throw new RuntimeException(
-                    "Current DPMode does not SINGLE! Please call setMode set DPMode to SINGLE!");
-        }
-        timeView.setOnDatePickedListener(onDatePickedListener);
-    }
-
-    public void setTime(boolean is,String tim) {
-        monthView.setTime(is,tim);
-    }
-
-    public void setMonth(boolean is,String date) {
-        timeView.setMonth(is,date);
     }
 
     /**

+ 62 - 38
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/calendar/views/MonthView.java

@@ -22,9 +22,9 @@ import android.view.animation.AccelerateInterpolator;
 import android.view.animation.DecelerateInterpolator;
 import android.widget.Scroller;
 
-import com.xzjmyk.pm.activity.ui.calendar.bizs.themes.DPTManager;
 import com.xzjmyk.pm.activity.ui.calendar.bizs.calendars.DPCManager;
 import com.xzjmyk.pm.activity.ui.calendar.bizs.decors.DPDecor;
+import com.xzjmyk.pm.activity.ui.calendar.bizs.themes.DPTManager;
 import com.xzjmyk.pm.activity.ui.calendar.cons.DPMode;
 import com.xzjmyk.pm.activity.ui.calendar.entities.DPInfo;
 
@@ -34,16 +34,18 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+
+
 /**
  * MonthView
  *
- * @author gongpengming 2015-06-29
+ * @author AigeStudio 2015-06-29
  */
 public class MonthView extends View {
     private final Region[][] MONTH_REGIONS_4 = new Region[4][7];
     private final Region[][] MONTH_REGIONS_5 = new Region[5][7];
     private final Region[][] MONTH_REGIONS_6 = new Region[6][7];
-    private boolean isTime = false;
+
     private final DPInfo[][] INFO_4 = new DPInfo[4][7];
     private final DPInfo[][] INFO_5 = new DPInfo[5][7];
     private final DPInfo[][] INFO_6 = new DPInfo[6][7];
@@ -83,18 +85,19 @@ public class MonthView extends View {
     private float sizeTextGregorian, sizeTextFestival;
     private float offsetYFestival1, offsetYFestival2;
 
-    private boolean isNewEvent;
+    private boolean isNewEvent,
+            isFestivalDisplay = true,
+            isHolidayDisplay = true,
+            isTodayDisplay = true,
+            isDeferredDisplay = true;
 
     private Map<String, BGCircle> cirApr = new HashMap<>();
     private Map<String, BGCircle> cirDpr = new HashMap<>();
 
     private List<String> dateSelected = new ArrayList<>();
-    private DatePicker datePicker;
-    private String tim;
 
-    public MonthView(Context context, DatePicker datePicker) {
+    public MonthView(Context context) {
         super(context);
-        this.datePicker = datePicker;
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
             scaleAnimationListener = new ScaleAnimationListener();
         }
@@ -102,15 +105,6 @@ public class MonthView extends View {
         mPaint.setTextAlign(Paint.Align.CENTER);
     }
 
-    public boolean isTime() {
-        return isTime;
-    }
-
-    public void setTime(boolean time, String tim) {
-        isTime = time;
-        this.tim = tim;
-    }
-
     @Override
     protected Parcelable onSaveInstanceState() {
         return super.onSaveInstanceState();
@@ -309,7 +303,8 @@ public class MonthView extends View {
 
     private void drawBGCircle(Canvas canvas, BGCircle circle) {
         canvas.save();
-        canvas.translate(circle.getX() - circle.getRadius() / 2, circle.getY() - circle.getRadius() / 2);
+        canvas.translate(circle.getX() - circle.getRadius() / 2,
+                circle.getY() - circle.getRadius() / 2);
         circle.getShape().getShape().resize(circle.getRadius(), circle.getRadius());
         circle.getShape().draw(canvas);
         canvas.restore();
@@ -345,19 +340,20 @@ public class MonthView extends View {
     private void draw(Canvas canvas, Rect rect, DPInfo info) {
         drawBG(canvas, rect, info);
         drawGregorian(canvas, rect, info.strG, info.isWeekend);
-        drawFestival(canvas, rect, info.strF, info.isFestival);
+        if (isFestivalDisplay) drawFestival(canvas, rect, info.strF, info.isFestival);
         drawDecor(canvas, rect, info);
     }
 
     private void drawBG(Canvas canvas, Rect rect, DPInfo info) {
         if (null != mDPDecor && info.isDecorBG) {
-            mDPDecor.drawDecorBG(canvas, rect, mPaint);
+            mDPDecor.drawDecorBG(canvas, rect, mPaint,
+                    centerYear + "-" + centerMonth + "-" + info.strG);
         }
-        if (info.isToday) {
+        if (info.isToday && isTodayDisplay) {
             drawBGToday(canvas, rect);
         } else {
-            drawBGHoliday(canvas, rect, info.isHoliday);
-            drawBGDeferred(canvas, rect, info.isDeferred);
+            if (isHolidayDisplay) drawBGHoliday(canvas, rect, info.isHoliday);
+            if (isDeferredDisplay) drawBGDeferred(canvas, rect, info.isDeferred);
         }
     }
 
@@ -384,7 +380,10 @@ public class MonthView extends View {
         } else {
             mPaint.setColor(mTManager.colorG());
         }
-        canvas.drawText(str, rect.centerX(), rect.centerY(), mPaint);
+        float y = rect.centerY();
+        if (!isFestivalDisplay)
+            y = rect.centerY() + Math.abs(mPaint.ascent()) - (mPaint.descent() - mPaint.ascent()) / 2F;
+        canvas.drawText(str, rect.centerX(), y, mPaint);
     }
 
     private void drawFestival(Canvas canvas, Rect rect, String str, boolean isFestival) {
@@ -436,38 +435,39 @@ public class MonthView extends View {
 
     private void drawDecor(Canvas canvas, Rect rect, DPInfo info) {
         if (!TextUtils.isEmpty(info.strG)) {
+            String data = centerYear + "-" + centerMonth + "-" + info.strG;
             if (null != mDPDecor && info.isDecorTL) {
                 canvas.save();
                 canvas.clipRect(rect.left, rect.top, rect.left + sizeDecor, rect.top + sizeDecor);
-                mDPDecor.drawDecorTL(canvas, canvas.getClipBounds(), mPaint);
+                mDPDecor.drawDecorTL(canvas, canvas.getClipBounds(), mPaint, data);
                 canvas.restore();
             }
             if (null != mDPDecor && info.isDecorT) {
                 canvas.save();
                 canvas.clipRect(rect.left + sizeDecor, rect.top, rect.left + sizeDecor2x,
                         rect.top + sizeDecor);
-                mDPDecor.drawDecorT(canvas, canvas.getClipBounds(), mPaint);
+                mDPDecor.drawDecorT(canvas, canvas.getClipBounds(), mPaint, data);
                 canvas.restore();
             }
             if (null != mDPDecor && info.isDecorTR) {
                 canvas.save();
                 canvas.clipRect(rect.left + sizeDecor2x, rect.top, rect.left + sizeDecor3x,
                         rect.top + sizeDecor);
-                mDPDecor.drawDecorTR(canvas, canvas.getClipBounds(), mPaint);
+                mDPDecor.drawDecorTR(canvas, canvas.getClipBounds(), mPaint, data);
                 canvas.restore();
             }
             if (null != mDPDecor && info.isDecorL) {
                 canvas.save();
                 canvas.clipRect(rect.left, rect.top + sizeDecor, rect.left + sizeDecor,
                         rect.top + sizeDecor2x);
-                mDPDecor.drawDecorL(canvas, canvas.getClipBounds(), mPaint);
+                mDPDecor.drawDecorL(canvas, canvas.getClipBounds(), mPaint, data);
                 canvas.restore();
             }
             if (null != mDPDecor && info.isDecorR) {
                 canvas.save();
                 canvas.clipRect(rect.left + sizeDecor2x, rect.top + sizeDecor,
                         rect.left + sizeDecor3x, rect.top + sizeDecor2x);
-                mDPDecor.drawDecorR(canvas, canvas.getClipBounds(), mPaint);
+                mDPDecor.drawDecorR(canvas, canvas.getClipBounds(), mPaint, data);
                 canvas.restore();
             }
         }
@@ -508,6 +508,22 @@ public class MonthView extends View {
         invalidate();
     }
 
+    void setFestivalDisplay(boolean isFestivalDisplay) {
+        this.isFestivalDisplay = isFestivalDisplay;
+    }
+
+    void setTodayDisplay(boolean isTodayDisplay) {
+        this.isTodayDisplay = isTodayDisplay;
+    }
+
+    void setHolidayDisplay(boolean isHolidayDisplay) {
+        this.isHolidayDisplay = isHolidayDisplay;
+    }
+
+    void setDeferredDisplay(boolean isDeferredDisplay) {
+        this.isDeferredDisplay = isDeferredDisplay;
+    }
+
     private void smoothScrollTo(int fx, int fy) {
         int dx = fx - mScroller.getFinalX();
         int dy = fy - mScroller.getFinalY();
@@ -574,8 +590,8 @@ public class MonthView extends View {
                     if (mDPMode == DPMode.SINGLE) {
                         cirApr.clear();
                         regions.add(region);
-                        int is = Integer.parseInt(mCManager.obtainDPInfo(centerYear, centerMonth)[i][j].strG.trim());
-                        final String date = centerYear + "-" + (centerMonth < 10 ? "0" + centerMonth : centerMonth) + "-" + (is < 10 ? ("0" + is) : is);
+                        final String date = centerYear + "-" + centerMonth + "-" +
+                                mCManager.obtainDPInfo(centerYear, centerMonth)[i][j].strG;
                         BGCircle circle = createCircle(
                                 region.getBounds().centerX() + indexMonth * width,
                                 region.getBounds().centerY() + indexYear * height);
@@ -610,10 +626,7 @@ public class MonthView extends View {
                                 @Override
                                 public void onAnimationEnd(Animator animation) {
                                     if (null != onDatePickedListener) {
-
-                                        datePicker.setMonth(true, date);
-                                        if (isTime)
-                                            onDatePickedListener.onDatePicked(date + "  " + tim);
+                                        onDatePickedListener.onDatePicked(date);
                                     }
                                 }
                             });
@@ -623,9 +636,7 @@ public class MonthView extends View {
                         if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
                             invalidate();
                             if (null != onDatePickedListener) {
-                                datePicker.setMonth(true, date);
-                                if (isTime)
-                                    onDatePickedListener.onDatePicked(date + "  " + tim);
+                                onDatePickedListener.onDatePicked(date);
                             }
                         }
                     } else if (mDPMode == DPMode.MULTIPLE) {
@@ -696,6 +707,19 @@ public class MonthView extends View {
                                 invalidate();
                             }
                         }
+                    } else if (mDPMode == DPMode.NONE) {
+                        if (regions.contains(region)) {
+                            regions.remove(region);
+                        } else {
+                            regions.add(region);
+                        }
+                        final String date = centerYear + "-" + centerMonth + "-" +
+                                mCManager.obtainDPInfo(centerYear, centerMonth)[i][j].strG;
+                        if (dateSelected.contains(date)) {
+                            dateSelected.remove(date);
+                        } else {
+                            dateSelected.add(date);
+                        }
                     }
                 }
             }

+ 252 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/calendar/views/TaskDatePicker.java

@@ -0,0 +1,252 @@
+package com.xzjmyk.pm.activity.ui.calendar.views;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.util.TypedValue;
+import android.view.Gravity;
+import android.view.View;
+import android.widget.LinearLayout;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+
+import com.xzjmyk.pm.activity.ui.calendar.bizs.decors.DPDecor;
+import com.xzjmyk.pm.activity.ui.calendar.bizs.themes.DPTManager;
+import com.xzjmyk.pm.activity.ui.calendar.cons.DPMode;
+import com.xzjmyk.pm.activity.ui.calendar.utils.MeasureUtil;
+import com.xzjmyk.pm.activity.ui.calendar.bizs.languages.DPLManager;
+
+import java.util.List;
+
+import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;
+
+/**
+ * DatePicker
+ *
+ * @author AigeStudio 2015-06-29
+ */
+public class TaskDatePicker extends LinearLayout {
+    private DPTManager mTManager;// 主题管理器
+    private DPLManager mLManager;// 语言管理器
+    private boolean isMonth = false, isTime = false;
+    private TaskMonthView taskMonthView;// 月视图
+    private TextView tvYear, tvMonth;// 年份 月份显示
+    private TextView tvEnsure;// 确定按钮显示
+
+
+    private OnDateSelectedListener onDateSelectedListener;// 日期多选后监听
+    private TimeView timeView;
+    private String time;
+
+    /**
+     * 日期单选监听器
+     */
+    public interface OnDatePickedListener {
+        //        if(timeView!=null)
+        void onDatePicked(String date);
+    }
+
+    /**
+     * 日期多选监听器
+     */
+    public interface OnDateSelectedListener {
+        void onDateSelected(List<String> date);
+    }
+
+    public TaskDatePicker(Context context) {
+        this(context, null);
+    }
+
+    public TaskDatePicker(Context context, AttributeSet attrs) {
+        super(context, attrs);
+        mTManager = DPTManager.getInstance();
+        mLManager = DPLManager.getInstance();
+
+        // 设置排列方向为竖向
+        setOrientation(VERTICAL);
+
+        LayoutParams llParams =
+                new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
+
+        // 标题栏根布局
+        RelativeLayout rlTitle = new RelativeLayout(context);
+        rlTitle.setBackgroundColor(mTManager.colorTitleBG());
+        int rlTitlePadding = MeasureUtil.dp2px(context, 10);
+        rlTitle.setPadding(rlTitlePadding, rlTitlePadding, rlTitlePadding, rlTitlePadding);
+
+        // 周视图根布局
+        LinearLayout llWeek = new LinearLayout(context);
+        llWeek.setBackgroundColor(mTManager.colorTitleBG());
+        llWeek.setOrientation(HORIZONTAL);
+        int llWeekPadding = MeasureUtil.dp2px(context, 5);
+        llWeek.setPadding(0, llWeekPadding, 0, llWeekPadding);
+        LayoutParams lpWeek = new LayoutParams(WRAP_CONTENT, WRAP_CONTENT);
+        lpWeek.weight = 1;
+
+        // 标题栏子元素布局参数
+        RelativeLayout.LayoutParams lpYear =
+                new RelativeLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT);
+        lpYear.addRule(RelativeLayout.CENTER_VERTICAL);
+        RelativeLayout.LayoutParams lpMonth =
+                new RelativeLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT);
+        lpMonth.addRule(RelativeLayout.CENTER_IN_PARENT);
+        RelativeLayout.LayoutParams lpEnsure =
+                new RelativeLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT);
+        lpEnsure.addRule(RelativeLayout.CENTER_VERTICAL);
+        lpEnsure.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
+
+        // --------------------------------------------------------------------------------标题栏
+        // 年份显示
+        tvYear = new TextView(context);
+        tvYear.setText("2015");
+        tvYear.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16);
+        tvYear.setTextColor(mTManager.colorTitle());
+        // 月份显示
+        tvMonth = new TextView(context);
+        tvMonth.setText("六月");
+        tvMonth.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 20);
+        tvMonth.setTextColor(mTManager.colorTitle());
+
+        // 确定显示
+        tvEnsure = new TextView(context);
+        tvEnsure.setText(mLManager.titleEnsure());
+        tvEnsure.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16);
+        tvEnsure.setTextColor(mTManager.colorTitle());
+        tvEnsure.setOnClickListener(new OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                if (null != onDateSelectedListener) {
+                    onDateSelectedListener.onDateSelected(taskMonthView.getDateSelected());
+                }
+            }
+        });
+
+        rlTitle.addView(tvYear, lpYear);
+        rlTitle.addView(tvMonth, lpMonth);
+        rlTitle.addView(tvEnsure, lpEnsure);
+
+        addView(rlTitle, llParams);
+
+        // --------------------------------------------------------------------------------周视图
+        for (int i = 0; i < mLManager.titleWeek().length; i++) {
+            TextView tvWeek = new TextView(context);
+            tvWeek.setText(mLManager.titleWeek()[i]);
+            tvWeek.setGravity(Gravity.CENTER);
+            tvWeek.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14);
+            tvWeek.setTextColor(mTManager.colorTitle());
+            llWeek.addView(tvWeek, lpWeek);
+        }
+        addView(llWeek, llParams);
+
+        // ------------------------------------------------------------------------------------月视图
+        taskMonthView = new TaskMonthView(context,this);
+        taskMonthView.setOnDateChangeListener(new TaskMonthView.OnDateChangeListener() {
+            @Override
+            public void onMonthChange(int month) {
+                tvMonth.setText(mLManager.titleMonth()[month - 1]);
+            }
+
+            @Override
+            public void onYearChange(int year) {
+                String tmp = String.valueOf(year);
+                if (tmp.startsWith("-")) {
+                    tmp = tmp.replace("-", mLManager.titleBC());
+                }
+                tvYear.setText(tmp);
+            }
+        });
+        addView(taskMonthView, llParams);
+
+        TextView tv = new TextView(context);
+        tv.setHeight(100);
+
+        timeView = new TimeView(context, this);
+        addView(timeView, llParams);
+    }
+
+    /**
+     * 设置时间
+     */
+    public void setTimes(String time) {
+        isTime = true;
+        this.time = time;
+//        if (isMonth) {
+//                monthView.setOnDatePickedListener();
+//        }
+    }
+
+    /**
+     * 设置初始化年月日期
+     *
+     * @param year  ...
+     * @param month ...
+     */
+    public void setDate(int year, int month) {
+        if (month < 1) {
+            month = 1;
+        }
+        if (month > 12) {
+            month = 12;
+        }
+        taskMonthView.setDate(year, month);
+    }
+
+    public void setDPDecor(DPDecor decor) {
+        taskMonthView.setDPDecor(decor);
+    }
+
+    /**
+     * 设置日期选择模式
+     *
+     * @param mode ...
+     */
+    public void setMode(DPMode mode) {
+        if (mode == DPMode.SINGLE) {
+            tvEnsure.setVisibility(GONE);
+        }
+        taskMonthView.setDPMode(mode);
+    }
+
+    /**
+     * 设置单选监听器
+     *
+     * @param onDatePickedListener ...
+     */
+    public void setOnDatePickedListener(OnDatePickedListener onDatePickedListener) {
+        if (taskMonthView.getDPMode() != DPMode.SINGLE) {
+            throw new RuntimeException(
+                    "Current DPMode does not SINGLE! Please call setMode set DPMode to SINGLE!");
+        }
+
+        taskMonthView.setOnDatePickedListener(onDatePickedListener);
+
+    }
+
+    public void setOnTimeListener(OnDatePickedListener onDatePickedListener) {
+        if (taskMonthView.getDPMode() != DPMode.SINGLE) {
+            throw new RuntimeException(
+                    "Current DPMode does not SINGLE! Please call setMode set DPMode to SINGLE!");
+        }
+        timeView.setOnDatePickedListener(onDatePickedListener);
+    }
+
+    public void setTime(boolean is,String tim) {
+        taskMonthView.setTime(is,tim);
+    }
+
+    public void setMonth(boolean is,String date) {
+        timeView.setMonth(is,date);
+    }
+
+    /**
+     * 设置多选监听器
+     *
+     * @param onDateSelectedListener ...
+     */
+    public void setOnDateSelectedListener(OnDateSelectedListener onDateSelectedListener) {
+        if (taskMonthView.getDPMode() != DPMode.MULTIPLE) {
+            throw new RuntimeException(
+                    "Current DPMode does not MULTIPLE! Please call setMode set DPMode to MULTIPLE!");
+        }
+        this.onDateSelectedListener = onDateSelectedListener;
+    }
+}

+ 791 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/calendar/views/TaskMonthView.java

@@ -0,0 +1,791 @@
+package com.xzjmyk.pm.activity.ui.calendar.views;
+
+import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
+import android.animation.AnimatorSet;
+import android.animation.ObjectAnimator;
+import android.animation.ValueAnimator;
+import android.annotation.TargetApi;
+import android.content.Context;
+import android.graphics.Canvas;
+import android.graphics.Paint;
+import android.graphics.Rect;
+import android.graphics.Region;
+import android.graphics.drawable.ShapeDrawable;
+import android.graphics.drawable.shapes.OvalShape;
+import android.os.Build;
+import android.os.Parcelable;
+import android.text.TextUtils;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.animation.AccelerateInterpolator;
+import android.view.animation.DecelerateInterpolator;
+import android.widget.Scroller;
+
+import com.xzjmyk.pm.activity.ui.calendar.bizs.themes.DPTManager;
+import com.xzjmyk.pm.activity.ui.calendar.bizs.calendars.DPCManager;
+import com.xzjmyk.pm.activity.ui.calendar.bizs.decors.DPDecor;
+import com.xzjmyk.pm.activity.ui.calendar.cons.DPMode;
+import com.xzjmyk.pm.activity.ui.calendar.entities.DPInfo;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * MonthView
+ *
+ * @author gongpengming 2015-06-29
+ */
+public class TaskMonthView extends View {
+    private final Region[][] MONTH_REGIONS_4 = new Region[4][7];
+    private final Region[][] MONTH_REGIONS_5 = new Region[5][7];
+    private final Region[][] MONTH_REGIONS_6 = new Region[6][7];
+    private boolean isTime = false;
+    private final DPInfo[][] INFO_4 = new DPInfo[4][7];
+    private final DPInfo[][] INFO_5 = new DPInfo[5][7];
+    private final DPInfo[][] INFO_6 = new DPInfo[6][7];
+
+    private final Map<String, List<Region>> REGION_SELECTED = new HashMap<>();
+
+    private DPCManager mCManager = DPCManager.getInstance();
+    private DPTManager mTManager = DPTManager.getInstance();
+
+    protected Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.DITHER_FLAG |
+            Paint.LINEAR_TEXT_FLAG);
+    private Scroller mScroller;
+    private DecelerateInterpolator decelerateInterpolator = new DecelerateInterpolator();
+    private AccelerateInterpolator accelerateInterpolator = new AccelerateInterpolator();
+    private OnDateChangeListener onDateChangeListener;
+    private TaskDatePicker.OnDatePickedListener onDatePickedListener;
+    private ScaleAnimationListener scaleAnimationListener;
+
+    private DPMode mDPMode = DPMode.MULTIPLE;
+    private SlideMode mSlideMode;
+    private DPDecor mDPDecor;
+
+    private int circleRadius;
+    private int indexYear, indexMonth;
+    private int centerYear, centerMonth;
+    private int leftYear, leftMonth;
+    private int rightYear, rightMonth;
+    private int topYear, topMonth;
+    private int bottomYear, bottomMonth;
+    private int width, height;
+    private int sizeDecor, sizeDecor2x, sizeDecor3x;
+    private int lastPointX, lastPointY;
+    private int lastMoveX, lastMoveY;
+    private int criticalWidth, criticalHeight;
+    private int animZoomOut1, animZoomIn1, animZoomOut2;
+
+    private float sizeTextGregorian, sizeTextFestival;
+    private float offsetYFestival1, offsetYFestival2;
+
+    private boolean isNewEvent;
+
+    private Map<String, BGCircle> cirApr = new HashMap<>();
+    private Map<String, BGCircle> cirDpr = new HashMap<>();
+
+    private List<String> dateSelected = new ArrayList<>();
+    private TaskDatePicker taskDatePicker;
+    private String tim;
+
+    public TaskMonthView(Context context, TaskDatePicker taskDatePicker) {
+        super(context);
+        this.taskDatePicker = taskDatePicker;
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
+            scaleAnimationListener = new ScaleAnimationListener();
+        }
+        mScroller = new Scroller(context);
+        mPaint.setTextAlign(Paint.Align.CENTER);
+    }
+
+    public boolean isTime() {
+        return isTime;
+    }
+
+    public void setTime(boolean time, String tim) {
+        isTime = time;
+        this.tim = tim;
+    }
+
+    @Override
+    protected Parcelable onSaveInstanceState() {
+        return super.onSaveInstanceState();
+    }
+
+    @Override
+    protected void onRestoreInstanceState(Parcelable state) {
+        super.onRestoreInstanceState(state);
+    }
+
+    @Override
+    public void computeScroll() {
+        if (mScroller.computeScrollOffset()) {
+            scrollTo(mScroller.getCurrX(), mScroller.getCurrY());
+            invalidate();
+        } else {
+            requestLayout();
+        }
+    }
+
+    @Override
+    public boolean onTouchEvent(MotionEvent event) {
+        switch (event.getAction()) {
+            case MotionEvent.ACTION_DOWN:
+                mScroller.forceFinished(true);
+                mSlideMode = null;
+                isNewEvent = true;
+                lastPointX = (int) event.getX();
+                lastPointY = (int) event.getY();
+                break;
+            case MotionEvent.ACTION_MOVE:
+                if (isNewEvent) {
+                    if (Math.abs(lastPointX - event.getX()) > 100) {
+                        mSlideMode = SlideMode.HOR;
+                        isNewEvent = false;
+                    } else if (Math.abs(lastPointY - event.getY()) > 50) {
+                        mSlideMode = SlideMode.VER;
+                        isNewEvent = false;
+                    }
+                }
+                if (mSlideMode == SlideMode.HOR) {
+                    int totalMoveX = (int) (lastPointX - event.getX()) + lastMoveX;
+                    smoothScrollTo(totalMoveX, indexYear * height);
+                } else if (mSlideMode == SlideMode.VER) {
+                    int totalMoveY = (int) (lastPointY - event.getY()) + lastMoveY;
+                    smoothScrollTo(width * indexMonth, totalMoveY);
+                }
+                break;
+            case MotionEvent.ACTION_UP:
+                if (mSlideMode == SlideMode.VER) {
+                    if (Math.abs(lastPointY - event.getY()) > 25) {
+                        if (lastPointY < event.getY()) {
+                            if (Math.abs(lastPointY - event.getY()) >= criticalHeight) {
+                                indexYear--;
+                                centerYear = centerYear - 1;
+                            }
+                        } else if (lastPointY > event.getY()) {
+                            if (Math.abs(lastPointY - event.getY()) >= criticalHeight) {
+                                indexYear++;
+                                centerYear = centerYear + 1;
+                            }
+                        }
+                        buildRegion();
+                        computeDate();
+                        smoothScrollTo(width * indexMonth, height * indexYear);
+                        lastMoveY = height * indexYear;
+                    } else {
+                        defineRegion((int) event.getX(), (int) event.getY());
+                    }
+                } else if (mSlideMode == SlideMode.HOR) {
+                    if (Math.abs(lastPointX - event.getX()) > 25) {
+                        if (lastPointX > event.getX() &&
+                                Math.abs(lastPointX - event.getX()) >= criticalWidth) {
+                            indexMonth++;
+                            centerMonth = (centerMonth + 1) % 13;
+                            if (centerMonth == 0) {
+                                centerMonth = 1;
+                                centerYear++;
+                            }
+                        } else if (lastPointX < event.getX() &&
+                                Math.abs(lastPointX - event.getX()) >= criticalWidth) {
+                            indexMonth--;
+                            centerMonth = (centerMonth - 1) % 12;
+                            if (centerMonth == 0) {
+                                centerMonth = 12;
+                                centerYear--;
+                            }
+                        }
+                        buildRegion();
+                        computeDate();
+                        smoothScrollTo(width * indexMonth, indexYear * height);
+                        lastMoveX = width * indexMonth;
+                    } else {
+                        defineRegion((int) event.getX(), (int) event.getY());
+                    }
+                } else {
+                    defineRegion((int) event.getX(), (int) event.getY());
+                }
+                break;
+        }
+        return true;
+    }
+
+    @Override
+    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+        int measureWidth = MeasureSpec.getSize(widthMeasureSpec);
+        setMeasuredDimension(measureWidth, (int) (measureWidth * 6F / 7F));
+    }
+
+    @Override
+    protected void onSizeChanged(int w, int h, int oldW, int oldH) {
+        width = w;
+        height = h;
+
+        criticalWidth = (int) (1F / 5F * width);
+        criticalHeight = (int) (1F / 5F * height);
+
+        int cellW = (int) (w / 7F);
+        int cellH4 = (int) (h / 4F);
+        int cellH5 = (int) (h / 5F);
+        int cellH6 = (int) (h / 6F);
+
+        circleRadius = cellW;
+
+        animZoomOut1 = (int) (cellW * 1.2F);
+        animZoomIn1 = (int) (cellW * 0.8F);
+        animZoomOut2 = (int) (cellW * 1.1F);
+
+        sizeDecor = (int) (cellW / 3F);
+        sizeDecor2x = sizeDecor * 2;
+        sizeDecor3x = sizeDecor * 3;
+
+        sizeTextGregorian = width / 20F;
+        mPaint.setTextSize(sizeTextGregorian);
+
+        float heightGregorian = mPaint.getFontMetrics().bottom - mPaint.getFontMetrics().top;
+        sizeTextFestival = width / 40F;
+        mPaint.setTextSize(sizeTextFestival);
+
+        float heightFestival = mPaint.getFontMetrics().bottom - mPaint.getFontMetrics().top;
+        offsetYFestival1 = (((Math.abs(mPaint.ascent() + mPaint.descent())) / 2F) +
+                heightFestival / 2F + heightGregorian / 2F) / 2F;
+        offsetYFestival2 = offsetYFestival1 * 2F;
+
+        for (int i = 0; i < MONTH_REGIONS_4.length; i++) {
+            for (int j = 0; j < MONTH_REGIONS_4[i].length; j++) {
+                Region region = new Region();
+                region.set((j * cellW), (i * cellH4), cellW + (j * cellW),
+                        cellW + (i * cellH4));
+                MONTH_REGIONS_4[i][j] = region;
+            }
+        }
+        for (int i = 0; i < MONTH_REGIONS_5.length; i++) {
+            for (int j = 0; j < MONTH_REGIONS_5[i].length; j++) {
+                Region region = new Region();
+                region.set((j * cellW), (i * cellH5), cellW + (j * cellW),
+                        cellW + (i * cellH5));
+                MONTH_REGIONS_5[i][j] = region;
+            }
+        }
+        for (int i = 0; i < MONTH_REGIONS_6.length; i++) {
+            for (int j = 0; j < MONTH_REGIONS_6[i].length; j++) {
+                Region region = new Region();
+                region.set((j * cellW), (i * cellH6), cellW + (j * cellW),
+                        cellW + (i * cellH6));
+                MONTH_REGIONS_6[i][j] = region;
+            }
+        }
+    }
+
+    @Override
+    protected void onDraw(Canvas canvas) {
+        canvas.drawColor(mTManager.colorBG());
+
+        draw(canvas, width * indexMonth, (indexYear - 1) * height, topYear, topMonth);
+        draw(canvas, width * (indexMonth - 1), height * indexYear, leftYear, leftMonth);
+        draw(canvas, width * indexMonth, indexYear * height, centerYear, centerMonth);
+        draw(canvas, width * (indexMonth + 1), height * indexYear, rightYear, rightMonth);
+        draw(canvas, width * indexMonth, (indexYear + 1) * height, bottomYear, bottomMonth);
+
+        drawBGCircle(canvas);
+    }
+
+    private void drawBGCircle(Canvas canvas) {
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
+            for (String s : cirDpr.keySet()) {
+                BGCircle circle = cirDpr.get(s);
+                drawBGCircle(canvas, circle);
+            }
+        }
+        for (String s : cirApr.keySet()) {
+            BGCircle circle = cirApr.get(s);
+            drawBGCircle(canvas, circle);
+        }
+    }
+
+    private void drawBGCircle(Canvas canvas, BGCircle circle) {
+        canvas.save();
+        canvas.translate(circle.getX() - circle.getRadius() / 2, circle.getY() - circle.getRadius() / 2);
+        circle.getShape().getShape().resize(circle.getRadius(), circle.getRadius());
+        circle.getShape().draw(canvas);
+        canvas.restore();
+    }
+
+    private void draw(Canvas canvas, int x, int y, int year, int month) {
+        canvas.save();
+        canvas.translate(x, y);
+        DPInfo[][] info = mCManager.obtainDPInfo(year, month);
+        DPInfo[][] result;
+        Region[][] tmp;
+        if (TextUtils.isEmpty(info[4][0].strG)) {
+            tmp = MONTH_REGIONS_4;
+            arrayClear(INFO_4);
+            result = arrayCopy(info, INFO_4);
+        } else if (TextUtils.isEmpty(info[5][0].strG)) {
+            tmp = MONTH_REGIONS_5;
+            arrayClear(INFO_5);
+            result = arrayCopy(info, INFO_5);
+        } else {
+            tmp = MONTH_REGIONS_6;
+            arrayClear(INFO_6);
+            result = arrayCopy(info, INFO_6);
+        }
+        for (int i = 0; i < result.length; i++) {
+            for (int j = 0; j < result[i].length; j++) {
+                draw(canvas, tmp[i][j].getBounds(), info[i][j]);
+            }
+        }
+        canvas.restore();
+    }
+
+    private void draw(Canvas canvas, Rect rect, DPInfo info) {
+        drawBG(canvas, rect, info);
+        drawGregorian(canvas, rect, info.strG, info.isWeekend);
+        drawFestival(canvas, rect, info.strF, info.isFestival);
+        drawDecor(canvas, rect, info);
+    }
+
+    private void drawBG(Canvas canvas, Rect rect, DPInfo info) {
+        if (null != mDPDecor && info.isDecorBG) {
+            mDPDecor.drawDecorBG(canvas, rect, mPaint);
+        }
+        if (info.isToday) {
+            drawBGToday(canvas, rect);
+        } else {
+            drawBGHoliday(canvas, rect, info.isHoliday);
+            drawBGDeferred(canvas, rect, info.isDeferred);
+        }
+    }
+
+    private void drawBGToday(Canvas canvas, Rect rect) {
+        mPaint.setColor(mTManager.colorToday());
+        canvas.drawCircle(rect.centerX(), rect.centerY(), circleRadius / 2F, mPaint);
+    }
+
+    private void drawBGHoliday(Canvas canvas, Rect rect, boolean isHoliday) {
+        mPaint.setColor(mTManager.colorHoliday());
+        if (isHoliday) canvas.drawCircle(rect.centerX(), rect.centerY(), circleRadius / 2F, mPaint);
+    }
+
+    private void drawBGDeferred(Canvas canvas, Rect rect, boolean isDeferred) {
+        mPaint.setColor(mTManager.colorDeferred());
+        if (isDeferred)
+            canvas.drawCircle(rect.centerX(), rect.centerY(), circleRadius / 2F, mPaint);
+    }
+
+    private void drawGregorian(Canvas canvas, Rect rect, String str, boolean isWeekend) {
+        mPaint.setTextSize(sizeTextGregorian);
+        if (isWeekend) {
+            mPaint.setColor(mTManager.colorWeekend());
+        } else {
+            mPaint.setColor(mTManager.colorG());
+        }
+        canvas.drawText(str, rect.centerX(), rect.centerY(), mPaint);
+    }
+
+    private void drawFestival(Canvas canvas, Rect rect, String str, boolean isFestival) {
+        mPaint.setTextSize(sizeTextFestival);
+        if (isFestival) {
+            mPaint.setColor(mTManager.colorF());
+        } else {
+            mPaint.setColor(mTManager.colorL());
+        }
+        if (str.contains("&")) {
+            String[] s = str.split("&");
+            String str1 = s[0];
+            if (mPaint.measureText(str1) > rect.width()) {
+                float ch = mPaint.measureText(str1, 0, 1);
+                int length = (int) (rect.width() / ch);
+                canvas.drawText(str1.substring(0, length), rect.centerX(),
+                        rect.centerY() + offsetYFestival1, mPaint);
+                canvas.drawText(str1.substring(length), rect.centerX(),
+                        rect.centerY() + offsetYFestival2, mPaint);
+            } else {
+                canvas.drawText(str1, rect.centerX(),
+                        rect.centerY() + offsetYFestival1, mPaint);
+                String str2 = s[1];
+                if (mPaint.measureText(str2) < rect.width()) {
+                    canvas.drawText(str2, rect.centerX(),
+                            rect.centerY() + offsetYFestival2, mPaint);
+                }
+            }
+        } else {
+            if (mPaint.measureText(str) > rect.width()) {
+                float ch = 0.0F;
+                for (char c : str.toCharArray()) {
+                    float tmp = mPaint.measureText(String.valueOf(c));
+                    if (tmp > ch) {
+                        ch = tmp;
+                    }
+                }
+                int length = (int) (rect.width() / ch);
+                canvas.drawText(str.substring(0, length), rect.centerX(),
+                        rect.centerY() + offsetYFestival1, mPaint);
+                canvas.drawText(str.substring(length), rect.centerX(),
+                        rect.centerY() + offsetYFestival2, mPaint);
+            } else {
+                canvas.drawText(str, rect.centerX(),
+                        rect.centerY() + offsetYFestival1, mPaint);
+            }
+        }
+    }
+
+    private void drawDecor(Canvas canvas, Rect rect, DPInfo info) {
+        if (!TextUtils.isEmpty(info.strG)) {
+            if (null != mDPDecor && info.isDecorTL) {
+                canvas.save();
+                canvas.clipRect(rect.left, rect.top, rect.left + sizeDecor, rect.top + sizeDecor);
+                mDPDecor.drawDecorTL(canvas, canvas.getClipBounds(), mPaint);
+                canvas.restore();
+            }
+            if (null != mDPDecor && info.isDecorT) {
+                canvas.save();
+                canvas.clipRect(rect.left + sizeDecor, rect.top, rect.left + sizeDecor2x,
+                        rect.top + sizeDecor);
+                mDPDecor.drawDecorT(canvas, canvas.getClipBounds(), mPaint);
+                canvas.restore();
+            }
+            if (null != mDPDecor && info.isDecorTR) {
+                canvas.save();
+                canvas.clipRect(rect.left + sizeDecor2x, rect.top, rect.left + sizeDecor3x,
+                        rect.top + sizeDecor);
+                mDPDecor.drawDecorTR(canvas, canvas.getClipBounds(), mPaint);
+                canvas.restore();
+            }
+            if (null != mDPDecor && info.isDecorL) {
+                canvas.save();
+                canvas.clipRect(rect.left, rect.top + sizeDecor, rect.left + sizeDecor,
+                        rect.top + sizeDecor2x);
+                mDPDecor.drawDecorL(canvas, canvas.getClipBounds(), mPaint);
+                canvas.restore();
+            }
+            if (null != mDPDecor && info.isDecorR) {
+                canvas.save();
+                canvas.clipRect(rect.left + sizeDecor2x, rect.top + sizeDecor,
+                        rect.left + sizeDecor3x, rect.top + sizeDecor2x);
+                mDPDecor.drawDecorR(canvas, canvas.getClipBounds(), mPaint);
+                canvas.restore();
+            }
+        }
+    }
+
+    List<String> getDateSelected() {
+        return dateSelected;
+    }
+
+    void setOnDateChangeListener(OnDateChangeListener onDateChangeListener) {
+        this.onDateChangeListener = onDateChangeListener;
+    }
+
+    public void setOnDatePickedListener(TaskDatePicker.OnDatePickedListener onDatePickedListener) {
+        this.onDatePickedListener = onDatePickedListener;
+    }
+
+    void setDPMode(DPMode mode) {
+        this.mDPMode = mode;
+    }
+
+    void setDPDecor(DPDecor decor) {
+        this.mDPDecor = decor;
+    }
+
+    DPMode getDPMode() {
+        return mDPMode;
+    }
+
+    void setDate(int year, int month) {
+        centerYear = year;
+        centerMonth = month;
+        indexYear = 0;
+        indexMonth = 0;
+        buildRegion();
+        computeDate();
+        requestLayout();
+        invalidate();
+    }
+
+    private void smoothScrollTo(int fx, int fy) {
+        int dx = fx - mScroller.getFinalX();
+        int dy = fy - mScroller.getFinalY();
+        smoothScrollBy(dx, dy);
+    }
+
+    private void smoothScrollBy(int dx, int dy) {
+        mScroller.startScroll(mScroller.getFinalX(), mScroller.getFinalY(), dx, dy, 500);
+        invalidate();
+    }
+
+    private BGCircle createCircle(float x, float y) {
+        OvalShape circle = new OvalShape();
+        circle.resize(0, 0);
+        ShapeDrawable drawable = new ShapeDrawable(circle);
+        BGCircle circle1 = new BGCircle(drawable);
+        circle1.setX(x);
+        circle1.setY(y);
+        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
+            circle1.setRadius(circleRadius);
+        }
+        drawable.getPaint().setColor(mTManager.colorBGCircle());
+        return circle1;
+    }
+
+    private void buildRegion() {
+        String key = indexYear + ":" + indexMonth;
+        if (!REGION_SELECTED.containsKey(key)) {
+            REGION_SELECTED.put(key, new ArrayList<Region>());
+        }
+    }
+
+    private void arrayClear(DPInfo[][] info) {
+        for (DPInfo[] anInfo : info) {
+            Arrays.fill(anInfo, null);
+        }
+    }
+
+    private DPInfo[][] arrayCopy(DPInfo[][] src, DPInfo[][] dst) {
+        for (int i = 0; i < dst.length; i++) {
+            System.arraycopy(src[i], 0, dst[i], 0, dst[i].length);
+        }
+        return dst;
+    }
+
+    private void defineRegion(int x, int y) {
+        DPInfo[][] info = mCManager.obtainDPInfo(centerYear, centerMonth);
+        Region[][] tmp;
+        if (TextUtils.isEmpty(info[4][0].strG)) {
+            tmp = MONTH_REGIONS_4;
+        } else if (TextUtils.isEmpty(info[5][0].strG)) {
+            tmp = MONTH_REGIONS_5;
+        } else {
+            tmp = MONTH_REGIONS_6;
+        }
+        for (int i = 0; i < tmp.length; i++) {
+            for (int j = 0; j < tmp[i].length; j++) {
+                Region region = tmp[i][j];
+                if (TextUtils.isEmpty(mCManager.obtainDPInfo(centerYear, centerMonth)[i][j].strG)) {
+                    continue;
+                }
+                if (region.contains(x, y)) {
+                    List<Region> regions = REGION_SELECTED.get(indexYear + ":" + indexMonth);
+                    if (mDPMode == DPMode.SINGLE) {
+                        cirApr.clear();
+                        regions.add(region);
+                        int is = Integer.parseInt(mCManager.obtainDPInfo(centerYear, centerMonth)[i][j].strG.trim());
+                        final String date = centerYear + "-" + (centerMonth < 10 ? "0" + centerMonth : centerMonth) + "-" + (is < 10 ? ("0" + is) : is);
+                        BGCircle circle = createCircle(
+                                region.getBounds().centerX() + indexMonth * width,
+                                region.getBounds().centerY() + indexYear * height);
+                        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
+                            ValueAnimator animScale1 =
+                                    ObjectAnimator.ofInt(circle, "radius", 0, animZoomOut1);
+                            animScale1.setDuration(250);
+                            animScale1.setInterpolator(decelerateInterpolator);
+                            animScale1.addUpdateListener(scaleAnimationListener);
+
+                            ValueAnimator animScale2 =
+                                    ObjectAnimator.ofInt(circle, "radius", animZoomOut1, animZoomIn1);
+                            animScale2.setDuration(100);
+                            animScale2.setInterpolator(accelerateInterpolator);
+                            animScale2.addUpdateListener(scaleAnimationListener);
+
+                            ValueAnimator animScale3 =
+                                    ObjectAnimator.ofInt(circle, "radius", animZoomIn1, animZoomOut2);
+                            animScale3.setDuration(150);
+                            animScale3.setInterpolator(decelerateInterpolator);
+                            animScale3.addUpdateListener(scaleAnimationListener);
+
+                            ValueAnimator animScale4 =
+                                    ObjectAnimator.ofInt(circle, "radius", animZoomOut2, circleRadius);
+                            animScale4.setDuration(50);
+                            animScale4.setInterpolator(accelerateInterpolator);
+                            animScale4.addUpdateListener(scaleAnimationListener);
+
+                            AnimatorSet animSet = new AnimatorSet();
+                            animSet.playSequentially(animScale1, animScale2, animScale3, animScale4);
+                            animSet.addListener(new AnimatorListenerAdapter() {
+                                @Override
+                                public void onAnimationEnd(Animator animation) {
+                                    if (null != onDatePickedListener) {
+
+                                        taskDatePicker.setMonth(true, date);
+                                        if (isTime)
+                                            onDatePickedListener.onDatePicked(date + "  " + tim);
+                                    }
+                                }
+                            });
+                            animSet.start();
+                        }
+                        cirApr.put(date, circle);
+                        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
+                            invalidate();
+                            if (null != onDatePickedListener) {
+                                taskDatePicker.setMonth(true, date);
+                                if (isTime)
+                                    onDatePickedListener.onDatePicked(date + "  " + tim);
+                            }
+                        }
+                    } else if (mDPMode == DPMode.MULTIPLE) {
+                        if (regions.contains(region)) {
+                            regions.remove(region);
+                        } else {
+                            regions.add(region);
+                        }
+                        final String date = centerYear + "-" + centerMonth + "-" +
+                                mCManager.obtainDPInfo(centerYear, centerMonth)[i][j].strG;
+                        if (dateSelected.contains(date)) {
+                            dateSelected.remove(date);
+                            BGCircle circle = cirApr.get(date);
+                            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
+                                ValueAnimator animScale = ObjectAnimator.ofInt(circle, "radius", circleRadius, 0);
+                                animScale.setDuration(250);
+                                animScale.setInterpolator(accelerateInterpolator);
+                                animScale.addUpdateListener(scaleAnimationListener);
+                                animScale.addListener(new AnimatorListenerAdapter() {
+                                    @Override
+                                    public void onAnimationEnd(Animator animation) {
+                                        cirDpr.remove(date);
+                                    }
+                                });
+                                animScale.start();
+                                cirDpr.put(date, circle);
+                            }
+                            cirApr.remove(date);
+                            if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
+                                invalidate();
+                            }
+                        } else {
+                            dateSelected.add(date);
+                            BGCircle circle = createCircle(
+                                    region.getBounds().centerX() + indexMonth * width,
+                                    region.getBounds().centerY() + indexYear * height);
+                            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
+                                ValueAnimator animScale1 =
+                                        ObjectAnimator.ofInt(circle, "radius", 0, animZoomOut1);
+                                animScale1.setDuration(250);
+                                animScale1.setInterpolator(decelerateInterpolator);
+                                animScale1.addUpdateListener(scaleAnimationListener);
+
+                                ValueAnimator animScale2 =
+                                        ObjectAnimator.ofInt(circle, "radius", animZoomOut1, animZoomIn1);
+                                animScale2.setDuration(100);
+                                animScale2.setInterpolator(accelerateInterpolator);
+                                animScale2.addUpdateListener(scaleAnimationListener);
+
+                                ValueAnimator animScale3 =
+                                        ObjectAnimator.ofInt(circle, "radius", animZoomIn1, animZoomOut2);
+                                animScale3.setDuration(150);
+                                animScale3.setInterpolator(decelerateInterpolator);
+                                animScale3.addUpdateListener(scaleAnimationListener);
+
+                                ValueAnimator animScale4 =
+                                        ObjectAnimator.ofInt(circle, "radius", animZoomOut2, circleRadius);
+                                animScale4.setDuration(50);
+                                animScale4.setInterpolator(accelerateInterpolator);
+                                animScale4.addUpdateListener(scaleAnimationListener);
+
+                                AnimatorSet animSet = new AnimatorSet();
+                                animSet.playSequentially(animScale1, animScale2, animScale3, animScale4);
+                                animSet.start();
+                            }
+                            cirApr.put(date, circle);
+                            if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
+                                invalidate();
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    private void computeDate() {
+        rightYear = leftYear = centerYear;
+        topYear = centerYear - 1;
+        bottomYear = centerYear + 1;
+
+        topMonth = centerMonth;
+        bottomMonth = centerMonth;
+
+        rightMonth = centerMonth + 1;
+        leftMonth = centerMonth - 1;
+
+        if (centerMonth == 12) {
+            rightYear++;
+            rightMonth = 1;
+        }
+        if (centerMonth == 1) {
+            leftYear--;
+            leftMonth = 12;
+        }
+        if (null != onDateChangeListener) {
+            onDateChangeListener.onYearChange(centerYear);
+            onDateChangeListener.onMonthChange(centerMonth);
+        }
+    }
+
+    interface OnDateChangeListener {
+        void onMonthChange(int month);
+
+        void onYearChange(int year);
+    }
+
+    private enum SlideMode {
+        VER,
+        HOR
+    }
+
+    private class BGCircle {
+        private float x, y;
+        private int radius;
+
+        private ShapeDrawable shape;
+
+        public BGCircle(ShapeDrawable shape) {
+            this.shape = shape;
+        }
+
+        public float getX() {
+            return x;
+        }
+
+        public void setX(float x) {
+            this.x = x;
+        }
+
+        public float getY() {
+            return y;
+        }
+
+        public void setY(float y) {
+            this.y = y;
+        }
+
+        public int getRadius() {
+            return radius;
+        }
+
+        public void setRadius(int radius) {
+            this.radius = radius;
+        }
+
+        public ShapeDrawable getShape() {
+            return shape;
+        }
+
+        public void setShape(ShapeDrawable shape) {
+            this.shape = shape;
+        }
+    }
+
+    @TargetApi(Build.VERSION_CODES.HONEYCOMB)
+    private class ScaleAnimationListener implements ValueAnimator.AnimatorUpdateListener {
+        @Override
+        public void onAnimationUpdate(ValueAnimator animation) {
+            TaskMonthView.this.invalidate();
+        }
+    }
+}

+ 6 - 6
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/calendar/views/TimeView.java

@@ -24,12 +24,12 @@ public class TimeView extends LinearLayout implements View.OnClickListener {
     private Context mContext;
     private GridView gv;
     private TextView tvTime;
-    private DatePicker datePicker;
-    private DatePicker.OnDatePickedListener onDatePickedListener;
+    private TaskDatePicker taskDatePicker;
+    private TaskDatePicker.OnDatePickedListener onDatePickedListener;
 
-    public TimeView(Context context, DatePicker datePicker) {
+    public TimeView(Context context, TaskDatePicker taskDatePicker) {
         super(context);
-        this.datePicker = datePicker;
+        this.taskDatePicker = taskDatePicker;
         init(context);
     }
 
@@ -42,7 +42,7 @@ public class TimeView extends LinearLayout implements View.OnClickListener {
         this.month=date;
     }
 
-    public void setOnDatePickedListener(DatePicker.OnDatePickedListener onDatePickedListener) {
+    public void setOnDatePickedListener(TaskDatePicker.OnDatePickedListener onDatePickedListener) {
         this.onDatePickedListener = onDatePickedListener;
     }
 
@@ -62,7 +62,7 @@ public class TimeView extends LinearLayout implements View.OnClickListener {
                     strTime=time+"";
                 }
                 tvTime.setText(strTime);
-                datePicker.setTime(true,strTime);
+                taskDatePicker.setTime(true,strTime);
 //                setTime(time);
                 if (isMonth){
                     onDatePickedListener.onDatePicked(month+" " + strTime);

+ 8 - 8
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/AddTaskActivity.java

@@ -42,17 +42,17 @@ import com.lidroid.xutils.http.ResponseInfo;
 import com.lidroid.xutils.http.callback.RequestCallBack;
 import com.lidroid.xutils.http.client.HttpRequest.HttpMethod;
 import com.lidroid.xutils.view.annotation.ViewInject;
-import com.xzjmyk.pm.activity.ui.calendar.cons.DPMode;
-import com.xzjmyk.pm.activity.ui.erp.util.RecordUtil;
-import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
-import com.xzjmyk.pm.activity.ui.erp.view.SwitchView;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.ui.base.BaseActivity;
-import com.xzjmyk.pm.activity.ui.calendar.views.DatePicker;
+import com.xzjmyk.pm.activity.ui.calendar.cons.DPMode;
+import com.xzjmyk.pm.activity.ui.calendar.views.TaskDatePicker;
 import com.xzjmyk.pm.activity.ui.erp.net.ViewUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.Constants;
+import com.xzjmyk.pm.activity.ui.erp.util.RecordUtil;
+import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
 import com.xzjmyk.pm.activity.ui.erp.view.DateTimePickerDialog;
+import com.xzjmyk.pm.activity.ui.erp.view.SwitchView;
 import com.xzjmyk.pm.activity.view.TagGroup;
 
 import java.io.File;
@@ -268,11 +268,11 @@ public class AddTaskActivity extends BaseActivity implements OnClickListener {
     private void showDateDialog() {
         final AlertDialog dialog = new AlertDialog.Builder(this).create();
         dialog.show();
-        DatePicker picker = new DatePicker(this);
+        TaskDatePicker picker = new TaskDatePicker(this);
         picker.setDate(year, month);
         picker.setMode(DPMode.SINGLE);
 
-        picker.setOnDatePickedListener(new DatePicker.OnDatePickedListener() {
+        picker.setOnDatePickedListener(new TaskDatePicker.OnDatePickedListener() {
             @Override
             public void onDatePicked(String date) {
 //                Toast.makeText(AddTaskActivity.this, date, Toast.LENGTH_LONG).show();
@@ -280,7 +280,7 @@ public class AddTaskActivity extends BaseActivity implements OnClickListener {
                 dialog.dismiss();
             }
         });
-        picker.setOnTimeListener(new DatePicker.OnDatePickedListener() {
+        picker.setOnTimeListener(new TaskDatePicker.OnDatePickedListener() {
             @Override
             public void onDatePicked(String date) {
 //                Toast.makeText(AddTaskActivity.this, date, Toast.LENGTH_LONG).show();

+ 8 - 8
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/ClientActivity.java

@@ -5,12 +5,13 @@ import android.os.Bundle;
 import android.view.View;
 import android.widget.AdapterView;
 import android.widget.ArrayAdapter;
-import android.widget.FrameLayout;
 import android.widget.Spinner;
 
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.ui.base.BaseActivity;
+import com.xzjmyk.pm.activity.ui.calendar.cons.DPMode;
 import com.xzjmyk.pm.activity.ui.calendar.views.DatePicker;
+import com.xzjmyk.pm.activity.util.CalendarUtils;
 import com.xzjmyk.pm.activity.view.MyListView;
 
 public class ClientActivity extends BaseActivity implements View.OnClickListener {
@@ -20,7 +21,8 @@ public class ClientActivity extends BaseActivity implements View.OnClickListener
     private String[] stateItems = {"状态1", "状态2", "状态3", "状态4", "状态5"};
     private String[] typeItems = {"类型1", "类型2", "类型3", "类型4", "类型5"};
     private String[] show_typeItems = {"展示方式1", "展示方式2", "展示方式3", "展示方式4", "展示方式5"};
-    private FrameLayout oa_fl;
+    private DatePicker picker;
+
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -31,7 +33,7 @@ public class ClientActivity extends BaseActivity implements View.OnClickListener
     }
 
     private void init() {
-
+        ;
     }
 
     private void initView() {
@@ -47,13 +49,12 @@ public class ClientActivity extends BaseActivity implements View.OnClickListener
         findViewById(R.id.ll_).setOnClickListener(this);
         findViewById(R.id.ll_attendance).setOnClickListener(this);
 
-        oa_fl = (FrameLayout) findViewById(R.id.oa_fl);
-
-        DatePicker date = new DatePicker(this);
-        oa_fl.addView(date);
         state = (Spinner) findViewById(R.id.state);
         type = (Spinner) findViewById(R.id.type);
         show_type = (Spinner) findViewById(R.id.show_type);
+        picker = (DatePicker) findViewById(R.id.oa_picker);
+        picker.setDate(CalendarUtils.getCurrentYear(), CalendarUtils.getCurrentMonth());
+        picker.setMode(DPMode.SINGLE);
         bindAdapterForSpinner();
 
     }
@@ -93,7 +94,6 @@ public class ClientActivity extends BaseActivity implements View.OnClickListener
 
             @Override
             public void onNothingSelected(AdapterView<?> adapterView) {
-
             }
         });
     }

+ 34 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/OA_AlarmaActivity.java

@@ -0,0 +1,34 @@
+package com.xzjmyk.pm.activity.ui.erp.activity;
+
+import android.os.Bundle;
+import android.view.View;
+
+import com.xzjmyk.pm.activity.R;
+import com.xzjmyk.pm.activity.ui.base.BaseActivity;
+
+public class OA_AlarmaActivity extends BaseActivity implements View.OnClickListener {
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_oa__alarma);
+//        DateUtils.
+        findViewById(R.id.oa_back).setOnClickListener(this);
+    }
+
+    @Override
+    public void onClick(View view) {
+        switch (view.getId()) {
+            case R.id.oa_back://点击闹钟事件
+                endOfActivity();
+                break;
+        }
+    }
+
+    private void endOfActivity() {
+        //TODO 退出时候操作
+
+        finish();
+
+    }
+}

+ 67 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/SigninActivity.java

@@ -1,15 +1,81 @@
 package com.xzjmyk.pm.activity.ui.erp.activity;
 
+import android.app.AlertDialog;
+import android.content.Intent;
 import android.os.Bundle;
+import android.view.Gravity;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
 
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.ui.base.BaseActivity;
+import com.xzjmyk.pm.activity.ui.calendar.cons.DPMode;
+import com.xzjmyk.pm.activity.ui.calendar.views.DatePicker;
+import com.xzjmyk.pm.activity.util.CalendarUtils;
+import com.xzjmyk.pm.activity.util.TimeUtils;
 
-public class SigninActivity extends BaseActivity {
+public class SigninActivity extends BaseActivity implements View.OnClickListener {
+    private TextView titleTime;
+    private AlertDialog dateDialog;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_signin);
+        initView();
+    }
+
+    private void initView() {
+        findViewById(R.id.oa_alarma_img).setOnClickListener(this);
+        findViewById(R.id.oa_back).setOnClickListener(this);
+        findViewById(R.id.oa_rili_img).setOnClickListener(this);
+        titleTime = (TextView) findViewById(R.id.oa_date_tv);
+
+    }
+
+    @Override
+    public void onClick(View view) {
+        switch (view.getId()) {
+            case R.id.oa_alarma_img://点击闹钟事件
+                startActivity(new Intent(SigninActivity.this, OA_AlarmaActivity.class));
+                break;
+            case R.id.oa_back://
+                endOfActivity();
+                break;
+            case R.id.oa_rili_img://
+                showDateDalog();
+                break;
+        }
+    }
+
+    private void showDateDalog() {
+        //显示日期选择窗口
+        if (dateDialog == null)
+            dateDialog = new AlertDialog.Builder(this).create();
+        if (!dateDialog.isShowing())
+            dateDialog.show();
+        DatePicker picker = new DatePicker(this);
+        picker.setDate(CalendarUtils.getCurrentYear(), CalendarUtils.getCurrentMonth());
+        picker.setMode(DPMode.SINGLE);
+
+        picker.setOnDatePickedListener(new DatePicker.OnDatePickedListener() {
+            @Override
+            public void onDatePicked(String date) {
+                titleTime.setText(TimeUtils.day_long_2_str(TimeUtils.s_str_2_long(date)));
+                dateDialog.dismiss();
+            }
+        });
+        ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(
+                ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
+        dateDialog.getWindow().setContentView(picker, params);
+        dateDialog.getWindow().setGravity(Gravity.CENTER);
+    }
+
+    private void endOfActivity() {
+        //TODO 退出时候操作
+
+        finish();
+
     }
 }

+ 3 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/WebViewCommActivity.java

@@ -20,6 +20,7 @@ import com.xzjmyk.pm.activity.MyApplication;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.ui.MainActivity;
 import com.xzjmyk.pm.activity.ui.base.BaseActivity;
+import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
 
 import org.apache.http.cookie.Cookie;
@@ -136,10 +137,11 @@ public class WebViewCommActivity extends BaseActivity {
         cookieManager.setAcceptCookie(true);
         cookieManager.removeSessionCookie();//移除
         Cookie sessionCookie = MyApplication.cookieERP;
+        String sessionId = CommonUtil.getSharedPreferences(this, "sessionId");
         String cookieStr = sessionCookie.getName() + "="
                 + sessionCookie.getValue() + "; domain="
                 + sessionCookie.getDomain();
-        cookieManager.setCookie(url, cookieStr);//cookies是在HttpClient中获得的cookie
+        cookieManager.setCookie(url, "JSESSIONID=" + CommonUtil.getSharedPreferences(this, "sessionId"));//cookies是在HttpClient中获得的cookie
         CookieSyncManager.getInstance().sync();
     }
 

+ 11 - 3
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/message/SubscriptionActivity.java

@@ -18,6 +18,7 @@ import android.widget.TextView;
 import com.alibaba.fastjson.JSON;
 import com.handmark.pulltorefresh.library.PullToRefreshBase;
 import com.handmark.pulltorefresh.library.PullToRefreshListView;
+import com.xzjmyk.pm.activity.MyApplication;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.bean.message.SortSubsrciprion;
 import com.xzjmyk.pm.activity.bean.message.SubscriptionMessage;
@@ -75,6 +76,8 @@ public class SubscriptionActivity extends BaseActivity {
             }
         }
     };
+    private String code;
+    String mLoginUserId;
 
     @Override//设置右划退出
     public void setTouch(boolean b) {
@@ -85,7 +88,9 @@ public class SubscriptionActivity extends BaseActivity {
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_subscription);
+        mLoginUserId = MyApplication.getInstance().mLoginUser.getUserId();
         baseUrl = CommonUtil.getSharedPreferences(this, "erp_baseurl");
+        code = CommonUtil.getSharedPreferences(this, "erp_username");
         listView = (PullToRefreshListView) findViewById(R.id.listview);
         listView.setMode(PullToRefreshBase.Mode.BOTH);
         listView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
@@ -344,13 +349,16 @@ public class SubscriptionActivity extends BaseActivity {
                 @Override
                 public void onClick(View view) {
                     SubscriptionMessage bean = sortSubsrciprions.get(position).beans.get(i);
-                    String url = "http://218.17.158.219:8090/ERP//jsps/mobile/charts.jsp?" + "numId=" + bean.getNUM_ID_() +
+//                    218.17.158.219:8090/ERP
+                    String url = "http://192.168.253.233:8080/ERP//jsps/mobile/charts.jsp?" + "numId=" + bean.getNUM_ID_() +
                             "&mainId=" + bean.getINSTANCE_ID_() + "&insId=" + bean.getID_() +
-                            "&title=" + bean.getSON_TITLE_();
+                            "&title=" + bean.getSON_TITLE_() + "&SESSIONID=" + CommonUtil.getSharedPreferences(SubscriptionActivity.this, "sessionId")
+                            + "&emCode=" + code;
+
+                    Log.i("gongpengming", url);
                     ViewUtil.WebLinks(activity, url, "订阅", true);
                 }
             });
-
             contextView.setOnLongClickListener(new View.OnLongClickListener() {
                 @Override
                 public boolean onLongClick(View view) {

+ 6 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/util/TimeUtils.java

@@ -17,10 +17,12 @@ public class TimeUtils {
     // ///f 代表Full日期格式:yyyy-MM-dd hh:mm:ss
 
     public static final SimpleDateFormat ss_format = new SimpleDateFormat("MM-dd");
+    public static final SimpleDateFormat day_format = new SimpleDateFormat("yyyy年MM月dd日");
     public static final SimpleDateFormat s_format = new SimpleDateFormat("yyyy-MM-dd");
     public static final SimpleDateFormat f_format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
     public static final SimpleDateFormat int_format = new SimpleDateFormat("yyyyMMdd");
 
+
     public static long s_str_2_long(String dateString) {
         try {
             Date d = s_format.parse(dateString);
@@ -31,6 +33,10 @@ public class TimeUtils {
         return 0;
     }
 
+    public static String day_long_2_str(long timestamp) {
+        return day_format.format(new Date(timestamp));
+    }
+
     public static long int_str_2_long(String date) {
         try {
             Date d = int_format.parse(date);

BIN
WeiChat/src/main/res/drawable-xxhdpi/alar.png


BIN
WeiChat/src/main/res/drawable-xxhdpi/alarm.png


BIN
WeiChat/src/main/res/drawable-xxhdpi/back.png


BIN
WeiChat/src/main/res/drawable-xxhdpi/oa_rili.png


+ 24 - 0
WeiChat/src/main/res/drawable/oa_signin_tv_bg.xml

@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android" >
+
+    <!-- 实心 -->
+    <solid android:color="@android:color/white" />
+    <!-- 边框 -->
+    <stroke
+        android:width="0.5dp"
+        android:color="@android:color/black" />
+    <!-- 圆角 -->
+    <corners android:radius="3dp" />
+    <!-- 边距 -->
+    <padding
+        android:bottom="10dp"
+        android:left="10dp"
+        android:right="10dp"
+        android:top="10dp" />
+    <!-- 渐变 -->
+    <!--<gradient-->
+        <!--android:angle="270"-->
+        <!--android:endColor="#FFFF782"-->
+        <!--android:startColor="#13C7AF" />-->
+
+</shape> 

+ 10 - 3
WeiChat/src/main/res/layout/activity_client.xml

@@ -281,6 +281,8 @@
             android:orientation="horizontal">
 
             <ImageView
+                android:id="@+id/oa_img_people"
+                android:clickable="true"
                 android:layout_width="0dp"
                 android:layout_height="match_parent"
                 android:layout_weight="1"
@@ -306,6 +308,8 @@
                 android:background="@color/item_line" />
 
             <ImageView
+                android:id="@+id/oa_img_add"
+                android:clickable="true"
                 android:layout_width="0dp"
                 android:layout_height="match_parent"
                 android:layout_weight="1"
@@ -372,6 +376,8 @@
                 android:background="@color/item_line" />
 
             <ImageView
+                android:id="@+id/oa_img_infile"
+                android:clickable="true"
                 android:layout_width="0dp"
                 android:layout_height="match_parent"
                 android:layout_weight="1"
@@ -384,10 +390,10 @@
             android:layout_height="1px"
             android:background="@color/item_line" />
 
-        <FrameLayout
-            android:id="@+id/oa_fl"
+        <com.xzjmyk.pm.activity.ui.calendar.views.DatePicker
+            android:id="@+id/oa_picker"
             android:layout_width="match_parent"
-            android:layout_height="250dp" />
+            android:layout_height="300dp" />
 
         <View
             android:layout_width="match_parent"
@@ -400,6 +406,7 @@
             android:orientation="horizontal">
 
             <TextView
+                android:id="@+id/oa_all_task_num"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_weight="2"

+ 128 - 0
WeiChat/src/main/res/layout/activity_oa__alarma.xml

@@ -0,0 +1,128 @@
+<?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:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    tools:context="com.xzjmyk.pm.activity.ui.erp.activity.OA_AlarmaActivity">
+
+    <RelativeLayout
+        android:id="@+id/top"
+        android:layout_width="match_parent"
+        android:layout_height="?attr/actionBarSize"
+        android:background="@color/text_black">
+
+        <TextView
+            android:id="@+id/oa_back"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_centerVertical="true"
+            android:layout_marginLeft="10dp"
+            android:clickable="true"
+            android:drawableLeft="@drawable/back"
+            android:text="返回"
+            android:textColor="@color/white"
+            android:textSize="20sp" />
+
+        <TextView
+            android:id="@+id/oa_date_tv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_centerInParent="true"
+            android:clickable="true"
+            android:text="签到提醒"
+            android:textColor="@color/white"
+            android:textSize="20sp" />
+
+
+    </RelativeLayout>
+
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/item_height"
+        android:layout_margin="2dp"
+        android:background="@drawable/oa_signin_tv_bg"
+        android:padding="8dp">
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_centerVertical="true"
+            android:text="考勤提醒"
+            android:textSize="@dimen/text_main" />
+
+        <com.xzjmyk.pm.activity.ui.erp.view.SwitchView
+            android:id="@+id/cb_task_reply"
+            android:layout_width="50dp"
+            android:layout_height="35dp"
+            android:layout_alignParentRight="true"
+            android:layout_centerVertical="true" />
+    </RelativeLayout>
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/item_height"
+        android:layout_margin="2dp"
+        android:background="@drawable/oa_signin_tv_bg"
+        android:padding="8dp">
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_centerVertical="true"
+            android:text="上班时间提醒"
+            android:textSize="@dimen/text_main" />
+
+        <ImageView
+            android:id="@+id/image_alar"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_alignParentRight="true"
+            android:layout_centerVertical="true"
+            android:layout_marginRight="5dp"
+            android:src="@drawable/alar" />
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_centerVertical="true"
+            android:layout_marginRight="15dp"
+            android:layout_toLeftOf="@+id/image_alar"
+            android:text="08 : 20"
+            android:textSize="@dimen/text_main" />
+    </RelativeLayout>
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/item_height"
+        android:layout_margin="2dp"
+        android:background="@drawable/oa_signin_tv_bg"
+        android:padding="8dp">
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_centerVertical="true"
+            android:text="下班时间提醒"
+            android:textSize="@dimen/text_main" />
+
+        <ImageView
+            android:id="@+id/image_ualar"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_alignParentRight="true"
+            android:layout_centerVertical="true"
+            android:layout_marginRight="5dp"
+            android:src="@drawable/alar" />
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_centerVertical="true"
+            android:layout_marginRight="15dp"
+            android:layout_toLeftOf="@+id/image_ualar"
+            android:text="17 : 50"
+            android:textSize="@dimen/text_main" />
+    </RelativeLayout>
+</LinearLayout>

+ 182 - 25
WeiChat/src/main/res/layout/activity_signin.xml

@@ -5,40 +5,197 @@
     android:layout_height="match_parent"
     tools:context="com.xzjmyk.pm.activity.ui.erp.activity.SigninActivity">
 
+    <RelativeLayout
+        android:id="@+id/top"
+        android:layout_width="match_parent"
+        android:layout_height="?attr/actionBarSize"
+        android:background="@color/text_black">
+
+        <TextView
+            android:id="@+id/oa_back"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_centerVertical="true"
+            android:layout_marginLeft="10dp"
+            android:clickable="true"
+            android:drawableLeft="@drawable/back"
+            android:text="返回"
+            android:textColor="@color/white"
+            android:textSize="20sp" />
+
+        <TextView
+            android:id="@+id/oa_date_tv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_centerInParent="true"
+            android:clickable="true"
+            android:text="2016年6月13号 星期一"
+            android:textColor="@color/white"
+            android:textSize="16sp" />
+
+        <ImageView
+            android:id="@+id/oa_rili_img"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_alignParentRight="true"
+            android:layout_centerVertical="true"
+            android:layout_marginRight="5dp"
+            android:clickable="true"
+            android:src="@drawable/oa_rili" />
+
+        <ImageView
+            android:id="@+id/oa_alarma_img"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_centerVertical="true"
+            android:layout_marginRight="5dp"
+            android:layout_toLeftOf="@+id/oa_rili_img"
+            android:clickable="true"
+            android:src="@drawable/alarm" />
+    </RelativeLayout>
+
     <ScrollView
         android:id="@+id/oa_sll"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        android:layout_above="@+id/radio_group">
+        android:layout_above="@+id/radio_group"
+        android:layout_below="@+id/top">
+
         <RelativeLayout
+
             android:layout_width="match_parent"
             android:layout_height="match_parent">
+
+            <RelativeLayout
+                android:id="@+id/oa_rl_handle"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_centerHorizontal="true"
+                android:layout_margin="50dp">
+
+                <TextView
+                    android:id="@+id/oa_tv_time_work"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:background="@drawable/oa_signin_tv_bg"
+                    android:text="上班时间\n XX:XX" />
+
+                <TextView
+                    android:id="@+id/oa_tv_time_clickwork"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_alignParentRight="true"
+                    android:background="@drawable/oa_signin_tv_bg"
+                    android:text="上班签到时间\n XX:XX" />
+
+                <TextView
+                    android:id="@+id/oa_tv_time_unwork"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_below="@+id/oa_tv_time_work"
+                    android:layout_marginTop="30dp"
+                    android:background="@drawable/oa_signin_tv_bg"
+                    android:text="下班时间\n XX:XX" />
+
+                <TextView
+                    android:id="@+id/oa_tv_time_clickunwork"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_alignParentRight="true"
+                    android:layout_alignTop="@+id/oa_tv_time_unwork"
+                    android:background="@drawable/oa_signin_tv_bg"
+                    android:text="下班签到时间\n XX:XX" />
+            </RelativeLayout>
+
+            <TextView
+                android:id="@+id/oa_signin_time_tv"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_below="@+id/oa_rl_handle"
+                android:layout_centerHorizontal="true"
+                android:layout_marginLeft="50dp"
+                android:layout_marginRight="50dp"
+                android:background="@drawable/oa_signin_tv_bg"
+                android:text="下班签到时间\n XX:XX" />
+
+
+            <RelativeLayout
+                android:id="@+id/oa_ll_addr"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_below="@+id/oa_signin_time_tv"
+                android:layout_marginLeft="40dp"
+                android:layout_marginRight="40dp"
+                android:layout_marginTop="20dp"
+                android:background="@color/item_color2"
+                android:padding="8dp">
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:drawableLeft="@drawable/oa_signin"
+                    android:text="地址"
+                    android:textSize="16sp" />
+
+                <View
+                    android:layout_width="8dp"
+                    android:layout_height="2dp" />
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_alignParentRight="true"
+                    android:drawableRight="@drawable/set_list_next"
+                    android:text="地址"
+                    android:textSize="16sp" />
+            </RelativeLayout>
+
+            <TextView
+                android:id="@+id/oa_range_addr_tv"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_below="@+id/oa_ll_addr"
+                android:layout_marginLeft="40dp"
+                android:layout_marginRight="40dp"
+                android:layout_marginTop="30dp"
+                android:background="@drawable/oa_signin_tv_bg"
+                android:text="考勤地点:XXX \n 距离考勤地点:XXX公里" />
+
+            <LinearLayout
+                android:layout_width="100dp"
+                android:layout_height="100dp"
+                android:layout_below="@+id/oa_range_addr_tv"
+                android:layout_centerHorizontal="true"
+                android:layout_marginTop="30dp"
+                android:background="@drawable/button_round_shape"
+                android:clickable="true"
+                android:gravity="center"
+                android:orientation="vertical"
+                android:padding="10dp">
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="打卡"
+                    android:textColor="@color/white"
+                    android:textSize="20sp" />
+
+                <View
+                    android:layout_width="@dimen/abc_text_size_body_1_material"
+                    android:layout_height="5dp" />
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="XX:XX:XX"
+                    android:textColor="@color/white"
+                    android:textSize="14sp" />
+            </LinearLayout>
+
         </RelativeLayout>
-    </ScrollView>
 
-    <RadioGroup
-        android:id="@+id/radio_group"
-        android:layout_width="match_parent"
-        android:layout_height="40dp"
-        android:layout_alignParentBottom="true"
-        android:orientation="horizontal">
-        <RadioButton
-            android:layout_width="0dp"
-            android:layout_height="wrap_content"
-            android:layout_weight="1"
-            android:button="@null"
-            android:drawableTop="@drawable/oa_signin_xml"
-            android:gravity="center"
-            android:text="aa" />
-        <RadioButton
-            android:layout_width="0dp"
-            android:layout_height="wrap_content"
-            android:layout_weight="1"
-            android:button="@null"
-            android:drawableTop="@drawable/oa_signin_xml"
-            android:gravity="center"
-            android:text="aa" />
-    </RadioGroup>
+
+    </ScrollView>
 
 
 </RelativeLayout>