diff --git a/src/MyApplication/.idea/sonarlint/issuestore/0/c/0c2f607fe7104db4aff5a972f67db47c8fc3a01a b/src/MyApplication/.idea/sonarlint/issuestore/0/c/0c2f607fe7104db4aff5a972f67db47c8fc3a01a
index f16e36c..e69de29 100644
--- a/src/MyApplication/.idea/sonarlint/issuestore/0/c/0c2f607fe7104db4aff5a972f67db47c8fc3a01a
+++ b/src/MyApplication/.idea/sonarlint/issuestore/0/c/0c2f607fe7104db4aff5a972f67db47c8fc3a01a
@@ -1,2 +0,0 @@
-
-isquid:MaximumInheritanceDepth"=This class has 10 parents which is greater than 5 authorized.(��ٮ�����
\ No newline at end of file
diff --git a/src/MyApplication/.idea/sonarlint/issuestore/1/4/14d85ff7ad98d57e0b3d3d1342692c5fb59955a4 b/src/MyApplication/.idea/sonarlint/issuestore/1/4/14d85ff7ad98d57e0b3d3d1342692c5fb59955a4
index ac9cac1..e69de29 100644
--- a/src/MyApplication/.idea/sonarlint/issuestore/1/4/14d85ff7ad98d57e0b3d3d1342692c5fb59955a4
+++ b/src/MyApplication/.idea/sonarlint/issuestore/1/4/14d85ff7ad98d57e0b3d3d1342692c5fb59955a4
@@ -1,2 +0,0 @@
-
-dsquid:MaximumInheritanceDepth"=This class has 10 parents which is greater than 5 authorized.(��۬
\ No newline at end of file
diff --git a/src/MyApplication/.idea/sonarlint/issuestore/1/e/1e127e509da20f358c272f78cfdaea4346e9199b b/src/MyApplication/.idea/sonarlint/issuestore/1/e/1e127e509da20f358c272f78cfdaea4346e9199b
index 6e5456a..e69de29 100644
--- a/src/MyApplication/.idea/sonarlint/issuestore/1/e/1e127e509da20f358c272f78cfdaea4346e9199b
+++ b/src/MyApplication/.idea/sonarlint/issuestore/1/e/1e127e509da20f358c272f78cfdaea4346e9199b
@@ -1,2 +0,0 @@
-
-dsquid:MaximumInheritanceDepth"=This class has 10 parents which is greater than 5 authorized.(����
\ No newline at end of file
diff --git a/src/MyApplication/.idea/sonarlint/issuestore/5/4/5407486fb05ebaf77ee187807ac7fbb8cb42de8a b/src/MyApplication/.idea/sonarlint/issuestore/5/4/5407486fb05ebaf77ee187807ac7fbb8cb42de8a
new file mode 100644
index 0000000..d2c2aa8
--- /dev/null
+++ b/src/MyApplication/.idea/sonarlint/issuestore/5/4/5407486fb05ebaf77ee187807ac7fbb8cb42de8a
@@ -0,0 +1,3 @@
+
+Tsquid:S1118":Add a private constructor to hide the implicit public one.(�ȇ������
+gsquid:S3776"RRefactor this method to reduce its Cognitive Complexity from 20 to the 15 allowed.(��ݹ
\ No newline at end of file
diff --git a/src/MyApplication/.idea/sonarlint/issuestore/5/5/55a10cdfd1735580de467639a7fadbfa2db674ba b/src/MyApplication/.idea/sonarlint/issuestore/5/5/55a10cdfd1735580de467639a7fadbfa2db674ba
new file mode 100644
index 0000000..33dc42b
--- /dev/null
+++ b/src/MyApplication/.idea/sonarlint/issuestore/5/5/55a10cdfd1735580de467639a7fadbfa2db674ba
@@ -0,0 +1,11 @@
+
+qsquid:S3008"WRename this field "BITMAP_ERROR" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(�������
+lsquid:S3008"WRename this field "BITMAP_PRESS" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(����
+[squid:S1126"AReplace this if-then-else statement by a single return statement.(�깥�����
+Lsquid:S1444"2Make this "public static BITMAP_ERROR" field final(�������
+msquid:S3008"XRename this field "BITMAP_NORMAL" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(��߶
+�"squid:ClassVariableVisibilityCheck"XMake BITMAP_PRESS a static final constant or non-public and provide accessors if needed.(����
+�"squid:ClassVariableVisibilityCheck"YMake BITMAP_NORMAL a static final constant or non-public and provide accessors if needed.(��߶
+�"squid:ClassVariableVisibilityCheck"XMake BITMAP_ERROR a static final constant or non-public and provide accessors if needed.(�������
+Hsquid:S1444"3Make this "public static BITMAP_NORMAL" field final(��߶
+Gsquid:S1444"2Make this "public static BITMAP_PRESS" field final(����
\ No newline at end of file
diff --git a/src/MyApplication/.idea/sonarlint/issuestore/7/7/77b0e160fe3b756580b20d005c789ac79935523a b/src/MyApplication/.idea/sonarlint/issuestore/7/7/77b0e160fe3b756580b20d005c789ac79935523a
index 8987f88..e69de29 100644
--- a/src/MyApplication/.idea/sonarlint/issuestore/7/7/77b0e160fe3b756580b20d005c789ac79935523a
+++ b/src/MyApplication/.idea/sonarlint/issuestore/7/7/77b0e160fe3b756580b20d005c789ac79935523a
@@ -1,2 +0,0 @@
-
-dsquid:MaximumInheritanceDepth"=This class has 10 parents which is greater than 5 authorized.(�ζ�
\ No newline at end of file
diff --git a/src/MyApplication/.idea/sonarlint/issuestore/7/f/7fc1f946c8e0fc0221c21f1cb84787e5b2965d9a b/src/MyApplication/.idea/sonarlint/issuestore/7/f/7fc1f946c8e0fc0221c21f1cb84787e5b2965d9a
new file mode 100644
index 0000000..9f3f270
--- /dev/null
+++ b/src/MyApplication/.idea/sonarlint/issuestore/7/f/7fc1f946c8e0fc0221c21f1cb84787e5b2965d9a
@@ -0,0 +1,3 @@
+
+Tsquid:S1161":Add the "@Override" annotation above this method signature(��������
+hsquid:MaximumInheritanceDepth"<This class has 7 parents which is greater than 5 authorized.(���������
\ No newline at end of file
diff --git a/src/MyApplication/.idea/sonarlint/issuestore/8/2/824db7b1941b2ab3f719e805a0d5d84f175b9127 b/src/MyApplication/.idea/sonarlint/issuestore/8/2/824db7b1941b2ab3f719e805a0d5d84f175b9127
index 6e144e9..e69de29 100644
--- a/src/MyApplication/.idea/sonarlint/issuestore/8/2/824db7b1941b2ab3f719e805a0d5d84f175b9127
+++ b/src/MyApplication/.idea/sonarlint/issuestore/8/2/824db7b1941b2ab3f719e805a0d5d84f175b9127
@@ -1,2 +0,0 @@
-
-isquid:MaximumInheritanceDepth"=This class has 10 parents which is greater than 5 authorized.(���������
\ No newline at end of file
diff --git a/src/MyApplication/.idea/sonarlint/issuestore/8/2/82d2fb9785192ddc21561f59fc59fc0e07e8a84c b/src/MyApplication/.idea/sonarlint/issuestore/8/2/82d2fb9785192ddc21561f59fc59fc0e07e8a84c
index f8de504..e69de29 100644
--- a/src/MyApplication/.idea/sonarlint/issuestore/8/2/82d2fb9785192ddc21561f59fc59fc0e07e8a84c
+++ b/src/MyApplication/.idea/sonarlint/issuestore/8/2/82d2fb9785192ddc21561f59fc59fc0e07e8a84c
@@ -1,2 +0,0 @@
-
-dsquid:MaximumInheritanceDepth"=This class has 10 parents which is greater than 5 authorized.(���
\ No newline at end of file
diff --git a/src/MyApplication/.idea/sonarlint/issuestore/8/3/83d37b2761f0342c28dad5cd3a4bdc7a7b7d55d6 b/src/MyApplication/.idea/sonarlint/issuestore/8/3/83d37b2761f0342c28dad5cd3a4bdc7a7b7d55d6
new file mode 100644
index 0000000..e69de29
diff --git a/src/MyApplication/.idea/sonarlint/issuestore/8/e/8e104bc4be91ecea7d96ed093e7eefd2be1a136c b/src/MyApplication/.idea/sonarlint/issuestore/8/e/8e104bc4be91ecea7d96ed093e7eefd2be1a136c
new file mode 100644
index 0000000..250a36a
--- /dev/null
+++ b/src/MyApplication/.idea/sonarlint/issuestore/8/e/8e104bc4be91ecea7d96ed093e7eefd2be1a136c
@@ -0,0 +1,22 @@
+
+Lsquid:S2589"7Remove this expression which always evaluates to "true"(�ɩ�
+Ksquid:S2696"6Make the enclosing method "static" or remove this set.(���
+hsquid:MaximumInheritanceDepth"<This class has 6 parents which is greater than 5 authorized.(���������
+Ssquid:S1226">Introduce a new variable instead of reusing the parameter "x".(��ș
+lsquid:S3776"RRefactor this method to reduce its Cognitive Complexity from 17 to the 15 allowed.(ּف�����
+nsquid:S2293"YReplace the type specification in this constructor call with the diamond operator ("<>").(����
+S"squid:SwitchLastCaseIsDefaultCheck""Add a default case to this switch.(���������
+Tsquid:S3398"?Move this method into the anonymous class declared at line 157.(ə�
+[squid:S1126"AReplace this if-then-else statement by a single return statement.(�ː�����
+S"squid:SwitchLastCaseIsDefaultCheck""Add a default case to this switch.(���������
+asquid:S2184"GCast one of the operands of this multiplication operation to a "float".(��������
+gsquid:S3776"RRefactor this method to reduce its Cognitive Complexity from 16 to the 15 allowed.(��Ǩ
+Zsquid:CallToDeprecatedMethod"/Remove this use of "vibrate"; it is deprecated.(��������
+psquid:S00115"ZRename this constant name to match the regular expression '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.(����
+=squid:S1148"#Use a logger to log this exception.(��ԅ�����
+\squid:S2184"GCast one of the operands of this multiplication operation to a "float".(���
+nsquid:S1450"TRemove the "moveX" field and declare it as a local variable in the relevant methods.(͠�������
+Isquid:EmptyStatementUsageCheck"Remove this empty statement.(���������
+Lsquid:S2589"7Remove this expression which always evaluates to "true"(�ɩ�
+Ssquid:S1226">Introduce a new variable instead of reusing the parameter "y".(�ř�
+lsquid:S3776"RRefactor this method to reduce its Cognitive Complexity from 17 to the 15 allowed.(���������
\ No newline at end of file
diff --git a/src/MyApplication/.idea/sonarlint/issuestore/9/a/9a3b018c7a5556301c9f2b82bea49b0b3ceb2613 b/src/MyApplication/.idea/sonarlint/issuestore/9/a/9a3b018c7a5556301c9f2b82bea49b0b3ceb2613
index cf3965a..72e2b53 100644
--- a/src/MyApplication/.idea/sonarlint/issuestore/9/a/9a3b018c7a5556301c9f2b82bea49b0b3ceb2613
+++ b/src/MyApplication/.idea/sonarlint/issuestore/9/a/9a3b018c7a5556301c9f2b82bea49b0b3ceb2613
@@ -1,13 +1,11 @@
 
-Isquid:S1066"/Merge this if statement with the enclosing one.(���������
-[squid:S2142"FEither re-interrupt this method or rethrow the "InterruptedException".(䠹�
-Gsquid:S1135"2Complete the task associated to this TODO comment.(��
-Gsquid:S1135"2Complete the task associated to this TODO comment.(־�
-Lsquid:S1135"2Complete the task associated to this TODO comment.(���������
-�squid:S1186"�Add a nested comment explaining why this method is empty, throw an UnsupportedOperationException or complete the implementation.(���������
-Osquid:S2386"5Move "PROJECTION" to a class and lower its visibility(���������
-<squid:S1214""Move constants to a class or enum.(י�������
-Gsquid:S1135"2Complete the task associated to this TODO comment.(����
 gsquid:S3776"RRefactor this method to reduce its Cognitive Complexity from 20 to the 15 allowed.(ƿ��
-dsquid:MaximumInheritanceDepth"=This class has 10 parents which is greater than 5 authorized.(���
-Gsquid:S1135"2Complete the task associated to this TODO comment.(����
\ No newline at end of file
+Gsquid:S1135"2Complete the task associated to this TODO comment.(����
+Isquid:S1066"/Merge this if statement with the enclosing one.(���������
+Gsquid:S1135"2Complete the task associated to this TODO comment.(־�
+Gsquid:S1135"2Complete the task associated to this TODO comment.(��
+Lsquid:S1135"2Complete the task associated to this TODO comment.(���������
+[squid:S2142"FEither re-interrupt this method or rethrow the "InterruptedException".(䠹�
+_squid:CommentedOutCodeLine"<This block of commented-out lines of code should be removed.(���{
+Gsquid:S1135"2Complete the task associated to this TODO comment.(����
+�squid:S1186"�Add a nested comment explaining why this method is empty, throw an UnsupportedOperationException or complete the implementation.(���������
\ No newline at end of file
diff --git a/src/MyApplication/.idea/sonarlint/issuestore/a/2/a2cac54ed6169d41dc3d4fe37b5f3594fabd1e9d b/src/MyApplication/.idea/sonarlint/issuestore/a/2/a2cac54ed6169d41dc3d4fe37b5f3594fabd1e9d
new file mode 100644
index 0000000..ff6e8fb
--- /dev/null
+++ b/src/MyApplication/.idea/sonarlint/issuestore/a/2/a2cac54ed6169d41dc3d4fe37b5f3594fabd1e9d
@@ -0,0 +1,8 @@
+
+msquid:ModifiersOrderCheck"EReorder the modifiers to comply with the Java Language Specification.(��«�����
+@squid:S1659"&Declare "spotMaxX" on a separate line.(ǡ�������
+osquid:S1450"URemove the "startX" field and declare it as a local variable in the relevant methods.(���������
+<squid:S1659""Declare "endX" on a separate line.(���������
+Ysquid:UnusedPrivateMethod"6Remove this unused private "ToggleButton" constructor.(����
+hsquid:ModifiersOrderCheck"EReorder the modifiers to comply with the Java Language Specification.(�Ů�
+gsquid:ModifiersOrderCheck"EReorder the modifiers to comply with the Java Language Specification.(���
\ No newline at end of file
diff --git a/src/MyApplication/.idea/sonarlint/issuestore/b/d/bd98ce0af59853dea38d4090583c47ba06bce28d b/src/MyApplication/.idea/sonarlint/issuestore/b/d/bd98ce0af59853dea38d4090583c47ba06bce28d
new file mode 100644
index 0000000..8987f88
--- /dev/null
+++ b/src/MyApplication/.idea/sonarlint/issuestore/b/d/bd98ce0af59853dea38d4090583c47ba06bce28d
@@ -0,0 +1,2 @@
+
+dsquid:MaximumInheritanceDepth"=This class has 10 parents which is greater than 5 authorized.(�ζ�
\ No newline at end of file
diff --git a/src/MyApplication/.idea/sonarlint/issuestore/d/2/d2c92a556e47fd0e9a3fa038dbf835129e2f5090 b/src/MyApplication/.idea/sonarlint/issuestore/d/2/d2c92a556e47fd0e9a3fa038dbf835129e2f5090
new file mode 100644
index 0000000..2500003
--- /dev/null
+++ b/src/MyApplication/.idea/sonarlint/issuestore/d/2/d2c92a556e47fd0e9a3fa038dbf835129e2f5090
@@ -0,0 +1,7 @@
+
+Vsquid:S2184"ACast one of the operands of this division operation to a "float".(�̖�
+Vsquid:S2184"ACast one of the operands of this addition operation to a "float".(����
+Vsquid:S2184"ACast one of the operands of this addition operation to a "float".(����
+Vsquid:S2184"ACast one of the operands of this division operation to a "float".(ĵ��
+Vsquid:S2184"ACast one of the operands of this division operation to a "float".(ĵ��
+Vsquid:S2184"ACast one of the operands of this division operation to a "float".(�̖�
\ No newline at end of file
diff --git a/src/MyApplication/.idea/sonarlint/issuestore/d/5/d55eada2cdd2dd102362d485231d9b377995b0b0 b/src/MyApplication/.idea/sonarlint/issuestore/d/5/d55eada2cdd2dd102362d485231d9b377995b0b0
new file mode 100644
index 0000000..95aa919
--- /dev/null
+++ b/src/MyApplication/.idea/sonarlint/issuestore/d/5/d55eada2cdd2dd102362d485231d9b377995b0b0
@@ -0,0 +1,27 @@
+
+esquid:CommentedOutCodeLine"<This block of commented-out lines of code should be removed.(��������
+ssquid:S2293"YReplace the type specification in this constructor call with the diamond operator ("<>").(���������
+:squid:S2068" Remove this hard-coded password.(���������
+Bsquid:S1125"(Remove the literal "true" boolean value.(���������
+Xsquid:S1155">Use isEmpty() to check whether the collection is empty or not.(��Ю�����
+0squid:S1643"Use a StringBuilder instead.(븈2
+Fsquid:S1068",Remove this unused "mContext" private field.(��ž�����
+esquid:CommentedOutCodeLine"<This block of commented-out lines of code should be removed.(��ʳ�����
+S"squid:SwitchLastCaseIsDefaultCheck""Add a default case to this switch.(��������
+[squid:CallToDeprecatedMethod"0Remove this use of "getWidth"; it is deprecated.(��������
+4squid:S2131"Use "Integer.toString" instead.(ј��
+Dsquid:S1066"/Merge this if statement with the enclosing one.(댯�
+[squid:S2184"ACast one of the operands of this division operation to a "float".(�酈�����
+=squid:S1148"#Use a logger to log this exception.(��ԅ�����
+Zsquid:S2184"@Cast one of the operands of this integer division to a "double".(�酈�����
+esquid:CommentedOutCodeLine"<This block of commented-out lines of code should be removed.(���������
+>squid:S1659"$Declare "mMoveY" on a separate line.(���������
+osquid:S1450"URemove the "mMoveY" field and declare it as a local variable in the relevant methods.(���������
+gsquid:S3776"RRefactor this method to reduce its Cognitive Complexity from 35 to the 15 allowed.(���
+psquid:S1450"\Remove the "mScreenHeight" field and declare it as a local variable in the relevant methods.(�ݘZ
+osquid:S1450"URemove the "mMoveX" field and declare it as a local variable in the relevant methods.(���������
+[squid:S2142"FEither re-interrupt this method or rethrow the "InterruptedException".(䠹�
+`squid:CommentedOutCodeLine"<This block of commented-out lines of code should be removed.(���
+usquid:S1450"[Remove the "mScreenWidth" field and declare it as a local variable in the relevant methods.(ҙ�������
+[squid:CallToDeprecatedMethod"0Remove this use of "getWidth"; it is deprecated.(��������
+:squid:S2068" Remove this hard-coded password.(򤂛�����
\ No newline at end of file
diff --git a/src/MyApplication/.idea/sonarlint/issuestore/d/9/d9f0b00bd9259256a0cc6a48eb4c59665266c4ea b/src/MyApplication/.idea/sonarlint/issuestore/d/9/d9f0b00bd9259256a0cc6a48eb4c59665266c4ea
new file mode 100644
index 0000000..46ab0ba
--- /dev/null
+++ b/src/MyApplication/.idea/sonarlint/issuestore/d/9/d9f0b00bd9259256a0cc6a48eb4c59665266c4ea
@@ -0,0 +1,13 @@
+
+Isquid:S1066"/Merge this if statement with the enclosing one.(���������
+<squid:S1214""Move constants to a class or enum.(י�������
+Lsquid:S1135"2Complete the task associated to this TODO comment.(���������
+Gsquid:S1135"2Complete the task associated to this TODO comment.(����
+Gsquid:S1135"2Complete the task associated to this TODO comment.(����
+Gsquid:S1135"2Complete the task associated to this TODO comment.(־�
+Gsquid:S1135"2Complete the task associated to this TODO comment.(��
+gsquid:S3776"RRefactor this method to reduce its Cognitive Complexity from 20 to the 15 allowed.(ƿ��
+[squid:S2142"FEither re-interrupt this method or rethrow the "InterruptedException".(䠹�
+�squid:S1186"�Add a nested comment explaining why this method is empty, throw an UnsupportedOperationException or complete the implementation.(���������
+Osquid:S2386"5Move "PROJECTION" to a class and lower its visibility(���������
+dsquid:MaximumInheritanceDepth"=This class has 10 parents which is greater than 5 authorized.(���
\ No newline at end of file
diff --git a/src/MyApplication/.idea/sonarlint/issuestore/e/7/e71af57077389976b85ce04fe9c4f9e8bc78f9d2 b/src/MyApplication/.idea/sonarlint/issuestore/e/7/e71af57077389976b85ce04fe9c4f9e8bc78f9d2
new file mode 100644
index 0000000..e69de29
diff --git a/src/MyApplication/.idea/sonarlint/issuestore/f/4/f4db46de912ee15bd8dff2e67791e614cfdc8ae8 b/src/MyApplication/.idea/sonarlint/issuestore/f/4/f4db46de912ee15bd8dff2e67791e614cfdc8ae8
new file mode 100644
index 0000000..3074493
--- /dev/null
+++ b/src/MyApplication/.idea/sonarlint/issuestore/f/4/f4db46de912ee15bd8dff2e67791e614cfdc8ae8
@@ -0,0 +1,2 @@
+
+isquid:MaximumInheritanceDepth"=This class has 10 parents which is greater than 5 authorized.(���������
\ No newline at end of file
diff --git a/src/MyApplication/.idea/sonarlint/issuestore/f/6/f694bbb1d0ede28a56fa9364fe5df7136cda2823 b/src/MyApplication/.idea/sonarlint/issuestore/f/6/f694bbb1d0ede28a56fa9364fe5df7136cda2823
index 3d8153f..e69de29 100644
--- a/src/MyApplication/.idea/sonarlint/issuestore/f/6/f694bbb1d0ede28a56fa9364fe5df7136cda2823
+++ b/src/MyApplication/.idea/sonarlint/issuestore/f/6/f694bbb1d0ede28a56fa9364fe5df7136cda2823
@@ -1,2 +0,0 @@
-
-isquid:MaximumInheritanceDepth"=This class has 10 parents which is greater than 5 authorized.(��Ȣ�����
\ No newline at end of file
diff --git a/src/MyApplication/.idea/sonarlint/issuestore/f/d/fd468597b3276a6c77a10eb393b17d78086669ae b/src/MyApplication/.idea/sonarlint/issuestore/f/d/fd468597b3276a6c77a10eb393b17d78086669ae
index b8b3c67..e69de29 100644
--- a/src/MyApplication/.idea/sonarlint/issuestore/f/d/fd468597b3276a6c77a10eb393b17d78086669ae
+++ b/src/MyApplication/.idea/sonarlint/issuestore/f/d/fd468597b3276a6c77a10eb393b17d78086669ae
@@ -1,3 +0,0 @@
-
-hsquid:MaximumInheritanceDepth"<This class has 7 parents which is greater than 5 authorized.(���������
-Tsquid:S1161":Add the "@Override" annotation above this method signature(��������
\ No newline at end of file
diff --git a/src/MyApplication/.idea/sonarlint/issuestore/index.pb b/src/MyApplication/.idea/sonarlint/issuestore/index.pb
index 881ca0e..2e2331a 100644
--- a/src/MyApplication/.idea/sonarlint/issuestore/index.pb
+++ b/src/MyApplication/.idea/sonarlint/issuestore/index.pb
@@ -1,21 +1,25 @@
 
 <
 build.gradle,f\0\f07866736216be0ee2aba49e392191aeae700a35
-{
-Kapp\src\main\java\com\example\administrator\myapplication\SignActivity.java,7\7\77b0e160fe3b756580b20d005c789ac79935523a
-|
-Lapp\src\main\java\com\example\administrator\myapplication\ImagesDisplay.java,f\6\f694bbb1d0ede28a56fa9364fe5df7136cda2823
-{
-Kapp\src\main\java\com\example\administrator\myapplication\ListActivity.java,0\c\0c2f607fe7104db4aff5a972f67db47c8fc3a01a
-y
-Iapp\src\main\java\com\example\administrator\myapplication\EditImages.java,1\e\1e127e509da20f358c272f78cfdaea4346e9199b
-x
-Happ\src\main\java\com\example\administrator\myapplication\EditNotes.java,8\2\824db7b1941b2ab3f719e805a0d5d84f175b9127
-y
-Iapp\src\main\java\com\example\administrator\myapplication\ScanImages.java,1\4\14d85ff7ad98d57e0b3d3d1342692c5fb59955a4
-}
-Mapp\src\main\java\com\example\administrator\myapplication\SearchActivity.java,8\2\82d2fb9785192ddc21561f59fc59fc0e07e8a84c
-|
-Lapp\src\main\java\com\example\administrator\myapplication\LoginActivity.java,9\a\9a3b018c7a5556301c9f2b82bea49b0b3ceb2613
-�
-Zapp\src\main\java\com\example\administrator\myapplication\AppCompatPreferenceActivity.java,f\d\fd468597b3276a6c77a10eb393b17d78086669ae
\ No newline at end of file
+~
+Napp\src\main\java\com\example\administrator\myapplication\ui\SignActivity.java,b\d\bd98ce0af59853dea38d4090583c47ba06bce28d
+�
+]app\src\main\java\com\example\administrator\myapplication\ui\AppCompatPreferenceActivity.java,7\f\7fc1f946c8e0fc0221c21f1cb84787e5b2965d9a
+�
+aapp\src\main\java\com\example\administrator\myapplication\widget\patternlock\LockPatternView.java,d\5\d55eada2cdd2dd102362d485231d9b377995b0b0
+�
+Wapp\src\main\java\com\example\administrator\myapplication\widget\patternlock\Point.java,5\5\55a10cdfd1735580de467639a7fadbfa2db674ba
+�
+Uapp\src\main\java\com\example\administrator\myapplication\widget\HTQDragGridView.java,8\e\8e104bc4be91ecea7d96ed093e7eefd2be1a136c
+�
+Uapp\src\main\java\com\example\administrator\myapplication\widget\CircleImageView.java,d\2\d2c92a556e47fd0e9a3fa038dbf835129e2f5090
+�
+_app\src\main\java\com\example\administrator\myapplication\widget\patternlock\RotateDegrees.java,5\4\5407486fb05ebaf77ee187807ac7fbb8cb42de8a
+�
+Xapp\src\main\java\com\example\administrator\myapplication\widget\NoteItemCircleView.java,e\7\e71af57077389976b85ce04fe9c4f9e8bc78f9d2
+�
+Rapp\src\main\java\com\example\administrator\myapplication\widget\ToggleButton.java,a\2\a2cac54ed6169d41dc3d4fe37b5f3594fabd1e9d
+�
+Qapp\src\main\java\com\example\administrator\myapplication\ui\WelcomeActivity.java,f\4\f4db46de912ee15bd8dff2e67791e614cfdc8ae8
+
+Oapp\src\main\java\com\example\administrator\myapplication\ui\LoginActivity.java,d\9\d9f0b00bd9259256a0cc6a48eb4c59665266c4ea
\ No newline at end of file
diff --git a/src/MyApplication/app/src/main/AndroidManifest.xml b/src/MyApplication/app/src/main/AndroidManifest.xml
index 6615ce6..a1234ac 100644
--- a/src/MyApplication/app/src/main/AndroidManifest.xml
+++ b/src/MyApplication/app/src/main/AndroidManifest.xml
@@ -15,25 +15,28 @@
         android:supportsRtl="true"
         android:theme="@style/Theme.AppCompat.Light.NoActionBar">
         <activity
-            android:name=".LoginActivity"
-            android:label="@string/title_activity_login">4
+            android:name=".ui.LoginActivity"
+            android:label="@string/title_activity_login">
+            4
             <intent-filter>
                 <action android:name="android.intent.action.MAIN"/>
 
                 <category android:name="android.intent.category.LAUNCHER"/>
             </intent-filter>
         </activity>
-        <activity android:name=".SignActivity"/>
-        <activity android:name=".ListActivity"/>
-        <activity android:name=".SearchActivity">
+        <activity android:name=".ui.SignActivity"/>
+        <activity android:name=".ui.ListActivity"/>
+        <activity android:name=".ui.SearchActivity">
         </activity>
-        <activity android:name=".EditImages">
+        <activity android:name=".ui.EditImages">
         </activity>
-        <activity android:name=".ScanImages">
+        <activity android:name=".ui.ScanImages">
         </activity>
-        <activity android:name=".ImagesDisplay">
+        <activity android:name=".ui.ImagesDisplay">
         </activity>
-        <activity android:name=".EditNotes">
+        <activity android:name=".ui.EditNotes">
+        </activity>
+        <activity android:name=".ui.WelcomeActivity">
         </activity>
     </application>
 
diff --git a/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/AppCompatPreferenceActivity.java b/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/ui/AppCompatPreferenceActivity.java
similarity index 98%
rename from src/MyApplication/app/src/main/java/com/example/administrator/myapplication/AppCompatPreferenceActivity.java
rename to src/MyApplication/app/src/main/java/com/example/administrator/myapplication/ui/AppCompatPreferenceActivity.java
index 3f80e74..e89953b 100644
--- a/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/AppCompatPreferenceActivity.java
+++ b/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/ui/AppCompatPreferenceActivity.java
@@ -1,4 +1,4 @@
-package com.example.administrator.myapplication;
+package com.example.administrator.myapplication.ui;
 
 import android.content.res.Configuration;
 import android.os.Bundle;
diff --git a/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/EditImages.java b/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/ui/EditImages.java
similarity index 74%
rename from src/MyApplication/app/src/main/java/com/example/administrator/myapplication/EditImages.java
rename to src/MyApplication/app/src/main/java/com/example/administrator/myapplication/ui/EditImages.java
index b6a4528..f1fd3ad 100644
--- a/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/EditImages.java
+++ b/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/ui/EditImages.java
@@ -1,8 +1,10 @@
-package com.example.administrator.myapplication;
+package com.example.administrator.myapplication.ui;
 
 import android.support.v7.app.AppCompatActivity;
 import android.os.Bundle;
 
+import com.example.administrator.myapplication.R;
+
 public class EditImages extends AppCompatActivity {
 
     @Override
diff --git a/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/EditNotes.java b/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/ui/EditNotes.java
similarity index 85%
rename from src/MyApplication/app/src/main/java/com/example/administrator/myapplication/EditNotes.java
rename to src/MyApplication/app/src/main/java/com/example/administrator/myapplication/ui/EditNotes.java
index 0796d78..21c1a51 100644
--- a/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/EditNotes.java
+++ b/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/ui/EditNotes.java
@@ -1,10 +1,12 @@
-package com.example.administrator.myapplication;
+package com.example.administrator.myapplication.ui;
 
 import android.content.Intent;
 import android.os.Bundle;
 import android.support.v7.app.AppCompatActivity;
 import android.view.View;
 
+import com.example.administrator.myapplication.R;
+
 public class EditNotes extends AppCompatActivity {
 
     @Override
diff --git a/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/ImagesDisplay.java b/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/ui/ImagesDisplay.java
similarity index 91%
rename from src/MyApplication/app/src/main/java/com/example/administrator/myapplication/ImagesDisplay.java
rename to src/MyApplication/app/src/main/java/com/example/administrator/myapplication/ui/ImagesDisplay.java
index 35ccba5..1cab5b3 100644
--- a/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/ImagesDisplay.java
+++ b/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/ui/ImagesDisplay.java
@@ -1,10 +1,12 @@
-package com.example.administrator.myapplication;
+package com.example.administrator.myapplication.ui;
 
 import android.content.Intent;
 import android.os.Bundle;
 import android.support.v7.app.AppCompatActivity;
 import android.view.View;
 
+import com.example.administrator.myapplication.R;
+
 public class ImagesDisplay extends AppCompatActivity {
 
     @Override
diff --git a/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/ListActivity.java b/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/ui/ListActivity.java
similarity index 91%
rename from src/MyApplication/app/src/main/java/com/example/administrator/myapplication/ListActivity.java
rename to src/MyApplication/app/src/main/java/com/example/administrator/myapplication/ui/ListActivity.java
index 51553aa..b8269fd 100644
--- a/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/ListActivity.java
+++ b/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/ui/ListActivity.java
@@ -1,10 +1,12 @@
-package com.example.administrator.myapplication;
+package com.example.administrator.myapplication.ui;
 
 import android.content.Intent;
 import android.os.Bundle;
 import android.support.v7.app.AppCompatActivity;
 import android.view.View;
 
+import com.example.administrator.myapplication.R;
+
 public class ListActivity extends AppCompatActivity {
 
     @Override
diff --git a/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/LoginActivity.java b/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/ui/LoginActivity.java
similarity index 98%
rename from src/MyApplication/app/src/main/java/com/example/administrator/myapplication/LoginActivity.java
rename to src/MyApplication/app/src/main/java/com/example/administrator/myapplication/ui/LoginActivity.java
index 4bb7c74..3838a5f 100644
--- a/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/LoginActivity.java
+++ b/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/ui/LoginActivity.java
@@ -1,4 +1,4 @@
-package com.example.administrator.myapplication;
+package com.example.administrator.myapplication.ui;
 
 import android.animation.Animator;
 import android.animation.AnimatorListenerAdapter;
@@ -30,6 +30,8 @@ import android.widget.Button;
 import android.widget.EditText;
 import android.widget.TextView;
 
+import com.example.administrator.myapplication.R;
+
 import java.util.ArrayList;
 import java.util.List;
 
@@ -296,13 +298,13 @@ public class LoginActivity extends AppCompatActivity implements LoaderCallbacks<
 
 
     private interface ProfileQuery {
-/*         String[] PROJECTION = {
+        String[] PROJECTION = {
                 ContactsContract.CommonDataKinds.Email.ADDRESS,
                 ContactsContract.CommonDataKinds.Email.IS_PRIMARY,
         };
 
         int ADDRESS = 0;
-        int IS_PRIMARY = 1; */
+        int IS_PRIMARY = 1;
     }
 
     /**
diff --git a/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/ScanImages.java b/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/ui/ScanImages.java
similarity index 85%
rename from src/MyApplication/app/src/main/java/com/example/administrator/myapplication/ScanImages.java
rename to src/MyApplication/app/src/main/java/com/example/administrator/myapplication/ui/ScanImages.java
index 74baada..afe9191 100644
--- a/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/ScanImages.java
+++ b/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/ui/ScanImages.java
@@ -1,10 +1,12 @@
-package com.example.administrator.myapplication;
+package com.example.administrator.myapplication.ui;
 
 import android.content.Intent;
 import android.os.Bundle;
 import android.support.v7.app.AppCompatActivity;
 import android.view.View;
 
+import com.example.administrator.myapplication.R;
+
 public class ScanImages extends AppCompatActivity {
 
     @Override
diff --git a/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/SearchActivity.java b/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/ui/SearchActivity.java
similarity index 74%
rename from src/MyApplication/app/src/main/java/com/example/administrator/myapplication/SearchActivity.java
rename to src/MyApplication/app/src/main/java/com/example/administrator/myapplication/ui/SearchActivity.java
index eb17ebf..fbd212e 100644
--- a/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/SearchActivity.java
+++ b/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/ui/SearchActivity.java
@@ -1,8 +1,10 @@
-package com.example.administrator.myapplication;
+package com.example.administrator.myapplication.ui;
 
 import android.support.v7.app.AppCompatActivity;
 import android.os.Bundle;
 
+import com.example.administrator.myapplication.R;
+
 public class SearchActivity extends AppCompatActivity {
 
     @Override
diff --git a/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/SignActivity.java b/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/ui/SignActivity.java
similarity index 89%
rename from src/MyApplication/app/src/main/java/com/example/administrator/myapplication/SignActivity.java
rename to src/MyApplication/app/src/main/java/com/example/administrator/myapplication/ui/SignActivity.java
index 5b9d562..66c20a4 100644
--- a/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/SignActivity.java
+++ b/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/ui/SignActivity.java
@@ -1,10 +1,12 @@
-package com.example.administrator.myapplication;
+package com.example.administrator.myapplication.ui;
 
 import android.content.Intent;
 import android.os.Bundle;
 import android.support.v7.app.AppCompatActivity;
 import android.view.View;
 
+import com.example.administrator.myapplication.R;
+
 public class SignActivity extends AppCompatActivity {
 
     @Override
diff --git a/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/ui/WelcomeActivity.java b/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/ui/WelcomeActivity.java
new file mode 100644
index 0000000..4ccb307
--- /dev/null
+++ b/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/ui/WelcomeActivity.java
@@ -0,0 +1,15 @@
+package com.example.administrator.myapplication.ui;
+
+import android.support.v7.app.AppCompatActivity;
+import android.os.Bundle;
+
+import com.example.administrator.myapplication.R;
+
+public class WelcomeActivity extends AppCompatActivity {
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_welcome);
+    }
+}
diff --git a/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/widget/CircleImageView.java b/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/widget/CircleImageView.java
new file mode 100644
index 0000000..38f22a9
--- /dev/null
+++ b/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/widget/CircleImageView.java
@@ -0,0 +1,253 @@
+package com.example.administrator.myapplication.widget;
+
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.graphics.Bitmap;
+import android.graphics.BitmapShader;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.Matrix;
+import android.graphics.Paint;
+import android.graphics.RectF;
+import android.graphics.Shader;
+import android.graphics.drawable.BitmapDrawable;
+import android.graphics.drawable.ColorDrawable;
+import android.graphics.drawable.Drawable;
+import android.util.AttributeSet;
+import android.widget.ImageView;
+import com.example.administrator.myapplication.R;
+
+
+/**
+ * 圆形ImageView组件
+ *
+ */
+public class CircleImageView extends ImageView {
+
+    private static final ScaleType SCALE_TYPE = ScaleType.CENTER_CROP;
+
+    private static final Bitmap.Config BITMAP_CONFIG = Bitmap.Config.ARGB_8888;
+    private static final int COLORDRAWABLE_DIMENSION = 1;
+
+    private static final int DEFAULT_BORDER_WIDTH = 0;
+    private static final int DEFAULT_BORDER_COLOR = Color.BLACK;
+
+    private final RectF mDrawableRect = new RectF();
+    private final RectF mBorderRect = new RectF();
+
+    private final Matrix mShaderMatrix = new Matrix();
+    private final Paint mBitmapPaint = new Paint();
+    private final Paint mBorderPaint = new Paint();
+
+    private int mBorderColor = DEFAULT_BORDER_COLOR;
+    private int mBorderWidth = DEFAULT_BORDER_WIDTH;
+
+    private Bitmap mBitmap;
+    private BitmapShader mBitmapShader;
+    private int mBitmapWidth;
+    private int mBitmapHeight;
+
+    private float mDrawableRadius;
+    private float mBorderRadius;
+
+    private boolean mReady;
+    private boolean mSetupPending;
+
+    //默认显示圆形
+    private boolean isDisplayCircle = true;
+
+    public CircleImageView(Context context) {
+        this(context, null);
+    }
+
+    public CircleImageView(Context context, AttributeSet attrs) {
+        this(context, attrs, 0);
+    }
+
+    public CircleImageView(Context context, AttributeSet attrs, int defStyle) {
+        super(context, attrs, defStyle);
+        super.setScaleType(SCALE_TYPE);
+
+        TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.CircleImageView, defStyle, 0);
+
+        mBorderWidth = a.getDimensionPixelSize(R.styleable.CircleImageView_border_width, DEFAULT_BORDER_WIDTH);
+        mBorderColor = a.getColor(R.styleable.CircleImageView_border_color, DEFAULT_BORDER_COLOR);
+
+        a.recycle();
+
+        mReady = true;
+
+        if (mSetupPending) {
+            setup();
+            mSetupPending = false;
+        }
+    }
+
+    @Override
+    public ScaleType getScaleType() {
+        return SCALE_TYPE;
+    }
+
+    @Override
+    public void setScaleType(ScaleType scaleType) {
+        if (scaleType != SCALE_TYPE) {
+            throw new IllegalArgumentException(String.format("ScaleType %s not supported.", scaleType));
+        }
+    }
+
+    @Override
+    protected void onDraw(Canvas canvas) {
+        if(!isDisplayCircle) {
+            super.onDraw(canvas);
+            return;
+        }
+        if (getDrawable() == null) {
+            return;
+        }
+
+        canvas.drawCircle(getWidth() / 2, getHeight() / 2, mDrawableRadius, mBitmapPaint);
+        if(mBorderWidth != 0){
+          canvas.drawCircle(getWidth() / 2, getHeight() / 2, mBorderRadius, mBorderPaint);
+        }
+    }
+
+    @Override
+    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
+        super.onSizeChanged(w, h, oldw, oldh);
+        setup();
+    }
+
+    public void setDisplayCircle(boolean isDisplayCircle) {
+        this.isDisplayCircle = isDisplayCircle;
+    }
+
+    public int getBorderColor() {
+        return mBorderColor;
+    }
+
+    public void setBorderColor(int borderColor) {
+        if (borderColor == mBorderColor) {
+            return;
+        }
+
+        mBorderColor = borderColor;
+        mBorderPaint.setColor(mBorderColor);
+        invalidate();
+    }
+
+    public int getBorderWidth() {
+        return mBorderWidth;
+    }
+    
+    public void setBorderWidth(int borderWidth) {
+        if (borderWidth == mBorderWidth) {
+            return;
+        }
+
+        mBorderWidth = borderWidth;
+        setup();
+    }
+
+    @Override
+    public void setImageBitmap(Bitmap bm) {
+        super.setImageBitmap(bm);
+        mBitmap = bm;
+        setup();
+    }
+
+    @Override
+    public void setImageDrawable(Drawable drawable) {
+        super.setImageDrawable(drawable);
+        mBitmap = getBitmapFromDrawable(drawable);
+        setup();
+    }
+
+    @Override
+    public void setImageResource(int resId) {
+        super.setImageResource(resId);
+        mBitmap = getBitmapFromDrawable(getDrawable());
+        setup();
+    }
+
+    private Bitmap getBitmapFromDrawable(Drawable drawable) {
+        if (drawable == null) {
+            return null;
+        }
+
+        if (drawable instanceof BitmapDrawable) {
+            return ((BitmapDrawable) drawable).getBitmap();
+        }
+
+        try {
+            Bitmap bitmap;
+
+            if (drawable instanceof ColorDrawable) {
+                bitmap = Bitmap.createBitmap(COLORDRAWABLE_DIMENSION, COLORDRAWABLE_DIMENSION, BITMAP_CONFIG);
+            } else {
+                bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), BITMAP_CONFIG);
+            }
+
+            Canvas canvas = new Canvas(bitmap);
+            drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
+            drawable.draw(canvas);
+            return bitmap;
+        } catch (OutOfMemoryError e) {
+            return null;
+        }
+    }
+
+    private void setup() {
+        if (!mReady) {
+            mSetupPending = true;
+            return;
+        }
+
+        if (mBitmap == null) {
+            return;
+        }
+
+        mBitmapShader = new BitmapShader(mBitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);
+
+        mBitmapPaint.setAntiAlias(true);
+        mBitmapPaint.setShader(mBitmapShader);
+
+        mBorderPaint.setStyle(Paint.Style.STROKE);
+        mBorderPaint.setAntiAlias(true);
+        mBorderPaint.setColor(mBorderColor);
+        mBorderPaint.setStrokeWidth(mBorderWidth);
+
+        mBitmapHeight = mBitmap.getHeight();
+        mBitmapWidth = mBitmap.getWidth();
+
+        mBorderRect.set(0, 0, getWidth(), getHeight());
+        mBorderRadius = Math.min((mBorderRect.height() - mBorderWidth) / 2, (mBorderRect.width() - mBorderWidth) / 2);
+
+        mDrawableRect.set(mBorderWidth, mBorderWidth, mBorderRect.width() - mBorderWidth, mBorderRect.height() - mBorderWidth);
+        mDrawableRadius = Math.min(mDrawableRect.height() / 2, mDrawableRect.width() / 2);
+
+        updateShaderMatrix();
+        invalidate();
+    }
+
+    private void updateShaderMatrix() {
+        float scale;
+        float dx = 0;
+        float dy = 0;
+
+        mShaderMatrix.set(null);
+
+        if (mBitmapWidth * mDrawableRect.height() > mDrawableRect.width() * mBitmapHeight) {
+            scale = mDrawableRect.height() / (float) mBitmapHeight;
+            dx = (mDrawableRect.width() - mBitmapWidth * scale) * 0.5f;
+        } else {
+            scale = mDrawableRect.width() / (float) mBitmapWidth;
+            dy = (mDrawableRect.height() - mBitmapHeight * scale) * 0.5f;
+        }
+
+        mShaderMatrix.setScale(scale, scale);
+        mShaderMatrix.postTranslate((int) (dx + 0.5f) + mBorderWidth, (int) (dy + 0.5f) + mBorderWidth);
+
+        mBitmapShader.setLocalMatrix(mShaderMatrix);
+    }
+
+}
\ No newline at end of file
diff --git a/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/widget/HTQDragGridView.java b/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/widget/HTQDragGridView.java
new file mode 100644
index 0000000..ce2ad8f
--- /dev/null
+++ b/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/widget/HTQDragGridView.java
@@ -0,0 +1,682 @@
+package com.example.administrator.myapplication.widget;
+
+import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
+import android.animation.AnimatorSet;
+import android.animation.ObjectAnimator;
+import android.app.Activity;
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.graphics.Canvas;
+import android.graphics.PixelFormat;
+import android.graphics.Rect;
+import android.os.Handler;
+import android.os.Vibrator;
+import android.util.AttributeSet;
+import android.view.Gravity;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewTreeObserver;
+import android.view.ViewTreeObserver.OnPreDrawListener;
+import android.view.WindowManager;
+import android.view.animation.AccelerateDecelerateInterpolator;
+import android.widget.AdapterView;
+import android.widget.GridView;
+import android.widget.ImageView;
+import android.widget.ListAdapter;
+
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * 感谢这篇博客的作者，http://blog.csdn.net/xiaanming/article/details/17718579<br>
+ * 在这个基础上解决了原作者的问题:Adapter无法使用ViewHolder优化的问题，优化了手势识别率，并添加了trashView功能，
+ * 优化自定义控件对外扩展性，解决在上下拉环境下手势冲突问题<br>
+ * 
+ *
+ */
+public class HTQDragGridView extends GridView {
+
+    private long dragResponseMS = 700; // item长按响应的时间
+    private int mDragPosition;// 正在拖拽的position
+
+    private boolean isDrag = false; // 是否可以拖拽，用于控件内部逻辑实现
+    private boolean canDrag = true; // 是否可用拖拽，主要用于外部开放设置
+    private boolean mAnimationEnd = true;
+
+    private int mDownX;
+    private int mDownY;
+    private int moveX;
+    private int moveY;
+
+    private View mStartDragItemView = null; // 刚开始拖拽的item对应的View
+    private ImageView mDragImageView; // 用于拖拽时显示的幻影镜像
+    private Bitmap mDragBitmap; // 幻影镜像对应的Bitmap
+    private View mTrashView; // 删除item的垃圾桶图标
+
+    private final Vibrator mVibrator; // 震动器
+    private final int mStatusHeight;// 状态栏的高度
+    private final WindowManager mWindowManager;
+    private WindowManager.LayoutParams mWindowLayoutParams; // item镜像的布局参数
+
+    private int mPoint2ItemTop; // 按下的点到所在item的上边缘的距离
+    private int mPoint2ItemLeft;
+    private int mOffset2Top; // DragGridView距离屏幕顶部的偏移量
+    private int mOffset2Left;
+
+    private int mDownScrollBorder; // DragGridView自动向下滚动的边界值
+    private int mUpScrollBorder; // DragGridView自动向上滚动的边界值
+
+    private DragGridBaseAdapter mDragAdapter;
+    private int mNumColumns;
+    private int mColumnWidth;
+    private boolean mNumColumnsSet;
+    private int mHorizontalSpacing;
+
+    private static final int speed = 20; // DragGridView自动滚动的速度
+    private static final int MOVE_OFFSET = 25;
+    private boolean moved = false;
+
+    public static final int HANDLE_START = 0x3587;
+    public static final int HANDLE_CANCLE = 0x3588;
+    public static final int HANDLE_FINISH = 0x3589;
+    private static OnMoveListener moveListener; // 拖拽开始与结束监听器
+    private OnDeleteListener deleteListener; // 移动到垃圾桶时的监听器
+
+    private final TouchRect moveRect = new TouchRect();
+    private final TouchRect gridRect = new TouchRect();
+    private final TouchRect trashRect = new TouchRect();
+
+    public HTQDragGridView(Context context) {
+        this(context, null);
+    }
+
+    public HTQDragGridView(Context context, AttributeSet attrs) {
+        this(context, attrs, 0);
+    }
+
+    public HTQDragGridView(Context context, AttributeSet attrs, int defStyle) {
+        super(context, attrs, defStyle);
+        mVibrator = (Vibrator) context
+                .getSystemService(Context.VIBRATOR_SERVICE);
+        mWindowManager = (WindowManager) context
+                .getSystemService(Context.WINDOW_SERVICE);
+        mStatusHeight = getStatusHeight(context); // 获取状态栏的高度
+
+        if (!mNumColumnsSet) {
+            mNumColumns = AUTO_FIT;
+        }
+    }
+
+    /**
+     * 获取状态栏的高度
+     * 
+     * @param context
+     * @return
+     */
+    private static int getStatusHeight(Context context) {
+        int statusHeight = 0;
+        Rect localRect = new Rect();
+
+        ((Activity) context).getWindow().getDecorView()
+                .getWindowVisibleDisplayFrame(localRect);
+        statusHeight = localRect.top;
+        if (0 == statusHeight) {
+            Class<?> localClass;
+            try {
+                localClass = Class.forName("com.android.internal.R$dimen");
+                Object localObject = localClass.newInstance();
+                int i5 = Integer.parseInt(localClass
+                        .getField("status_bar_height").get(localObject)
+                        .toString());
+                statusHeight = context.getResources().getDimensionPixelSize(i5);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+        return statusHeight;
+    }
+
+    private static final Handler mHandler = new Handler() {
+        @Override
+        public void handleMessage(android.os.Message msg) {
+            if (moveListener != null) {
+                if (msg.what == HANDLE_START) {
+                    moveListener.startMove();
+                } else if (msg.what == HANDLE_FINISH) {
+                    moveListener.finishMove();
+                } else if (msg.what == HANDLE_CANCLE) {
+                    moveListener.cancleMove();
+                }
+            }
+        };
+    };
+
+    // 用来处理是否为长按的Runnable
+
+    private final Runnable mLongClickRunnable = new Runnable() {
+        @Override
+        public void run() {
+            if (!canDrag) {
+                return;
+            }
+            isDrag = true; // 设置可以拖拽
+            moved = true;
+            mHandler.sendEmptyMessage(HANDLE_START);
+            mVibrator.vibrate(50); // 震动一下
+
+            mStartDragItemView.setVisibility(View.INVISIBLE);// 隐藏该item
+
+            createDragImage(mDragBitmap, mDownX, mDownY);
+            mDragBitmap = null;
+        }
+    };
+
+    /**
+     * 若设置为AUTO_FIT，计算有多少列
+     */
+    @Override
+    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+        if (mNumColumns == AUTO_FIT) {
+            int numFittedColumns = 1; // 可用列
+
+            if (mColumnWidth > 0) {
+                int gridWidth = Math.max(MeasureSpec.getSize(widthMeasureSpec)
+                        - getPaddingLeft() - getPaddingRight(), 0);
+                numFittedColumns = gridWidth / mColumnWidth;
+                if (numFittedColumns > 0) {
+                    while (numFittedColumns != 1) {
+                        if (numFittedColumns * mColumnWidth
+                                + (numFittedColumns - 1) * mHorizontalSpacing > gridWidth) {
+                            numFittedColumns--;
+                        } else {
+                            break;
+                        }
+                    }
+                }
+            } else {
+                numFittedColumns = 2;
+            }
+            mNumColumns = numFittedColumns;
+        }
+        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
+    }
+
+    @Override
+    protected void onDraw(Canvas canvas) {
+        super.onDraw(canvas);
+        initRecord();
+    }
+
+    /**
+     * 初始化坐标数据
+     */
+    private void initRecord() {
+        gridRect.left = this.getLeft();
+        gridRect.right = this.getRight();
+        gridRect.top = this.getTop();
+        gridRect.bottom = this.getBottom();
+        if (mTrashView != null) {
+            trashRect.left = mTrashView.getLeft();
+            trashRect.right = mTrashView.getRight();
+            trashRect.bottom = mTrashView.getBottom();
+            trashRect.top = mTrashView.getTop();
+        }
+    }
+
+    /******************** preference method ********************/
+
+    @Override
+    public void setAdapter(ListAdapter adapter) {
+        super.setAdapter(adapter);
+
+        if (adapter instanceof DragGridBaseAdapter) {
+            mDragAdapter = (DragGridBaseAdapter) adapter;
+        } else {
+            throw new IllegalStateException(
+                    "the adapter must be implements DragGridAdapter");
+        }
+    }
+
+    @Override
+    public void setNumColumns(int numColumns) {
+        super.setNumColumns(numColumns);
+        mNumColumnsSet = true;
+        this.mNumColumns = numColumns;
+    }
+
+    @Override
+    public void setColumnWidth(int columnWidth) {
+        super.setColumnWidth(columnWidth);
+        mColumnWidth = columnWidth;
+    }
+
+    @Override
+    public void setHorizontalSpacing(int horizontalSpacing) {
+        super.setHorizontalSpacing(horizontalSpacing);
+        this.mHorizontalSpacing = horizontalSpacing;
+    }
+
+    /**
+     * 设置响应拖拽的毫秒数，默认是700毫秒
+     * 
+     * @param dragResponseMS
+     */
+    public void setDragResponseMS(long dragResponseMS) {
+        this.dragResponseMS = dragResponseMS;
+    }
+
+    public void setOnDeleteListener(OnDeleteListener l) {
+        this.deleteListener = l;
+    }
+
+    public void setTrashView(View trashView) {
+        this.mTrashView = trashView;
+    }
+
+    public void setDragEnable(boolean isDrag) {
+        this.canDrag = isDrag;
+        if (canDrag) {
+            mHandler.removeCallbacks(mLongClickRunnable);
+        }
+    }
+
+    /******************** touch method ********************/
+
+    @Override
+    public boolean dispatchTouchEvent(MotionEvent ev) {
+        if (canDrag) {
+            switch (ev.getAction()) {
+            case MotionEvent.ACTION_DOWN:
+                mDownX = (int) ev.getX();
+                mDownY = (int) ev.getY();
+                moveRect.left = mDownX - MOVE_OFFSET;
+                moveRect.right = mDownX + MOVE_OFFSET;
+                moveRect.top = mDownY - MOVE_OFFSET;
+                moveRect.bottom = mDownY + MOVE_OFFSET;
+
+                // 根据按下的X,Y坐标获取所点击item的position
+                mDragPosition = pointToPosition(mDownX, mDownY);
+
+                if (mDragPosition == AdapterView.INVALID_POSITION) {
+                    return super.dispatchTouchEvent(ev);
+                }
+
+                // 使用Handler延迟dragResponseMS执行mLongClickRunnable
+                mHandler.postDelayed(mLongClickRunnable, dragResponseMS);
+
+                // 根据position获取该item所对应的View
+                mStartDragItemView = getChildAt(mDragPosition
+                        - getFirstVisiblePosition());
+
+                mPoint2ItemTop = mDownY - mStartDragItemView.getTop();
+                mPoint2ItemLeft = mDownX - mStartDragItemView.getLeft();
+
+                mOffset2Top = (int) (ev.getRawY() - mDownY);
+                mOffset2Left = (int) (ev.getRawX() - mDownX);
+
+                // 获取DragGridView自动向上滚动的偏移量，小于这个值，DragGridView向下滚动
+                mDownScrollBorder = getHeight() / 5;
+                // 大于这个值，DragGridView向上滚动
+                mUpScrollBorder = getHeight() * 4 / 5;
+
+                // 开启mDragItemView绘图缓存
+                mStartDragItemView.setDrawingCacheEnabled(true);
+                // 获取mDragItemView在缓存中的Bitmap对象
+                mDragBitmap = Bitmap.createBitmap(mStartDragItemView
+                        .getDrawingCache());
+                // 这一步很关键，释放绘图缓存，避免出现重复的镜像
+                mStartDragItemView.destroyDrawingCache();
+                break;
+            case MotionEvent.ACTION_MOVE:
+                // 如果我们在按下的item上面移动，只要不超过item的边界我们就不移除mRunnable
+                if (!isTouchInItem(moveRect, ev.getX(), ev.getY())) {
+                    mHandler.removeCallbacks(mLongClickRunnable);
+                }
+                break;
+            case MotionEvent.ACTION_UP:
+                mHandler.removeCallbacks(mScrollRunnable);
+                mHandler.removeCallbacks(mLongClickRunnable);
+                if (moved && getAdapter().getCount() > 0) {
+                    mHandler.sendEmptyMessage(HANDLE_FINISH);
+                } else {
+                    mHandler.sendEmptyMessage(HANDLE_CANCLE);
+                }
+                moved = false;
+                break;
+            }
+        }
+        return super.dispatchTouchEvent(ev);
+    }
+
+    @Override
+    public boolean onTouchEvent(MotionEvent ev) {
+        if (isDrag && canDrag && mDragImageView != null) {
+            switch (ev.getAction()) {
+            case MotionEvent.ACTION_DOWN:
+                initRecord();
+                break;
+            case MotionEvent.ACTION_MOVE:
+                moveX = (int) ev.getX();
+                moveY = (int) ev.getY();
+
+                onDragItem(moveX, moveY);// 拖动item
+
+                if (mTrashView != null) {
+                    if (inTrash(moveX, moveY)) {
+                        mTrashView.setScaleX(1.7f);
+                        mTrashView.setScaleY(1.7f);
+                    } else {
+                        mTrashView.setScaleX(1f);
+                        mTrashView.setScaleY(1f);
+                    }
+                }
+                break;
+            case MotionEvent.ACTION_UP:
+                onStopDrag();
+                isDrag = false;
+                if (deleteListener != null && inTrash(ev.getX(), ev.getY())) {
+                    deleteListener.onDelete(mDragPosition);
+                }
+                break;
+            }
+            return true;
+        }
+        return super.onTouchEvent(ev);
+    }
+
+    /**
+     * 是否点击在GridView的item上面
+     *
+     * @param x
+     * @param y
+     * @return
+     */
+    private boolean isTouchInItem(TouchRect moveRect, float x, float y) {
+        // 防止手抖的处理，如果是横向在item上移动是没有影响的，
+        // 但是纵向由于外层上下拉控件还是会有影响，具体解决请看NoteBookFragment类中的mSwipeRefreshLayout.setOnTouchListener方法
+        if (x < moveRect.right && x > moveRect.left && y < moveRect.bottom
+                && y > moveRect.top) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+    /**
+     * 创建拖动的镜像
+     * 
+     * @param bitmap
+     * @param downX
+     *            按下的点相对父控件的X坐标
+     * @param downY
+     *            按下的点相对父控件的X坐标
+     */
+    private void createDragImage(Bitmap bitmap, int downX, int downY) {
+        mWindowLayoutParams = new WindowManager.LayoutParams();
+        mWindowLayoutParams.format = PixelFormat.TRANSLUCENT; // 图片之外的其他地方透明
+
+        mWindowLayoutParams.gravity = Gravity.TOP | Gravity.LEFT;
+        mWindowLayoutParams.x = downX - mPoint2ItemLeft + mOffset2Left;
+        mWindowLayoutParams.y = downY - mPoint2ItemTop + mOffset2Top
+                - mStatusHeight;
+        mWindowLayoutParams.alpha = 0.55f; // 透明度
+
+
+        mWindowLayoutParams.width = WindowManager.LayoutParams.WRAP_CONTENT;
+        mWindowLayoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
+        mWindowLayoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
+                | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE;
+
+        mDragImageView = new ImageView(getContext());
+        mDragImageView.setImageBitmap(bitmap);
+        mWindowManager.addView(mDragImageView, mWindowLayoutParams);
+    }
+
+    /**
+     * 从界面上面移动拖动镜像
+     */
+    private void removeDragImage() {
+        if (mDragImageView != null) {
+            mWindowManager.removeView(mDragImageView);
+            mDragImageView = null;
+        }
+    }
+
+    /**
+     * 拖动item，在里面实现了item镜像的位置更新，item的相互交换以及GridView的自行滚动
+     * 
+     * @param moveX
+     * @param moveY
+     */
+    private void onDragItem(int moveX, int moveY) {
+        mWindowLayoutParams.x = moveX - mPoint2ItemLeft + mOffset2Left;
+        mWindowLayoutParams.y = moveY - mPoint2ItemTop + mOffset2Top
+                - mStatusHeight;
+        mWindowManager.updateViewLayout(mDragImageView, mWindowLayoutParams); // 更新镜像的位置
+        onSwapItem(moveX, moveY);
+        // GridView自动滚动
+        mHandler.post(mScrollRunnable);
+    }
+
+    /**
+     * 手指当前处于垃圾桶图标上
+     * 
+     * @param x
+     * @param y
+     * @return
+     */
+    private boolean inTrash(float x, float y) {
+        x += gridRect.left;
+        y += gridRect.top;
+        if (x > trashRect.left && x < trashRect.right && y > trashRect.top
+                && y < trashRect.bottom) {
+            if (mHandler != null && mScrollRunnable != null) {
+                mHandler.removeCallbacks(mScrollRunnable);
+            }
+            if (mDragImageView != null) {
+                mDragImageView.setScaleX(0.6f);
+                mDragImageView.setScaleY(0.6f);
+            }
+            return true;
+        } else {
+            if (mDragImageView != null) {
+                mDragImageView.setScaleX(1f);
+                mDragImageView.setScaleY(1f);
+            }
+            return false;
+        }
+    }
+
+    /**
+     * 当moveY的值大于向上滚动的边界值，触发GridView自动向上滚动 当moveY的值小于向下滚动的边界值，触发GridView自动向下滚动
+     * 否则不进行滚动
+     */
+    private final Runnable mScrollRunnable = new Runnable() {
+
+        @Override
+        public void run() {
+            int scrollY;
+            if (getFirstVisiblePosition() == 0
+                    || getLastVisiblePosition() == getCount() - 1) {
+                mHandler.removeCallbacks(mScrollRunnable);
+            }
+
+            if (moveY > mUpScrollBorder) {
+                scrollY = speed;
+                mHandler.postDelayed(mScrollRunnable, 25);
+            } else if (moveY < mDownScrollBorder) {
+                scrollY = -speed;
+                mHandler.postDelayed(mScrollRunnable, 25);
+            } else {
+                scrollY = 0;
+                mHandler.removeCallbacks(mScrollRunnable);
+            }
+
+            smoothScrollBy(scrollY, 10);
+        }
+    };
+
+    /**
+     * 交换item,并且控制item之间的显示与隐藏效果
+     * 
+     * @param moveX
+     * @param moveY
+     */
+    private void onSwapItem(int moveX, int moveY) {
+        // 获取我们手指移动到的那个item的position
+
+        final int tempPosition = pointToPosition(moveX, moveY);
+
+        // 假如tempPosition 改变了并且tempPosition不等于-1,则进行交换
+
+        if (tempPosition != mDragPosition
+                && tempPosition != AdapterView.INVALID_POSITION
+                && mAnimationEnd) {
+            mDragAdapter.reorderItems(mDragPosition, tempPosition);
+            mDragAdapter.setHideItem(tempPosition);
+
+            final ViewTreeObserver observer = getViewTreeObserver();
+            observer.addOnPreDrawListener(new OnPreDrawListener() {
+
+                @Override
+                public boolean onPreDraw() {
+                    observer.removeOnPreDrawListener(this);
+                    animateReorder(mDragPosition, tempPosition);
+                    mDragPosition = tempPosition;
+                    return true;
+                }
+            });
+
+        }
+    }
+
+    /**
+     * 创建移动动画
+     * 
+     * @param view
+     * @param startX
+     * @param endX
+     * @param startY
+     * @param endY
+     * @return
+     */
+    private AnimatorSet createTranslationAnimations(View view, float startX,
+            float endX, float startY, float endY) {
+        ObjectAnimator animX = ObjectAnimator.ofFloat(view, "translationX",
+                startX, endX);
+        ObjectAnimator animY = ObjectAnimator.ofFloat(view, "translationY",
+                startY, endY);
+        AnimatorSet animSetXY = new AnimatorSet();
+        animSetXY.playTogether(animX, animY);
+        return animSetXY;
+    }
+
+    /**
+     * item的交换动画效果
+     * 
+     * @param oldPosition
+     * @param newPosition
+     */
+    private void animateReorder(final int oldPosition, final int newPosition) {
+        boolean isForward = newPosition > oldPosition;
+        List<Animator> resultList = new LinkedList<Animator>();
+        if (isForward) {
+            for (int pos = oldPosition; pos < newPosition; pos++) {
+                View view = getChildAt(pos - getFirstVisiblePosition());
+                if (view == null) {
+                    continue;
+                }
+                if ((pos + 1) % mNumColumns == 0) {
+                    resultList.add(createTranslationAnimations(view,
+                            -view.getWidth() * (mNumColumns - 1), 0,
+                            view.getHeight(), 0));
+                } else {
+                    resultList.add(createTranslationAnimations(view,
+                            view.getWidth(), 0, 0, 0));
+                }
+            }
+        } else {
+            for (int pos = oldPosition; pos > newPosition; pos--) {
+                View view = getChildAt(pos - getFirstVisiblePosition());
+                if ((pos + mNumColumns) % mNumColumns == 0) {
+                    resultList.add(createTranslationAnimations(view,
+                            view.getWidth() * (mNumColumns - 1), 0,
+                            -view.getHeight(), 0));
+                } else {
+                    resultList.add(createTranslationAnimations(view,
+                            -view.getWidth(), 0, 0, 0));
+                }
+            }
+        }
+
+        AnimatorSet resultSet = new AnimatorSet();
+        resultSet.playTogether(resultList);
+        resultSet.setDuration(300);
+        resultSet.setInterpolator(new AccelerateDecelerateInterpolator());
+        resultSet.addListener(new AnimatorListenerAdapter() {
+            @Override
+            public void onAnimationStart(Animator animation) {
+                mAnimationEnd = false;
+            }
+
+            @Override
+            public void onAnimationEnd(Animator animation) {
+                mAnimationEnd = true;
+            }
+        });
+        resultSet.start();
+    }
+
+    /**
+     * 停止拖拽我们将之前隐藏的item显示出来，并将镜像移除
+     */
+    private void onStopDrag() {
+        View view = getChildAt(mDragPosition - getFirstVisiblePosition());
+        if (view != null) {
+            view.setVisibility(View.VISIBLE);
+        }
+        mDragAdapter.setHideItem(-1);
+        removeDragImage();
+
+        if (mTrashView != null) {
+            mTrashView.setScaleX(1f);
+            mTrashView.setScaleY(1f);
+        }
+    }
+
+    public void setOnMoveListener(OnMoveListener l) {
+        moveListener = l;
+    }
+
+    public interface OnMoveListener {
+        void startMove();
+
+        void finishMove();
+
+        void cancleMove();
+    }
+
+    public interface OnDeleteListener {
+        void onDelete(int position);
+    }
+
+    public interface DragGridBaseAdapter {
+        /**
+         * 移动时回调
+         */
+        public void reorderItems(int oldPosition, int newPosition);
+
+        /**
+         * 隐藏时回调
+         */
+        public void setHideItem(int hidePosition);
+    }
+
+    private class TouchRect {
+        int top;
+        int bottom;
+        int left;
+        int right;
+    }
+}
\ No newline at end of file
diff --git a/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/widget/NoteItemCircleView.java b/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/widget/NoteItemCircleView.java
new file mode 100644
index 0000000..f1cb526
--- /dev/null
+++ b/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/widget/NoteItemCircleView.java
@@ -0,0 +1,31 @@
+package com.example.administrator.myapplication.widget;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.MotionEvent;
+
+/**
+ * 圆形ImageView组件 点击事件不会穿透
+ * 
+ * @author kymjs(kymjs123@gmail.com)
+ */
+public class NoteItemCircleView extends CircleImageView {
+
+    public NoteItemCircleView(Context context) {
+        super(context);
+    }
+
+    public NoteItemCircleView(Context context, AttributeSet attrs) {
+        this(context, attrs, 0);
+    }
+
+    public NoteItemCircleView(Context context, AttributeSet attrs, int defStyle) {
+        super(context, attrs, defStyle);
+    }
+
+    @Override
+    public boolean onTouchEvent(MotionEvent event) {
+        super.onTouchEvent(event);
+        return true;
+    }
+}
\ No newline at end of file
diff --git a/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/widget/ToggleButton.java b/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/widget/ToggleButton.java
new file mode 100644
index 0000000..ba43744
--- /dev/null
+++ b/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/widget/ToggleButton.java
@@ -0,0 +1,336 @@
+package com.example.administrator.myapplication.widget;
+
+import android.animation.ObjectAnimator;
+import android.animation.TypeEvaluator;
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.Paint;
+import android.graphics.Paint.Cap;
+import android.graphics.Paint.Style;
+import android.graphics.RectF;
+import android.os.Build;
+import android.util.AttributeSet;
+import android.util.Property;
+import android.view.View;
+import android.view.animation.DecelerateInterpolator;
+import android.view.animation.Interpolator;
+
+import com.example.administrator.myapplication.R;
+
+
+/**
+ * @author Qiujuer
+ */
+public class ToggleButton extends View {
+    /** */
+    private float radius;
+    /**
+     * 开启颜色
+     */
+    private int onColor = Color.parseColor("#4ebb7f");
+    /**
+     * 关闭颜色
+     */
+    private int offBorderColor = Color.parseColor("#dadbda");
+    /**
+     * 灰色带颜色
+     */
+    private int offColor = Color.parseColor("#ffffff");
+    /**
+     * 手柄颜色
+     */
+    private int spotColor = Color.parseColor("#ffffff");
+    /**
+     * 边框颜色
+     */
+    private int borderColor = offBorderColor;
+    /**
+     * 画笔
+     */
+    private Paint paint;
+    /**
+     * 开关状态
+     */
+    private boolean toggleOn = false;
+    /**
+     * 边框大小
+     */
+    private int borderWidth = 2;
+    /**
+     * 垂直中心
+     */
+    private float centerY;
+    /**
+     * 按钮的开始和结束位置
+     */
+    private float startX, endX;
+    /**
+     * 手柄X位置的最小和最大值
+     */
+    private float spotMinX, spotMaxX;
+    /**
+     * 手柄大小
+     */
+    private int spotSize;
+    /**
+     * 手柄X位置
+     */
+    private float spotX;
+    /**
+     * 关闭时内部灰色带高度
+     */
+    private float offLineWidth;
+    /** */
+    private RectF rect = new RectF();
+
+    private OnToggleChanged listener;
+
+    private ToggleButton(Context context) {
+        super(context);
+    }
+
+    public ToggleButton(Context context, AttributeSet attrs, int defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+        setup(attrs);
+    }
+
+    public ToggleButton(Context context, AttributeSet attrs) {
+        super(context, attrs);
+        setup(attrs);
+    }
+
+    public void setup(AttributeSet attrs) {
+        paint = new Paint(Paint.ANTI_ALIAS_FLAG);
+        paint.setStyle(Style.FILL);
+        paint.setStrokeCap(Cap.ROUND);
+
+        this.setOnClickListener(new OnClickListener() {
+            @Override
+            public void onClick(View arg0) {
+                toggle();
+            }
+        });
+
+        TypedArray typedArray = getContext().obtainStyledAttributes(attrs, R.styleable.ToggleButton);
+        offBorderColor = typedArray.getColor(R.styleable.ToggleButton_offBorderColor, offBorderColor);
+        onColor = typedArray.getColor(R.styleable.ToggleButton_onColor, onColor);
+        spotColor = typedArray.getColor(R.styleable.ToggleButton_spotColor, spotColor);
+        offColor = typedArray.getColor(R.styleable.ToggleButton_offColor, offColor);
+        borderWidth = typedArray.getDimensionPixelSize(R.styleable.ToggleButton_toggle_border_width, borderWidth);
+        typedArray.recycle();
+    }
+
+    public void toggle() {
+        toggleOn = !toggleOn;
+        animateCheckedState(toggleOn);
+        if (listener != null) {
+            listener.onToggle(toggleOn);
+        }
+    }
+
+    public void toggleOn() {
+        setToggleOn();
+        if (listener != null) {
+            listener.onToggle(toggleOn);
+        }
+    }
+
+    public void toggleOff() {
+        setToggleOff();
+        if (listener != null) {
+            listener.onToggle(toggleOn);
+        }
+    }
+
+    /**
+     * 设置显示成打开样式，不会触发toggle事件
+     */
+    public void setToggleOn() {
+        toggleOn = true;
+        setAnimatorProperty(true);
+    }
+
+    /**
+     * 设置显示成关闭样式，不会触发toggle事件
+     */
+    public void setToggleOff() {
+        toggleOn = false;
+        setAnimatorProperty(false);
+    }
+
+    @Override
+    protected void onLayout(boolean changed, int left, int top, int right,
+                            int bottom) {
+        super.onLayout(changed, left, top, right, bottom);
+
+        final int width = getWidth();
+        final int height = getHeight();
+        radius = Math.min(width, height) * 0.5f;
+        centerY = radius;
+        startX = radius;
+        endX = width - radius;
+        spotMinX = startX + borderWidth;
+        spotMaxX = endX - borderWidth;
+        spotSize = height - 4 * borderWidth;
+
+        // update values
+        setAnimatorProperty(toggleOn);
+    }
+
+    @Override
+    public void draw(Canvas canvas) {
+        super.draw(canvas);
+        rect.set(0, 0, getWidth(), getHeight());
+        paint.setColor(borderColor);
+        canvas.drawRoundRect(rect, radius, radius, paint);
+
+        if (offLineWidth > 0) {
+            final float cy = offLineWidth * 0.5f;
+            rect.set(spotX - cy, centerY - cy, endX + cy, centerY + cy);
+            paint.setColor(offColor);
+            canvas.drawRoundRect(rect, cy, cy, paint);
+        }
+
+        rect.set(spotX - 1 - radius, centerY - radius, spotX + 1.1f + radius, centerY + radius);
+        paint.setColor(borderColor);
+        canvas.drawRoundRect(rect, radius, radius, paint);
+
+        final float spotR = spotSize * 0.5f;
+        rect.set(spotX - spotR, centerY - spotR, spotX + spotR, centerY + spotR);
+        paint.setColor(spotColor);
+        canvas.drawRoundRect(rect, spotR, spotR, paint);
+    }
+
+    /**
+     * =============================================================================================
+     * The Animate
+     * =============================================================================================
+     */
+    private static final Interpolator ANIMATION_INTERPOLATOR = new DecelerateInterpolator();
+    private static final int ANIMATION_DURATION = 280;
+    private ObjectAnimator mAnimator;
+
+    private void animateCheckedState(boolean newCheckedState) {
+        AnimatorProperty property = new AnimatorProperty();
+        if (newCheckedState) {
+            property.color = onColor;
+            property.offLineWidth = 10;
+            property.spotX = spotMaxX;
+        } else {
+            property.color = offBorderColor;
+            property.offLineWidth = spotSize;
+            property.spotX = spotMinX;
+        }
+
+        if (mAnimator == null) {
+            mAnimator = ObjectAnimator.ofObject(this, ANIM_VALUE, new AnimatorEvaluator(mCurProperty), property);
+            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2)
+                mAnimator.setAutoCancel(true);
+            mAnimator.setDuration(ANIMATION_DURATION);
+            mAnimator.setInterpolator(ANIMATION_INTERPOLATOR);
+        } else {
+            mAnimator.cancel();
+            mAnimator.setObjectValues(property);
+        }
+        mAnimator.start();
+    }
+
+    /**
+     * =============================================================================================
+     * The custom properties
+     * =============================================================================================
+     */
+
+    private AnimatorProperty mCurProperty = new AnimatorProperty();
+
+    private void setAnimatorProperty(AnimatorProperty property) {
+        this.spotX = property.spotX;
+        this.borderColor = property.color;
+        this.offLineWidth = property.offLineWidth;
+        invalidate();
+    }
+
+    private void setAnimatorProperty(boolean isOn) {
+        AnimatorProperty property = mCurProperty;
+        if (isOn) {
+            property.color = onColor;
+            property.offLineWidth = 10;
+            property.spotX = spotMaxX;
+        } else {
+            property.color = offBorderColor;
+            property.offLineWidth = spotSize;
+            property.spotX = spotMinX;
+        }
+        setAnimatorProperty(property);
+    }
+
+    private final static class AnimatorProperty {
+        private int color;
+        private float offLineWidth;
+        private float spotX;
+    }
+
+    private final static class AnimatorEvaluator implements TypeEvaluator<AnimatorProperty> {
+        private final AnimatorProperty mProperty;
+
+        public AnimatorEvaluator(AnimatorProperty property) {
+            mProperty = property;
+        }
+
+        @Override
+        public AnimatorProperty evaluate(float fraction, AnimatorProperty startValue, AnimatorProperty endValue) {
+            // Values
+            mProperty.spotX = (int) (startValue.spotX + (endValue.spotX - startValue.spotX) * fraction);
+
+            mProperty.offLineWidth = (int) (startValue.offLineWidth + (endValue.offLineWidth - startValue.offLineWidth) * (1 - fraction));
+
+            // Color
+            int startA = (startValue.color >> 24) & 0xff;
+            int startR = (startValue.color >> 16) & 0xff;
+            int startG = (startValue.color >> 8) & 0xff;
+            int startB = startValue.color & 0xff;
+
+            int endA = (endValue.color >> 24) & 0xff;
+            int endR = (endValue.color >> 16) & 0xff;
+            int endG = (endValue.color >> 8) & 0xff;
+            int endB = endValue.color & 0xff;
+
+            mProperty.color = (startA + (int) (fraction * (endA - startA))) << 24 |
+                    (startR + (int) (fraction * (endR - startR))) << 16 |
+                    (startG + (int) (fraction * (endG - startG))) << 8 |
+                    (startB + (int) (fraction * (endB - startB)));
+
+            return mProperty;
+        }
+    }
+
+    private final static Property<ToggleButton, AnimatorProperty> ANIM_VALUE = new Property<ToggleButton, AnimatorProperty>(AnimatorProperty.class, "animValue") {
+        @Override
+        public AnimatorProperty get(ToggleButton object) {
+            return object.mCurProperty;
+        }
+
+        @Override
+        public void set(ToggleButton object, AnimatorProperty value) {
+            object.setAnimatorProperty(value);
+        }
+    };
+
+
+    /**
+     * @author ThinkPad
+     */
+    public interface OnToggleChanged {
+        /**
+         * @param on
+         */
+        public void onToggle(boolean on);
+    }
+
+
+    public void setOnToggleChanged(OnToggleChanged onToggleChanged) {
+        listener = onToggleChanged;
+    }
+}
diff --git a/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/widget/patternlock/LockPatternView.java b/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/widget/patternlock/LockPatternView.java
new file mode 100644
index 0000000..e0524ad
--- /dev/null
+++ b/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/widget/patternlock/LockPatternView.java
@@ -0,0 +1,399 @@
+package com.example.administrator.myapplication.widget.patternlock;
+
+import android.app.Activity;
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.Canvas;
+import android.graphics.Matrix;
+import android.graphics.Paint;
+import android.support.design.widget.Snackbar;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.Display;
+import android.view.MotionEvent;
+import android.view.View;
+
+import com.example.administrator.myapplication.R;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+public class LockPatternView extends View {
+    //判断线的状态
+    private  boolean isLineState = true;
+    //判断点是否被实例化了
+    private  boolean isInitPoint = false;//不能被定义为static，否则很可能导致mPoints内存泄漏
+    //判断手指是否离开屏幕
+    private  boolean isFinish = false;
+    //判断手指点击屏幕时是否选中了九宫格中的点
+    private  boolean isSelect = false;
+    // 创建MyPoint的数组
+    private Point[][] mPoints;
+    // 声明屏幕的宽和高
+    private int mScreenHeight;
+    private int mScreenWidth;
+    // 声明点线的图片的半径
+    private float mPointRadius;
+    // 声明线的图片的高（即是半径）
+    private float mLineHeight;
+    // 声明鼠标移动的x，y坐标
+    private float mMoveX, mMoveY;
+    // 声明屏幕上的宽和高的偏移量
+    private int mScreenHeightOffSet = 0;
+    private int mScreenWidthOffSet = 0;
+    // 创建一个画笔
+    private Paint mPaint;
+    // 声明资源图片
+    private Bitmap mBitmapNormal;
+    private Bitmap mBitmapPressed;
+    private Bitmap mBitmapError;
+    private Bitmap mLinePressed;
+    private Bitmap mLineError;
+    // 创建一个矩阵
+    private Matrix mMatrix = new Matrix();
+    // 创建MyPoint的列表
+    private List<Point> mPointList = new ArrayList<Point>();
+    // 实例化鼠标点
+    private Point mMousePoint = new Point();
+    // 用获取从activity中传过来的密码字符串
+    private String mPassword = "";
+
+    private Context mContext;
+    private OnLockListener mListener;
+    private Activity activity;
+
+    public LockPatternView(Context context, AttributeSet attrs, int defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+        mContext = context;
+        mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
+        mPoints = new Point[3][3];
+    }
+
+    public LockPatternView(Context context, AttributeSet attrs) {
+        super(context, attrs);
+        mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
+        mPoints = new Point[3][3];
+    }
+
+    public LockPatternView(Context context) {
+        super(context);
+        mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
+        mPoints = new Point[3][3];
+    }
+
+    /**
+     * 画点和画线
+     */
+    @Override
+    protected void onDraw(Canvas canvas) {
+        super.onDraw(canvas);
+        if (!isInitPoint) {
+            initPoint(); // 先初始化
+        }
+        canvasPoint(canvas); // 开始画点
+
+        // 开始画线
+        if (mPointList.size() > 0) {
+            Point b = null;
+            Point a = mPointList.get(0);
+            for (int i = 1; i < mPointList.size(); i++) {
+                b = mPointList.get(i);
+                canvasLine(a, b, canvas);
+                a = b;
+            }
+            if (!isFinish) {
+                canvasLine(a, mMousePoint, canvas);
+            }
+        }
+        if(isFinish)
+        {
+
+            try {
+                Thread.sleep(700);
+            } catch (InterruptedException e) {
+                e.printStackTrace();
+            }
+            changePointToNormal();
+            postInvalidate();
+        }
+    }
+
+
+    /**
+     * @author htq
+     */
+    @Override
+    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+
+        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
+       //
+        Display d=activity.getWindowManager().getDefaultDisplay();
+        setMeasuredDimension(d.getWidth(),d.getWidth());
+    }
+
+
+    /**
+     * 手指点击手机屏幕
+     */
+    @Override
+    public boolean onTouchEvent(MotionEvent event) {
+        mMoveX = event.getX();
+        mMoveY = event.getY();
+        // 设置移动点的坐标
+        mMousePoint.setX(mMoveX);
+        mMousePoint.setY(mMoveY);
+        Point mPoint = null;
+        switch (event.getAction()) {
+            case MotionEvent.ACTION_DOWN:
+                isLineState = true;
+                isFinish = false;
+//                // 每次点击时就会将pointList中元素设置转化成普通状态
+//                for (int i = 0; i < mPointList.size(); i++) {
+//                    mPointList.get(i).setState(Point.BITMAP_NORMAL);
+//                }
+//                // 将pointList中的元素清除掉
+//                mPointList.clear();
+                changePointToNormal();
+                // 判断是否点中了九宫格中的点
+                mPoint = getIsSelectedPoint(mMoveX, mMoveY);
+                if (mPoint != null) {
+                    isSelect = true;
+                }
+                break;
+            case MotionEvent.ACTION_MOVE:
+                if (isSelect == true) {
+                    mPoint = getIsSelectedPoint(mMoveX, mMoveY);
+                }
+
+                break;
+            case MotionEvent.ACTION_UP:
+                isFinish = true;
+                isSelect = false;
+                // 规定至少要有4个点被连线才有可能是正确
+                // 其他种情况都是错误的
+                if (mPointList.size() >= 4) {// 正确情况
+                    for (int j = 0; j < mPointList.size(); j++) {
+                        mPassword += mPointList.get(j).getIndex();
+                    }
+                    Log.i("password",mPassword);
+                    //将连线后得到的密码传给activity
+                    mListener.getStringPassword(mPassword);
+                    mPassword = "";
+                    //经过activity判断传过来是否正确
+                    if (mListener.isPassword()) {
+                        for (int i = 0; i < mPointList.size(); i++) {
+                            mPointList.get(i).setState(com.example.administrator.myapplication.widget.patternlock.Point.BITMAP_PRESS);
+
+                        }
+                        isLineState = true;
+                    } else {
+                        for (int i = 0; i < mPointList.size(); i++) {
+                            mPointList.get(i).setState(com.example.administrator.myapplication.widget.patternlock.Point.BITMAP_ERROR);
+
+                        }
+                        Log.i("correct","is not correct");
+                        isLineState = false;
+                    }
+                    // 错误情况
+                } else if (mPointList.size() < 4 && mPointList.size() > 1) {
+                    for (int i = 0; i < mPointList.size(); i++) {
+                        mPointList.get(i).setState(com.example.administrator.myapplication.widget.patternlock.Point.BITMAP_ERROR);
+                        Snackbar.make(this,"为了您的App安全，手势至少得包含4个点",Snackbar.LENGTH_LONG).show();
+                    }
+                    isLineState = false;
+                    // 如果只有一个点被点中时为普通情况
+                } else if (mPointList.size() == 1) {
+                    for (int i = 0; i < mPointList.size(); i++) {
+                        mPointList.get(i).setState(com.example.administrator.myapplication.widget.patternlock.Point.BITMAP_NORMAL);
+                    }
+                }
+                break;
+
+        }
+        // 将mPoint添加到pointList中
+        if (isSelect && mPoint != null) {
+            if (mPoint.getState() == com.example.administrator.myapplication.widget.patternlock.Point.BITMAP_NORMAL) {
+                mPoint.setState(com.example.administrator.myapplication.widget.patternlock.Point.BITMAP_PRESS);
+                mPointList.add(mPoint);
+            }
+        }
+//        Log.i("draw","draw -----");
+        // 每次发生OnTouchEvent()后都刷新View
+        postInvalidate();
+        return true;
+    }
+
+    /**
+     * @author htq
+     */
+    private void changePointToNormal()
+    {
+        // 每次点击时就会将pointList中元素设置转化成普通状态
+        for (int i = 0; i < mPointList.size(); i++) {
+            mPointList.get(i).setState(com.example.administrator.myapplication.widget.patternlock.Point.BITMAP_NORMAL);
+        }
+        // 将pointList中的元素清除掉
+        mPointList.clear();
+    }
+
+    /**
+     * 判断九宫格中的某个点是否被点中了，或者某个点能否被连线
+     *
+     * @param moveX
+     * @param moveY
+     * @return
+     */
+    private Point getIsSelectedPoint(float moveX, float moveY) {
+        Point myPoint = null;
+        for (int i = 0; i < mPoints.length; i++) {
+            for (int j = 0; j < mPoints[i].length; j++) {
+                if (mPoints[i][j].isWith(mPoints[i][j], moveX, moveY,
+                        mPointRadius)) {
+                    myPoint = mPoints[i][j];
+                }
+            }
+        }
+
+        return myPoint;
+    }
+
+    /**
+     * 画线
+     *
+     * @param a      起始点
+     * @param b      目的点
+     * @param canvas 画布
+     */
+    private void canvasLine(Point a, Point b, Canvas canvas) {
+        // Math.sqrt(平方+平方)
+        float abInstance = (float) Math.sqrt(
+                (a.getX() - b.getX()) * (a.getX() - b.getX())
+                        + (a.getY() - b.getY()) * (a.getY() - b.getY())
+        );
+        canvas.rotate(com.example.administrator.myapplication.widget.patternlock.RotateDegrees.getDegrees(a, b), a.getX(), a.getY());
+
+        mMatrix.setScale(abInstance / mLineHeight, 1);
+        mMatrix.postTranslate(a.getX(), a.getY());
+        if (isLineState) {
+            canvas.drawBitmap(mLinePressed, mMatrix, mPaint);
+        } else {
+            canvas.drawBitmap(mLineError, mMatrix, mPaint);
+        }
+
+        canvas.rotate(-com.example.administrator.myapplication.widget.patternlock.RotateDegrees.getDegrees(a, b), a.getX(), a.getY());
+    }
+
+    /**
+     * 画点
+     *
+     * @param canvas
+     */
+    private void canvasPoint(Canvas canvas) {
+
+        for (int i = 0; i < mPoints.length; i++) {
+            for (int j = 0; j < mPoints[i].length; j++) {
+                if (mPoints[i][j].getState() == com.example.administrator.myapplication.widget.patternlock.Point.BITMAP_NORMAL) {
+                    canvas.drawBitmap(mBitmapNormal,
+                            mPoints[i][j].getX() - mPointRadius,
+                            mPoints[i][j].getY() - mPointRadius, mPaint);
+                } else if (mPoints[i][j].getState() == com.example.administrator.myapplication.widget.patternlock.Point.BITMAP_PRESS) {
+                    canvas.drawBitmap(mBitmapPressed,
+                            mPoints[i][j].getX() - mPointRadius,
+                            mPoints[i][j].getY() - mPointRadius, mPaint);
+                } else {
+                    canvas.drawBitmap(mBitmapError,
+                            mPoints[i][j].getX() - mPointRadius,
+                            mPoints[i][j].getY() - mPointRadius, mPaint);
+                }
+            }
+        }
+    }
+
+    /**
+     * 实例化九宫格中所有点和所有的资源图片
+     */
+    private void initPoint() {
+        // 获取View的宽高
+        mScreenWidth = getWidth();
+        mScreenHeight = getHeight();
+        if (mScreenHeight > mScreenWidth) {
+            // 获取y轴上的偏移量
+            mScreenHeightOffSet = (mScreenHeight - mScreenWidth) / 2;
+            // 将屏幕高的变量设置成与宽相等，目的是为了new Point(x,y)时方便操作
+            mScreenHeight = mScreenWidth;
+        } else {
+            // 获取x轴上的偏移量
+            mScreenWidthOffSet = (mScreenWidth - mScreenHeight) / 2;
+            // 将屏幕宽的变量设置成与高相等，目的是为了new Point(x,y)时方便操作
+            mScreenWidth = mScreenHeight;
+        }
+
+        /**
+         * 实例化所有的资源图片
+         */
+        mBitmapError = BitmapFactory.decodeResource(getResources(), R.drawable.bitmap_error);
+        mBitmapNormal = BitmapFactory.decodeResource(getResources(), R.drawable.bitmap_normal);
+        mBitmapPressed = BitmapFactory.decodeResource(getResources(), R.drawable.bitmap_pressed);
+        mLineError = BitmapFactory.decodeResource(getResources(), R.drawable.line_error);
+        mLinePressed = BitmapFactory.decodeResource(getResources(), R.drawable.line_pressed);
+
+        mPointRadius = mBitmapNormal.getWidth() / 2;
+        mLineHeight = mLinePressed.getHeight();
+
+        /**
+         * 开始实例化九宫格中点
+         */
+        mPoints[0][0] = new Point(mScreenWidthOffSet + mScreenWidth / 4,
+                mScreenHeightOffSet + mScreenHeight / 4);
+        mPoints[0][1] = new Point(mScreenWidthOffSet + mScreenWidth / 2,
+                mScreenHeightOffSet + mScreenHeight / 4);
+        mPoints[0][2] = new Point(mScreenWidthOffSet + mScreenWidth * 3 / 4,
+                mScreenHeightOffSet + mScreenHeight / 4);
+
+        mPoints[1][0] = new Point(mScreenWidthOffSet + mScreenWidth / 4,
+                mScreenHeightOffSet + mScreenHeight / 2);
+        mPoints[1][1] = new Point(mScreenWidthOffSet + mScreenWidth / 2,
+                mScreenHeightOffSet + mScreenHeight / 2);
+        mPoints[1][2] = new Point(mScreenWidthOffSet + mScreenWidth * 3 / 4,
+                mScreenHeightOffSet + mScreenHeight / 2);
+
+        mPoints[2][0] = new Point(mScreenWidthOffSet + mScreenWidth / 4,
+                mScreenHeightOffSet + mScreenHeight * 3 / 4);
+        mPoints[2][1] = new Point(mScreenWidthOffSet + mScreenWidth / 2,
+                mScreenHeightOffSet + mScreenHeight * 3 / 4);
+        mPoints[2][2] = new Point(mScreenWidthOffSet + mScreenWidth * 3 / 4,
+                mScreenHeightOffSet + mScreenHeight * 3 / 4);
+
+
+        // 设置九宫格中的各个index
+        int index = 1;
+        for (int i = 0; i < mPoints.length; i++) {
+            for (int j = 0; j < mPoints[i].length; j++) {
+                mPoints[i][j].setIndex(index + "");
+                // 在没有任何操作的情况下默認点的状态
+                mPoints[i][j].setState(com.example.administrator.myapplication.widget.patternlock.Point.BITMAP_NORMAL);
+                index++;
+            }
+        }
+
+        // 将isInitPoint设置为true
+        isInitPoint = true;
+    }
+
+    public interface OnLockListener {
+        public void getStringPassword(String password);
+
+
+  //      public void setErrorMsg(String msg);
+   //     public void setSuccessMsg(String msg);
+        public boolean isPassword();
+    }
+
+
+    public void setLockListener(OnLockListener listener) {
+        this.mListener = listener;
+    }
+   public void setActivityContext(Activity aty){this.activity=aty;}
+}
diff --git a/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/widget/patternlock/Point.java b/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/widget/patternlock/Point.java
new file mode 100644
index 0000000..ecd4d35
--- /dev/null
+++ b/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/widget/patternlock/Point.java
@@ -0,0 +1,76 @@
+package com.example.administrator.myapplication.widget.patternlock;
+
+public class Point {
+    public static int BITMAP_NORMAL = 0; // 正常
+    public static int BITMAP_ERROR = 1;  // 错误
+    public static int BITMAP_PRESS = 2;  // 按下
+
+    //九宫格中的点的下标（即每个点代表一个值）
+    private String index;
+    //点的状态
+    private int state;
+    //点的坐标
+    private float x;
+    private float y;
+
+    public Point() {
+        super();
+    }
+
+    public Point(int x, int y) {
+        this.x = x;
+        this.y = y;
+    }
+
+    public String getIndex() {
+        return index;
+    }
+
+    public int getState() {
+        return state;
+    }
+
+    public float getX() {
+        return x;
+    }
+
+    public float getY() {
+        return y;
+    }
+
+    public void setIndex(String index) {
+        this.index = index;
+    }
+
+    public void setState(int state) {
+        this.state = state;
+    }
+
+    public void setX(float x) {
+        this.x = x;
+    }
+
+    public void setY(float y) {
+        this.y = y;
+    }
+
+    /**
+     * 判断屏幕上的九宫格中的点能否可以进行连线
+     *
+     * @param a
+     * @param moveX
+     * @param moveY
+     * @param radius 点bitmap的半径
+     * @return 布尔型
+     */
+    public boolean isWith(Point a, float moveX, float moveY, float radius) {
+        float result = (float) Math.sqrt((a.getX() - moveX)
+                * (a.getX() - moveX) + (a.getY() - moveY)
+                * (a.getY() - moveY));
+        if (result < 5 * radius / 4) {
+            return true;
+        }
+        return false;
+    }
+
+}
diff --git a/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/widget/patternlock/RotateDegrees.java b/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/widget/patternlock/RotateDegrees.java
new file mode 100644
index 0000000..ea087b2
--- /dev/null
+++ b/src/MyApplication/app/src/main/java/com/example/administrator/myapplication/widget/patternlock/RotateDegrees.java
@@ -0,0 +1,42 @@
+package com.example.administrator.myapplication.widget.patternlock;
+
+public class RotateDegrees {
+
+    public static float getDegrees(Point a, Point b) {
+        float degrees = 0;
+        float ax = a.getX();
+        float ay = a.getY();
+        float bx = b.getX();
+        float by = b.getY();
+
+        if (ax == bx) {
+            if (by > ay) {
+                degrees = 90;
+            } else {
+                degrees = 270;
+            }
+        } else if (by == ay) {
+            if (ax > bx) {
+                degrees = 180;
+            } else {
+                degrees = 0;
+            }
+        } else {
+            if (ax > bx) {
+                if (ay > by) { // 第三象限
+                    degrees = 180 + (float) (Math.atan2(ay - by, ax - bx) * 180 / Math.PI);
+                } else { // 第二象限
+                    degrees = 180 - (float) (Math.atan2(by - ay, ax - bx) * 180 / Math.PI);
+                }
+            } else {
+                if (ay > by) { // 第四象限
+                    degrees = 360 - (float) (Math.atan2(ay - by, bx - ax) * 180 / Math.PI);
+                } else { // 第一象限
+                    degrees = (float) (Math.atan2(by - ay, bx - ax) * 180 / Math.PI);
+                }
+            }
+        }
+        return degrees;
+    }
+
+}
diff --git a/src/MyApplication/app/src/main/res/anim/grow_from_bottom.xml b/src/MyApplication/app/src/main/res/anim/grow_from_bottom.xml
new file mode 100644
index 0000000..d2a371d
--- /dev/null
+++ b/src/MyApplication/app/src/main/res/anim/grow_from_bottom.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set xmlns:android="http://schemas.android.com/apk/res/android">
+	<scale
+		android:fromXScale="0.3" android:toXScale="1.0"
+		android:fromYScale="0.3" android:toYScale="1.0"
+		android:pivotX="50%" android:pivotY="100%"
+		android:duration="@android:integer/config_shortAnimTime"
+	/>
+	<alpha
+		android:interpolator="@android:anim/decelerate_interpolator"
+		android:fromAlpha="0.0" android:toAlpha="1.0"
+		android:duration="@android:integer/config_shortAnimTime"
+	/>
+</set>
diff --git a/src/MyApplication/app/src/main/res/anim/shrink_from_top.xml b/src/MyApplication/app/src/main/res/anim/shrink_from_top.xml
new file mode 100644
index 0000000..89cd8f4
--- /dev/null
+++ b/src/MyApplication/app/src/main/res/anim/shrink_from_top.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set xmlns:android="http://schemas.android.com/apk/res/android">
+	<scale
+		android:fromXScale="1.0" android:toXScale="0.3"
+		android:fromYScale="1.0" android:toYScale="0.3"
+		android:pivotX="50%" android:pivotY="100%"
+		android:duration="@android:integer/config_shortAnimTime"
+	/>
+	<alpha
+		android:interpolator="@android:anim/accelerate_interpolator"
+		android:fromAlpha="1.0" android:toAlpha="0.0"
+		android:duration="@android:integer/config_shortAnimTime"
+	/>
+</set>
diff --git a/src/MyApplication/app/src/main/res/drawable-v21/about.png b/src/MyApplication/app/src/main/res/drawable-v21/about.png
new file mode 100644
index 0000000..da56077
Binary files /dev/null and b/src/MyApplication/app/src/main/res/drawable-v21/about.png differ
diff --git a/src/MyApplication/app/src/main/res/drawable-v21/actionbar_icon_add.png b/src/MyApplication/app/src/main/res/drawable-v21/actionbar_icon_add.png
new file mode 100644
index 0000000..5a64fe4
Binary files /dev/null and b/src/MyApplication/app/src/main/res/drawable-v21/actionbar_icon_add.png differ
diff --git a/src/MyApplication/app/src/main/res/drawable-v21/actionbar_send_icon.png b/src/MyApplication/app/src/main/res/drawable-v21/actionbar_send_icon.png
new file mode 100644
index 0000000..9b12598
Binary files /dev/null and b/src/MyApplication/app/src/main/res/drawable-v21/actionbar_send_icon.png differ
diff --git a/src/MyApplication/app/src/main/res/drawable-v21/base_horization_line.png b/src/MyApplication/app/src/main/res/drawable-v21/base_horization_line.png
new file mode 100644
index 0000000..4e5dcbe
Binary files /dev/null and b/src/MyApplication/app/src/main/res/drawable-v21/base_horization_line.png differ
diff --git a/src/MyApplication/app/src/main/res/drawable-v21/bitmap_error.png b/src/MyApplication/app/src/main/res/drawable-v21/bitmap_error.png
new file mode 100644
index 0000000..72424a8
Binary files /dev/null and b/src/MyApplication/app/src/main/res/drawable-v21/bitmap_error.png differ
diff --git a/src/MyApplication/app/src/main/res/drawable-v21/bitmap_normal.png b/src/MyApplication/app/src/main/res/drawable-v21/bitmap_normal.png
new file mode 100644
index 0000000..8de7524
Binary files /dev/null and b/src/MyApplication/app/src/main/res/drawable-v21/bitmap_normal.png differ
diff --git a/src/MyApplication/app/src/main/res/drawable-v21/bitmap_pressed.png b/src/MyApplication/app/src/main/res/drawable-v21/bitmap_pressed.png
new file mode 100644
index 0000000..f5773c0
Binary files /dev/null and b/src/MyApplication/app/src/main/res/drawable-v21/bitmap_pressed.png differ
diff --git a/src/MyApplication/app/src/main/res/drawable-v21/blue.png b/src/MyApplication/app/src/main/res/drawable-v21/blue.png
new file mode 100644
index 0000000..b801f73
Binary files /dev/null and b/src/MyApplication/app/src/main/res/drawable-v21/blue.png differ
diff --git a/src/MyApplication/app/src/main/res/drawable-v21/btn_dark_blue_background.xml b/src/MyApplication/app/src/main/res/drawable-v21/btn_dark_blue_background.xml
new file mode 100644
index 0000000..b49e2ba
--- /dev/null
+++ b/src/MyApplication/app/src/main/res/drawable-v21/btn_dark_blue_background.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <corners android:radius="5dp" />
+    <solid android:color="#3F51B5" />
+</shape>
\ No newline at end of file
diff --git a/src/MyApplication/app/src/main/res/drawable-v21/btn_orange_background.xml b/src/MyApplication/app/src/main/res/drawable-v21/btn_orange_background.xml
new file mode 100644
index 0000000..5063846
--- /dev/null
+++ b/src/MyApplication/app/src/main/res/drawable-v21/btn_orange_background.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <corners android:radius="5dp" />
+    <solid android:color="#FF5722" />
+</shape>
\ No newline at end of file
diff --git a/src/MyApplication/app/src/main/res/drawable-v21/green.png b/src/MyApplication/app/src/main/res/drawable-v21/green.png
new file mode 100644
index 0000000..3f3e8ce
Binary files /dev/null and b/src/MyApplication/app/src/main/res/drawable-v21/green.png differ
diff --git a/src/MyApplication/app/src/main/res/drawable-v21/ic_menu_camera.xml b/src/MyApplication/app/src/main/res/drawable-v21/ic_menu_camera.xml
new file mode 100644
index 0000000..0d9ea10
--- /dev/null
+++ b/src/MyApplication/app/src/main/res/drawable-v21/ic_menu_camera.xml
@@ -0,0 +1,12 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportHeight="24.0"
+    android:viewportWidth="24.0">
+    <path
+        android:fillColor="#FF000000"
+        android:pathData="M12,12m-3.2,0a3.2,3.2 0,1 1,6.4 0a3.2,3.2 0,1 1,-6.4 0" />
+    <path
+        android:fillColor="#FF000000"
+        android:pathData="M9,2L7.17,4H4c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2V6c0,-1.1 -0.9,-2 -2,-2h-3.17L15,2H9zm3,15c-2.76,0 -5,-2.24 -5,-5s2.24,-5 5,-5 5,2.24 5,5 -2.24,5 -5,5z" />
+</vector>
diff --git a/src/MyApplication/app/src/main/res/drawable-v21/ic_menu_gallery.xml b/src/MyApplication/app/src/main/res/drawable-v21/ic_menu_gallery.xml
new file mode 100644
index 0000000..f6872c4
--- /dev/null
+++ b/src/MyApplication/app/src/main/res/drawable-v21/ic_menu_gallery.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportHeight="24.0"
+    android:viewportWidth="24.0">
+    <path
+        android:fillColor="#FF000000"
+        android:pathData="M22,16V4c0,-1.1 -0.9,-2 -2,-2H8c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2zm-11,-4l2.03,2.71L16,11l4,5H8l3,-4zM2,6v14c0,1.1 0.9,2 2,2h14v-2H4V6H2z" />
+</vector>
diff --git a/src/MyApplication/app/src/main/res/drawable-v21/ic_menu_manage.xml b/src/MyApplication/app/src/main/res/drawable-v21/ic_menu_manage.xml
new file mode 100644
index 0000000..c1be60b
--- /dev/null
+++ b/src/MyApplication/app/src/main/res/drawable-v21/ic_menu_manage.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportHeight="24.0"
+    android:viewportWidth="24.0">
+    <path
+        android:fillColor="#FF000000"
+        android:pathData="M22.7,19l-9.1,-9.1c0.9,-2.3 0.4,-5 -1.5,-6.9 -2,-2 -5,-2.4 -7.4,-1.3L9,6 6,9 1.6,4.7C0.4,7.1 0.9,10.1 2.9,12.1c1.9,1.9 4.6,2.4 6.9,1.5l9.1,9.1c0.4,0.4 1,0.4 1.4,0l2.3,-2.3c0.5,-0.4 0.5,-1.1 0.1,-1.4z" />
+</vector>
\ No newline at end of file
diff --git a/src/MyApplication/app/src/main/res/drawable-v21/ic_menu_send.xml b/src/MyApplication/app/src/main/res/drawable-v21/ic_menu_send.xml
new file mode 100644
index 0000000..00c668c
--- /dev/null
+++ b/src/MyApplication/app/src/main/res/drawable-v21/ic_menu_send.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportHeight="24.0"
+    android:viewportWidth="24.0">
+    <path
+        android:fillColor="#FF000000"
+        android:pathData="M2.01,21L23,12 2.01,3 2,10l15,2 -15,2z" />
+</vector>
diff --git a/src/MyApplication/app/src/main/res/drawable-v21/ic_menu_share.xml b/src/MyApplication/app/src/main/res/drawable-v21/ic_menu_share.xml
new file mode 100644
index 0000000..a28fb9e
--- /dev/null
+++ b/src/MyApplication/app/src/main/res/drawable-v21/ic_menu_share.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportHeight="24.0"
+    android:viewportWidth="24.0">
+    <path
+        android:fillColor="#FF000000"
+        android:pathData="M18,16.08c-0.76,0 -1.44,0.3 -1.96,0.77L8.91,12.7c0.05,-0.23 0.09,-0.46 0.09,-0.7s-0.04,-0.47 -0.09,-0.7l7.05,-4.11c0.54,0.5 1.25,0.81 2.04,0.81 1.66,0 3,-1.34 3,-3s-1.34,-3 -3,-3 -3,1.34 -3,3c0,0.24 0.04,0.47 0.09,0.7L8.04,9.81C7.5,9.31 6.79,9 6,9c-1.66,0 -3,1.34 -3,3s1.34,3 3,3c0.79,0 1.5,-0.31 2.04,-0.81l7.12,4.16c-0.05,0.21 -0.08,0.43 -0.08,0.65 0,1.61 1.31,2.92 2.92,2.92 1.61,0 2.92,-1.31 2.92,-2.92s-1.31,-2.92 -2.92,-2.92z" />
+</vector>
diff --git a/src/MyApplication/app/src/main/res/drawable-v21/ic_menu_slideshow.xml b/src/MyApplication/app/src/main/res/drawable-v21/ic_menu_slideshow.xml
new file mode 100644
index 0000000..209aa64
--- /dev/null
+++ b/src/MyApplication/app/src/main/res/drawable-v21/ic_menu_slideshow.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportHeight="24.0"
+    android:viewportWidth="24.0">
+    <path
+        android:fillColor="#FF000000"
+        android:pathData="M4,6H2v14c0,1.1 0.9,2 2,2h14v-2H4V6zm16,-4H8c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2V4c0,-1.1 -0.9,-2 -2,-2zm-8,12.5v-9l6,4.5 -6,4.5z" />
+</vector>
diff --git a/src/MyApplication/app/src/main/res/drawable-v21/ic_note_delete.png b/src/MyApplication/app/src/main/res/drawable-v21/ic_note_delete.png
new file mode 100644
index 0000000..5313183
Binary files /dev/null and b/src/MyApplication/app/src/main/res/drawable-v21/ic_note_delete.png differ
diff --git a/src/MyApplication/app/src/main/res/drawable-v21/icon_up.png b/src/MyApplication/app/src/main/res/drawable-v21/icon_up.png
new file mode 100644
index 0000000..0546c1d
Binary files /dev/null and b/src/MyApplication/app/src/main/res/drawable-v21/icon_up.png differ
diff --git a/src/MyApplication/app/src/main/res/drawable-v21/input_bg.9.png b/src/MyApplication/app/src/main/res/drawable-v21/input_bg.9.png
new file mode 100644
index 0000000..a489026
Binary files /dev/null and b/src/MyApplication/app/src/main/res/drawable-v21/input_bg.9.png differ
diff --git a/src/MyApplication/app/src/main/res/drawable-v21/line_error.png b/src/MyApplication/app/src/main/res/drawable-v21/line_error.png
new file mode 100644
index 0000000..93f8799
Binary files /dev/null and b/src/MyApplication/app/src/main/res/drawable-v21/line_error.png differ
diff --git a/src/MyApplication/app/src/main/res/drawable-v21/line_pressed.png b/src/MyApplication/app/src/main/res/drawable-v21/line_pressed.png
new file mode 100644
index 0000000..9ab92d1
Binary files /dev/null and b/src/MyApplication/app/src/main/res/drawable-v21/line_pressed.png differ
diff --git a/src/MyApplication/app/src/main/res/drawable-v21/login_divider_line.xml b/src/MyApplication/app/src/main/res/drawable-v21/login_divider_line.xml
new file mode 100644
index 0000000..ee6915f
--- /dev/null
+++ b/src/MyApplication/app/src/main/res/drawable-v21/login_divider_line.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+<solid android:color="#B6B6B6" />
+<size android:height="1px" />
+</shape>
\ No newline at end of file
diff --git a/src/MyApplication/app/src/main/res/drawable-v21/login_et_background.xml b/src/MyApplication/app/src/main/res/drawable-v21/login_et_background.xml
new file mode 100644
index 0000000..d3a1709
--- /dev/null
+++ b/src/MyApplication/app/src/main/res/drawable-v21/login_et_background.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <corners android:radius="5dp" />
+    <solid android:color="@android:color/white" />
+
+</shape>
\ No newline at end of file
diff --git a/src/MyApplication/app/src/main/res/drawable-v21/login_ll_background.xml b/src/MyApplication/app/src/main/res/drawable-v21/login_ll_background.xml
new file mode 100644
index 0000000..b06a66f
--- /dev/null
+++ b/src/MyApplication/app/src/main/res/drawable-v21/login_ll_background.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <corners
+        android:radius="5dp"
+        />
+    <solid
+        android:color="@android:color/white"/>
+</shape>
\ No newline at end of file
diff --git a/src/MyApplication/app/src/main/res/drawable-v21/purple.png b/src/MyApplication/app/src/main/res/drawable-v21/purple.png
new file mode 100644
index 0000000..d10e461
Binary files /dev/null and b/src/MyApplication/app/src/main/res/drawable-v21/purple.png differ
diff --git a/src/MyApplication/app/src/main/res/drawable-v21/red.png b/src/MyApplication/app/src/main/res/drawable-v21/red.png
new file mode 100644
index 0000000..b61f3cc
Binary files /dev/null and b/src/MyApplication/app/src/main/res/drawable-v21/red.png differ
diff --git a/src/MyApplication/app/src/main/res/drawable-v21/yellow.png b/src/MyApplication/app/src/main/res/drawable-v21/yellow.png
new file mode 100644
index 0000000..4f83bc2
Binary files /dev/null and b/src/MyApplication/app/src/main/res/drawable-v21/yellow.png differ
diff --git a/src/MyApplication/app/src/main/res/drawable/actionbar_icon_add.png b/src/MyApplication/app/src/main/res/drawable/actionbar_icon_add.png
new file mode 100644
index 0000000..5a64fe4
Binary files /dev/null and b/src/MyApplication/app/src/main/res/drawable/actionbar_icon_add.png differ
diff --git a/src/MyApplication/app/src/main/res/drawable/add_menu.png b/src/MyApplication/app/src/main/res/drawable/add_menu.png
new file mode 100644
index 0000000..4f1f7d8
Binary files /dev/null and b/src/MyApplication/app/src/main/res/drawable/add_menu.png differ
diff --git a/src/MyApplication/app/src/main/res/drawable/arrow.png b/src/MyApplication/app/src/main/res/drawable/arrow.png
new file mode 100644
index 0000000..5c6e179
Binary files /dev/null and b/src/MyApplication/app/src/main/res/drawable/arrow.png differ
diff --git a/src/MyApplication/app/src/main/res/drawable/back.png b/src/MyApplication/app/src/main/res/drawable/back.png
new file mode 100644
index 0000000..382378f
Binary files /dev/null and b/src/MyApplication/app/src/main/res/drawable/back.png differ
diff --git a/src/MyApplication/app/src/main/res/drawable/base_edit_input.9.png b/src/MyApplication/app/src/main/res/drawable/base_edit_input.9.png
new file mode 100644
index 0000000..3c94fe4
Binary files /dev/null and b/src/MyApplication/app/src/main/res/drawable/base_edit_input.9.png differ
diff --git a/src/MyApplication/app/src/main/res/drawable/base_horizontal_line.9.png b/src/MyApplication/app/src/main/res/drawable/base_horizontal_line.9.png
new file mode 100644
index 0000000..97bf003
Binary files /dev/null and b/src/MyApplication/app/src/main/res/drawable/base_horizontal_line.9.png differ
diff --git a/src/MyApplication/app/src/main/res/drawable/btn_login_n.9.png b/src/MyApplication/app/src/main/res/drawable/btn_login_n.9.png
new file mode 100644
index 0000000..3b078c8
Binary files /dev/null and b/src/MyApplication/app/src/main/res/drawable/btn_login_n.9.png differ
diff --git a/src/MyApplication/app/src/main/res/drawable/btn_login_p.9.png b/src/MyApplication/app/src/main/res/drawable/btn_login_p.9.png
new file mode 100644
index 0000000..99d2362
Binary files /dev/null and b/src/MyApplication/app/src/main/res/drawable/btn_login_p.9.png differ
diff --git a/src/MyApplication/app/src/main/res/drawable/btn_login_selector.xml b/src/MyApplication/app/src/main/res/drawable/btn_login_selector.xml
new file mode 100644
index 0000000..88ffebd
--- /dev/null
+++ b/src/MyApplication/app/src/main/res/drawable/btn_login_selector.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <item android:drawable="@drawable/btn_login_n"  android:state_pressed="false"/>
+    <item android:drawable="@drawable/btn_login_p" android:state_pressed="true"/>
+
+</selector>
\ No newline at end of file
diff --git a/src/MyApplication/app/src/main/res/drawable/default_head.png b/src/MyApplication/app/src/main/res/drawable/default_head.png
new file mode 100644
index 0000000..a755f05
Binary files /dev/null and b/src/MyApplication/app/src/main/res/drawable/default_head.png differ
diff --git a/src/MyApplication/app/src/main/res/drawable/diary_pwd.png b/src/MyApplication/app/src/main/res/drawable/diary_pwd.png
new file mode 100644
index 0000000..48734c8
Binary files /dev/null and b/src/MyApplication/app/src/main/res/drawable/diary_pwd.png differ
diff --git a/src/MyApplication/app/src/main/res/drawable/email.png b/src/MyApplication/app/src/main/res/drawable/email.png
new file mode 100644
index 0000000..741ded6
Binary files /dev/null and b/src/MyApplication/app/src/main/res/drawable/email.png differ
diff --git a/src/MyApplication/app/src/main/res/drawable/exit.9.png b/src/MyApplication/app/src/main/res/drawable/exit.9.png
new file mode 100644
index 0000000..c084ed7
Binary files /dev/null and b/src/MyApplication/app/src/main/res/drawable/exit.9.png differ
diff --git a/src/MyApplication/app/src/main/res/drawable/font_large.png b/src/MyApplication/app/src/main/res/drawable/font_large.png
new file mode 100644
index 0000000..78cf2e6
Binary files /dev/null and b/src/MyApplication/app/src/main/res/drawable/font_large.png differ
diff --git a/src/MyApplication/app/src/main/res/drawable/font_normal.png b/src/MyApplication/app/src/main/res/drawable/font_normal.png
new file mode 100644
index 0000000..9de7ced
Binary files /dev/null and b/src/MyApplication/app/src/main/res/drawable/font_normal.png differ
diff --git a/src/MyApplication/app/src/main/res/drawable/font_size_selector_bg.9.png b/src/MyApplication/app/src/main/res/drawable/font_size_selector_bg.9.png
new file mode 100644
index 0000000..be8e64c
Binary files /dev/null and b/src/MyApplication/app/src/main/res/drawable/font_size_selector_bg.9.png differ
diff --git a/src/MyApplication/app/src/main/res/drawable/font_small.png b/src/MyApplication/app/src/main/res/drawable/font_small.png
new file mode 100644
index 0000000..d3ff104
Binary files /dev/null and b/src/MyApplication/app/src/main/res/drawable/font_small.png differ
diff --git a/src/MyApplication/app/src/main/res/drawable/font_super.png b/src/MyApplication/app/src/main/res/drawable/font_super.png
new file mode 100644
index 0000000..85b13a1
Binary files /dev/null and b/src/MyApplication/app/src/main/res/drawable/font_super.png differ
diff --git a/src/MyApplication/app/src/main/res/drawable/icon_color.png b/src/MyApplication/app/src/main/res/drawable/icon_color.png
new file mode 100644
index 0000000..24f5cf3
Binary files /dev/null and b/src/MyApplication/app/src/main/res/drawable/icon_color.png differ
diff --git a/src/MyApplication/app/src/main/res/drawable/login_bg.png b/src/MyApplication/app/src/main/res/drawable/login_bg.png
new file mode 100644
index 0000000..b3f7b45
Binary files /dev/null and b/src/MyApplication/app/src/main/res/drawable/login_bg.png differ
diff --git a/src/MyApplication/app/src/main/res/drawable/login_icon_account.png b/src/MyApplication/app/src/main/res/drawable/login_icon_account.png
new file mode 100644
index 0000000..aad2000
Binary files /dev/null and b/src/MyApplication/app/src/main/res/drawable/login_icon_account.png differ
diff --git a/src/MyApplication/app/src/main/res/drawable/login_icon_password.png b/src/MyApplication/app/src/main/res/drawable/login_icon_password.png
new file mode 100644
index 0000000..ea09984
Binary files /dev/null and b/src/MyApplication/app/src/main/res/drawable/login_icon_password.png differ
diff --git a/src/MyApplication/app/src/main/res/drawable/menu_alert.png b/src/MyApplication/app/src/main/res/drawable/menu_alert.png
new file mode 100644
index 0000000..544ee9c
Binary files /dev/null and b/src/MyApplication/app/src/main/res/drawable/menu_alert.png differ
diff --git a/src/MyApplication/app/src/main/res/drawable/menu_font_size.png b/src/MyApplication/app/src/main/res/drawable/menu_font_size.png
new file mode 100644
index 0000000..bbe8bd7
Binary files /dev/null and b/src/MyApplication/app/src/main/res/drawable/menu_font_size.png differ
diff --git a/src/MyApplication/app/src/main/res/drawable/menu_share.png b/src/MyApplication/app/src/main/res/drawable/menu_share.png
new file mode 100644
index 0000000..a0b1c48
Binary files /dev/null and b/src/MyApplication/app/src/main/res/drawable/menu_share.png differ
diff --git a/src/MyApplication/app/src/main/res/drawable/menu_to_desktop.png b/src/MyApplication/app/src/main/res/drawable/menu_to_desktop.png
new file mode 100644
index 0000000..fd6fce3
Binary files /dev/null and b/src/MyApplication/app/src/main/res/drawable/menu_to_desktop.png differ
diff --git a/src/MyApplication/app/src/main/res/drawable/nickname.png b/src/MyApplication/app/src/main/res/drawable/nickname.png
new file mode 100644
index 0000000..d2b79af
Binary files /dev/null and b/src/MyApplication/app/src/main/res/drawable/nickname.png differ
diff --git a/src/MyApplication/app/src/main/res/drawable/password.png b/src/MyApplication/app/src/main/res/drawable/password.png
new file mode 100644
index 0000000..cd1d424
Binary files /dev/null and b/src/MyApplication/app/src/main/res/drawable/password.png differ
diff --git a/src/MyApplication/app/src/main/res/drawable/pop_bg.9.png b/src/MyApplication/app/src/main/res/drawable/pop_bg.9.png
new file mode 100644
index 0000000..f1d8003
Binary files /dev/null and b/src/MyApplication/app/src/main/res/drawable/pop_bg.9.png differ
diff --git a/src/MyApplication/app/src/main/res/drawable/pop_bg_press.9.png b/src/MyApplication/app/src/main/res/drawable/pop_bg_press.9.png
new file mode 100644
index 0000000..3fdfd20
Binary files /dev/null and b/src/MyApplication/app/src/main/res/drawable/pop_bg_press.9.png differ
diff --git a/src/MyApplication/app/src/main/res/drawable/selected.png b/src/MyApplication/app/src/main/res/drawable/selected.png
new file mode 100644
index 0000000..b889bef
Binary files /dev/null and b/src/MyApplication/app/src/main/res/drawable/selected.png differ
diff --git a/src/MyApplication/app/src/main/res/drawable/side_nav_bar.xml b/src/MyApplication/app/src/main/res/drawable/side_nav_bar.xml
new file mode 100644
index 0000000..458b4b0
--- /dev/null
+++ b/src/MyApplication/app/src/main/res/drawable/side_nav_bar.xml
@@ -0,0 +1,9 @@
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <gradient
+        android:angle="135"
+        android:centerColor="#4CAF50"
+        android:endColor="#2E7D32"
+        android:startColor="#81C784"
+        android:type="linear" />
+</shape>
\ No newline at end of file
diff --git a/src/MyApplication/app/src/main/res/drawable/skin_ico_checked.png b/src/MyApplication/app/src/main/res/drawable/skin_ico_checked.png
new file mode 100644
index 0000000..e76fb7d
Binary files /dev/null and b/src/MyApplication/app/src/main/res/drawable/skin_ico_checked.png differ
diff --git a/src/MyApplication/app/src/main/res/drawable/skin_img_item_background.xml b/src/MyApplication/app/src/main/res/drawable/skin_img_item_background.xml
new file mode 100644
index 0000000..ee8d104
--- /dev/null
+++ b/src/MyApplication/app/src/main/res/drawable/skin_img_item_background.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector
+  xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_pressed="true" android:drawable="@drawable/skin_img_item_background_selected" />
+    <item android:drawable="@drawable/skin_img_item_background_normal" />
+</selector>
\ No newline at end of file
diff --git a/src/MyApplication/app/src/main/res/drawable/skin_img_item_background_normal.9.png b/src/MyApplication/app/src/main/res/drawable/skin_img_item_background_normal.9.png
new file mode 100644
index 0000000..54be9b0
Binary files /dev/null and b/src/MyApplication/app/src/main/res/drawable/skin_img_item_background_normal.9.png differ
diff --git a/src/MyApplication/app/src/main/res/drawable/skin_img_item_background_selected.9.png b/src/MyApplication/app/src/main/res/drawable/skin_img_item_background_selected.9.png
new file mode 100644
index 0000000..29f2fce
Binary files /dev/null and b/src/MyApplication/app/src/main/res/drawable/skin_img_item_background_selected.9.png differ
diff --git a/src/MyApplication/app/src/main/res/drawable/user_name.png b/src/MyApplication/app/src/main/res/drawable/user_name.png
new file mode 100644
index 0000000..9b91343
Binary files /dev/null and b/src/MyApplication/app/src/main/res/drawable/user_name.png differ
diff --git a/src/MyApplication/app/src/main/res/layout/about_me_fragment.xml b/src/MyApplication/app/src/main/res/layout/about_me_fragment.xml
new file mode 100644
index 0000000..74b93e9
--- /dev/null
+++ b/src/MyApplication/app/src/main/res/layout/about_me_fragment.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+     >
+
+    <TextView
+        android:id="@+id/textView1"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_below="@+id/imageView1"
+        android:layout_centerHorizontal="true"
+        android:layout_marginTop="10dp"
+        android:textColor="#000"
+        android:textSize="20sp"
+        android:text="@string/app_name" />
+
+    <com.htq.baidu.coolnote.widget.CircleImageView
+        android:id="@+id/imageView1"
+        android:layout_width="100dp"
+        android:layout_height="100dp"
+        android:layout_alignParentTop="true"
+        android:layout_centerHorizontal="true"
+        android:layout_marginTop="20dp"
+        android:scaleType="centerCrop"
+        android:src="@mipmap/app_icon" />
+
+    <TextView
+        android:id="@+id/textView3"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentBottom="true"
+        android:layout_centerHorizontal="true"
+        android:textColor="#000"
+        android:textSize="17sp"
+        android:text="@string/author" />
+
+    <TextView
+        android:id="@+id/textView2"
+        android:layout_marginTop="30dp"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_below="@+id/textView1"
+        android:layout_centerHorizontal="true"
+        android:textColor="#000"
+        android:textSize="20sp"
+        android:text="关于作者：" />
+<RelativeLayout 
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:layout_below="@+id/textView2" 
+    android:layout_marginTop="10dp">
+
+   <com.htq.baidu.coolnote.widget.CircleImageView
+        android:id="@+id/imageView2"
+        android:layout_width="125dp"
+        android:layout_height="125dp"
+        android:layout_alignParentLeft="true"
+    android:layout_alignParentTop="true"
+    android:src="@mipmap/mine_avatar" />
+
+<TextView
+android:id="@+id/about_me_tv"
+android:textColor="#000"
+android:textSize="20sp"
+android:layout_width="wrap_content"
+android:layout_height="wrap_content"
+android:layout_centerVertical="true"
+android:layout_marginLeft="7dp"
+android:layout_toRightOf="@+id/imageView2"
+android:text="@string/about_me" />
+
+    </RelativeLayout>
+    </RelativeLayout>
\ No newline at end of file
diff --git a/src/MyApplication/app/src/main/res/layout/activity_login.xml b/src/MyApplication/app/src/main/res/layout/activity_login.xml
index 2afe436..c6973b6 100644
--- a/src/MyApplication/app/src/main/res/layout/activity_login.xml
+++ b/src/MyApplication/app/src/main/res/layout/activity_login.xml
@@ -8,7 +8,7 @@
     android:paddingLeft="@dimen/activity_horizontal_margin"
     android:paddingRight="@dimen/activity_horizontal_margin"
     android:paddingTop="@dimen/activity_vertical_margin"
-    tools:context="com.example.administrator.myapplication.LoginActivity">
+    tools:context="com.example.administrator.myapplication.ui.LoginActivity">
 
     <!-- Login progress -->
     <ProgressBar
diff --git a/src/MyApplication/app/src/main/res/layout/activity_main.xml b/src/MyApplication/app/src/main/res/layout/activity_main.xml
new file mode 100644
index 0000000..620b1cf
--- /dev/null
+++ b/src/MyApplication/app/src/main/res/layout/activity_main.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:id="@+id/drawer_layout"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:fitsSystemWindows="true"
+    tools:openDrawer="start">
+
+    <include
+        layout="@layout/app_bar_main"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent" />
+
+
+    <android.support.design.widget.NavigationView
+        android:id="@+id/nav_view"
+        android:layout_width="wrap_content"
+        android:layout_height="match_parent"
+        android:layout_gravity="start"
+        android:fitsSystemWindows="true"
+        app:headerLayout="@layout/nav_header_main"
+        app:menu="@menu/activity_main_drawer" />
+
+</android.support.v4.widget.DrawerLayout>
diff --git a/src/MyApplication/app/src/main/res/layout/activity_note_edit.xml b/src/MyApplication/app/src/main/res/layout/activity_note_edit.xml
new file mode 100644
index 0000000..7ce1f5a
--- /dev/null
+++ b/src/MyApplication/app/src/main/res/layout/activity_note_edit.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+    <FrameLayout
+        android:id="@+id/main_fraglayout"
+        android:layout_height="match_parent"
+        android:layout_width="match_parent"/>
+
+</LinearLayout>
diff --git a/src/MyApplication/app/src/main/res/layout/activity_register.xml b/src/MyApplication/app/src/main/res/layout/activity_register.xml
new file mode 100644
index 0000000..4bd2e5c
--- /dev/null
+++ b/src/MyApplication/app/src/main/res/layout/activity_register.xml
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    >
+
+
+    <RelativeLayout
+        android:id="@+id/top_bar"
+        android:layout_width="match_parent"
+        android:layout_height="50dp"
+        android:background="@color/colorPrimary">
+
+
+        <ImageButton
+            android:id="@+id/img_back"
+            android:layout_width="20dip"
+            android:layout_height="20dip"
+            android:scaleType="centerInside"
+            android:layout_alignParentLeft="true"
+            android:layout_marginLeft="7dp"
+            android:layout_centerInParent="true"
+            android:background="@color/colorPrimary"
+            android:src="@drawable/back" />
+
+
+
+        <TextView
+            android:id="@+id/edit_sign_mine_sign"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_centerVertical="true"
+            android:layout_centerInParent="true"
+            android:text="@string/register_account"
+            android:textSize="@dimen/text_size_large"
+            android:textStyle="bold"
+            android:textColor="#fff"/>
+
+    </RelativeLayout>
+
+
+    <LinearLayout style="@style/Register_Input" >
+
+        <TextView
+            style="@style/Smile.TextView._Black"
+            android:layout_height="match_parent"
+            android:gravity="center_vertical"
+            android:paddingLeft="10dp"
+            android:text="@string/login_account"
+            android:textStyle="bold" />
+
+        <EditText
+            android:id="@+id/et_username"
+            style="@style/Register_Edit"
+            android:hint="@string/login_username_hint" />
+    </LinearLayout>
+
+    <LinearLayout style="@style/Register_Input" >
+
+        <TextView
+            style="@style/Smile.TextView._Black"
+            android:layout_height="match_parent"
+            android:gravity="center_vertical"
+            android:paddingLeft="10dp"
+            android:text="@string/login_pwd"
+            android:textStyle="bold" />
+
+        <EditText
+            android:id="@+id/et_password"
+            style="@style/Register_Edit"
+             android:inputType="textPassword"
+            android:hint="@string/login_password_hint" />
+    </LinearLayout>
+
+    <LinearLayout 
+        style="@style/Register_Input" >
+
+        <TextView
+            style="@style/Smile.TextView._Black"
+            android:layout_height="match_parent"
+            android:gravity="center_vertical"
+            android:paddingLeft="10dp"
+            android:text="@string/login_email"
+            android:textStyle="bold" />
+
+        <EditText
+            android:id="@+id/et_email"
+            style="@style/Register_Edit"
+             android:inputType="textPassword"
+            android:hint="@string/login_email_hint" />
+    </LinearLayout>
+
+    <Button
+        android:id="@+id/btn_register"
+        android:layout_width="fill_parent"
+        android:layout_height="@dimen/base_action_bar_height"
+        android:layout_margin="@dimen/activity_vertical_margin"
+        android:background="@drawable/btn_login_selector"
+        android:text="@string/register"
+        android:textColor="@color/base_color_text_white"
+        android:textSize="@dimen/text_size_large" />
+
+</LinearLayout>
\ No newline at end of file
diff --git a/src/MyApplication/app/src/main/res/layout/activity_set_lock.xml b/src/MyApplication/app/src/main/res/layout/activity_set_lock.xml
new file mode 100644
index 0000000..dfd8837
--- /dev/null
+++ b/src/MyApplication/app/src/main/res/layout/activity_set_lock.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical" android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <TextView
+        android:id="@+id/tv_activity_set_lock_title"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="48dp"
+        android:gravity="center"
+        android:text="设置手势密码"
+        android:textSize="24sp"/>
+
+    <include layout="@layout/widget_lock_view"/>
+
+
+    <Button
+        android:id="@+id/btn_password_clear"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentRight="true"
+        android:layout_gravity="right"
+        android:layout_margin="24dp"
+        android:text="重新设置"
+        android:visibility="gone"/>
+
+</LinearLayout>
\ No newline at end of file
diff --git a/src/MyApplication/app/src/main/res/layout/activity_sign.xml b/src/MyApplication/app/src/main/res/layout/activity_sign.xml
index 5367fb9..08e4906 100644
--- a/src/MyApplication/app/src/main/res/layout/activity_sign.xml
+++ b/src/MyApplication/app/src/main/res/layout/activity_sign.xml
@@ -8,7 +8,7 @@
     android:paddingLeft="@dimen/activity_horizontal_margin"
     android:paddingRight="@dimen/activity_horizontal_margin"
     android:paddingTop="@dimen/activity_vertical_margin"
-    tools:context="com.example.administrator.myapplication.LoginActivity">
+    tools:context="com.example.administrator.myapplication.ui.LoginActivity">
 
     <!-- Login progress -->
     <ProgressBar
diff --git a/src/MyApplication/app/src/main/res/layout/activity_unlock.xml b/src/MyApplication/app/src/main/res/layout/activity_unlock.xml
new file mode 100644
index 0000000..d03ff47
--- /dev/null
+++ b/src/MyApplication/app/src/main/res/layout/activity_unlock.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical" android:layout_width="match_parent"
+    android:layout_height="match_parent">
+    <TextView
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="100dp"
+        android:gravity="center"
+        android:text="请输入手势解锁"
+        android:textSize="24sp"/>
+
+    <include layout="@layout/widget_lock_view"/>
+</LinearLayout>
\ No newline at end of file
diff --git a/src/MyApplication/app/src/main/res/layout/activity_user_info.xml b/src/MyApplication/app/src/main/res/layout/activity_user_info.xml
new file mode 100644
index 0000000..22a892e
--- /dev/null
+++ b/src/MyApplication/app/src/main/res/layout/activity_user_info.xml
@@ -0,0 +1,262 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    android:fitsSystemWindows="true">
+<!-- -->
+    <RelativeLayout
+        android:id="@+id/top_bar"
+        android:layout_width="match_parent"
+        android:layout_height="50dp"
+        android:background="@color/colorPrimary">
+
+
+        <ImageButton
+            android:id="@+id/img_back"
+            android:layout_width="20dip"
+            android:layout_height="20dip"
+            android:scaleType="centerInside"
+            android:layout_alignParentLeft="true"
+            android:layout_marginLeft="7dp"
+            android:layout_centerInParent="true"
+            android:background="@color/colorPrimary"
+            android:src="@drawable/back" />
+
+
+
+        <TextView
+            android:id="@+id/edit_sign_mine_sign"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_centerVertical="true"
+            android:layout_centerInParent="true"
+            android:text="@string/user_info"
+            android:textSize="@dimen/text_size_large"
+            android:textStyle="bold"
+            android:textColor="#fff"/>
+
+    </RelativeLayout>
+
+    <RelativeLayout
+        android:layout_marginTop="40dp"
+        android:layout_width="match_parent"
+        android:layout_height="75dp"
+        >
+
+        <com.htq.baidu.coolnote.widget.CircleImageView
+            android:id="@+id/mine_avatar"
+            android:layout_width="80dp"
+            android:layout_height="80dp"
+            android:layout_alignParentLeft="true"
+            android:layout_centerVertical="true"
+            android:layout_marginLeft="20dp"
+            app:civ_border_width="1dp"
+            app:civ_border_color="#fff"
+            android:src="@mipmap/mine_avatar"
+            />
+
+        <TextView
+            android:id="@+id/mine_nick"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_alignParentTop="true"
+            android:layout_marginLeft="22dp"
+            android:layout_marginTop="14dp"
+            android:layout_toRightOf="@+id/mine_avatar"
+            android:text="一笑奈何"
+            android:textSize="@dimen/text_size_large"
+            android:textStyle="bold"/>
+
+    </RelativeLayout>
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="1dp"
+        android:layout_marginTop="7dp"
+        android:background="@color/devide_line"/>
+    <RelativeLayout
+        android:id="@+id/mine_sign_relative"
+        android:layout_marginTop="14dp"
+        android:layout_width="match_parent"
+        android:layout_height="45dp">
+
+        <TextView
+            android:id="@+id/sign"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_alignParentLeft="true"
+            android:layout_centerVertical="true"
+            android:text="个性签名:" />
+
+        <TextView
+            android:id="@+id/sign_content"
+            android:layout_centerVertical="true"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="7dp"
+            android:paddingRight="20dp"
+            android:layout_toRightOf="@+id/sign"
+            android:text="爱生活，爱美女" />
+
+        <ImageView
+            android:id="@+id/sign_arrow"
+            android:layout_width="15dp"
+            android:layout_height="15dp"
+            android:layout_alignParentRight="true"
+            android:layout_alignTop="@+id/sign"
+            android:layout_marginRight="7dp"
+            android:scaleType="centerInside"
+            android:src="@drawable/arrow" />
+    </RelativeLayout>
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="1dp"
+        android:background="@color/devide_line"/>
+    <LinearLayout
+        android:id="@+id/mine_linear_two"
+        android:layout_marginTop="20dp"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+
+        android:orientation="vertical" >
+
+        <RelativeLayout
+            android:id="@+id/rl_account"
+            android:layout_width="match_parent"
+            android:layout_height="50dp"
+            android:layout_marginTop="20dp"
+            >
+
+
+            <TextView
+                android:id="@+id/tv_account"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_centerVertical="true"
+                android:layout_marginLeft="10dp"
+                android:layout_alignParentLeft="true"
+                android:text="个人账号" />
+            <TextView
+                android:id="@+id/account_content"
+                android:layout_centerVertical="true"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="7dp"
+                android:paddingRight="20dp"
+                android:layout_toRightOf="@+id/tv_account"
+                android:text="@string/my_blog" />
+
+        </RelativeLayout>
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="0.5dp"
+            android:background="@color/devide_line" />
+
+        <RelativeLayout
+            android:id="@+id/rl_nick"
+            android:layout_width="match_parent"
+            android:layout_height="50dp" >
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_centerVertical="true"
+                android:layout_marginLeft="10dp"
+                android:layout_alignParentLeft="true"
+                android:text="昵称" />
+
+            <ImageView
+                android:layout_width="15dp"
+                android:layout_height="15dp"
+                android:layout_alignParentRight="true"
+                android:layout_centerVertical="true"
+                android:layout_marginRight="7dp"
+                android:scaleType="centerInside"
+                android:src="@drawable/arrow" />
+        </RelativeLayout>
+<!--android:scaleType="fitXY"-->
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="0.5dp"
+            android:background="@color/devide_line" />
+
+        <RelativeLayout
+            android:id="@+id/rl_sex"
+            android:layout_width="match_parent"
+            android:layout_height="50dp" >
+
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_centerVertical="true"
+                android:layout_marginLeft="10dp"
+                android:layout_alignParentLeft="true"
+                android:text="性别" />
+
+            <ImageView
+                android:layout_width="15dp"
+                android:layout_height="15dp"
+                android:layout_alignParentRight="true"
+                android:layout_centerVertical="true"
+                android:layout_marginRight="7dp"
+
+                android:scaleType="centerInside"
+                android:src="@drawable/arrow" />
+        </RelativeLayout>
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="0.5dp"
+            android:background="@color/devide_line" />
+
+        <RelativeLayout
+            android:id="@+id/rl_email"
+            android:layout_width="match_parent"
+            android:layout_height="50dp" >
+
+
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_centerVertical="true"
+                android:layout_marginLeft="10dp"
+                android:layout_alignParentLeft="true"
+                android:text="E-Mail" />
+
+            <ImageView
+                android:layout_width="15dp"
+                android:layout_height="15dp"
+                android:layout_alignParentRight="true"
+                android:layout_centerVertical="true"
+                android:layout_marginRight="7dp"
+                android:scaleType="centerInside"
+                android:src="@drawable/arrow" />
+        </RelativeLayout>
+    </LinearLayout>
+       <View
+        android:layout_width="match_parent"
+        android:layout_height="0.5dp"
+        android:background="@color/devide_line" />
+
+
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        >
+        <Button
+            android:id="@+id/exit_btn"
+            android:layout_width="match_parent"
+            android:layout_height="50dp"
+            android:layout_alignParentBottom="true"
+            android:layout_centerHorizontal="true"
+            android:layout_marginBottom="10dp"
+            android:layout_marginLeft="15dp"
+            android:layout_marginRight="15dp"
+            android:text="注销账号"
+            android:background="@drawable/exit" />
+    </RelativeLayout>
+</LinearLayout>
diff --git a/src/MyApplication/app/src/main/res/layout/activity_welcome.xml b/src/MyApplication/app/src/main/res/layout/activity_welcome.xml
new file mode 100644
index 0000000..2a1b49b
--- /dev/null
+++ b/src/MyApplication/app/src/main/res/layout/activity_welcome.xml
@@ -0,0 +1,38 @@
+<RelativeLayout 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:background="@mipmap/welc_bg" >
+    <com.example.administrator.myapplication.widget.CircleImageView
+        android:id="@+id/soucang_icon"
+        android:layout_width="100dp"
+        android:layout_height="100dp"
+        android:layout_marginTop="60dp"
+        android:layout_centerHorizontal="true"
+        android:src="@mipmap/app_icon"
+        android:contentDescription="@string/app_name"
+        android:scaleType="centerCrop"/>
+
+    <TextView
+        android:id="@+id/sou"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:textSize="20sp"
+        android:layout_centerHorizontal="true"
+        android:layout_below="@id/soucang_icon"
+        android:layout_marginTop="20dp"
+        android:textColor="#fff"
+        android:text="@string/app_name"/>
+    <TextView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="50dp"
+        android:textSize="20sp"
+        android:layout_centerHorizontal="true"
+        android:layout_below="@id/sou"
+        android:textColor="#fff"
+        android:text="嗖得一下，让收藏变得更简单"
+        android:gravity="center"
+        />
+
+</RelativeLayout>
diff --git a/src/MyApplication/app/src/main/res/layout/app_bar_main.xml b/src/MyApplication/app/src/main/res/layout/app_bar_main.xml
new file mode 100644
index 0000000..e786d97
--- /dev/null
+++ b/src/MyApplication/app/src/main/res/layout/app_bar_main.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:fitsSystemWindows="true"
+    tools:context="com.htq.baidu.coolnote.ui.MainActivity">
+
+    <android.support.design.widget.AppBarLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:theme="@style/AppTheme.AppBarOverlay">
+
+        <android.support.v7.widget.Toolbar
+            android:id="@+id/toolbar"
+            android:layout_width="match_parent"
+            android:layout_height="?attr/actionBarSize"
+            android:background="?attr/colorPrimary"
+            app:popupTheme="@style/AppTheme.PopupOverlay" />
+
+    </android.support.design.widget.AppBarLayout>
+
+    <include layout="@layout/content_main" />
+
+    <android.support.design.widget.FloatingActionButton
+        android:id="@+id/fab"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="bottom|end"
+        android:layout_margin="@dimen/fab_margin"
+        app:borderWidth="0dp"
+        app:elevation="4dp"
+        app:rippleColor="@android:color/transparent"
+        android:src="@drawable/actionbar_icon_add" />
+
+</android.support.design.widget.CoordinatorLayout>
diff --git a/src/MyApplication/app/src/main/res/layout/bg_pic_grid_item.xml b/src/MyApplication/app/src/main/res/layout/bg_pic_grid_item.xml
new file mode 100644
index 0000000..04428e5
--- /dev/null
+++ b/src/MyApplication/app/src/main/res/layout/bg_pic_grid_item.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+    <!--此处必须用相对布局，线性布局不能做到让第二个iv显示在第一个iv控件上  -->
+    <RelativeLayout
+        android:layout_width="95.0dip"
+        android:layout_height="150dip"
+        android:background="@drawable/skin_img_item_background"
+        android:orientation="vertical">
+
+        <ImageView
+            android:id="@+id/gridview_item_iv"
+            android:layout_width="fill_parent"
+            android:layout_height="fill_parent" />
+
+        <ImageView
+            android:id="@+id/gridview_item_checked_iv"
+            android:layout_width="30dp"
+            android:layout_height="30dp"
+            android:layout_alignBottom="@id/gridview_item_iv"
+            android:layout_alignRight="@id/gridview_item_iv"
+            android:background="@drawable/skin_ico_checked"
+            android:scaleType="fitXY" />
+    </RelativeLayout>
+
+</LinearLayout>
diff --git a/src/MyApplication/app/src/main/res/layout/change_info_dialog_layout.xml b/src/MyApplication/app/src/main/res/layout/change_info_dialog_layout.xml
new file mode 100644
index 0000000..a75f833
--- /dev/null
+++ b/src/MyApplication/app/src/main/res/layout/change_info_dialog_layout.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:layout_marginLeft="15dp"
+    android:layout_marginRight="15dp"
+    android:layout_marginTop="15dp">
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal">
+        <ImageView
+            android:id="@+id/iv_change_info_icon"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:src="@drawable/diary_pwd"/>
+        <EditText
+            android:id="@+id/ed_change_info"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            />
+    </LinearLayout>
+
+  <!--  <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal">
+        <ImageView
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:src="@drawable/password"/>
+        <EditText
+            android:id="@+id/ed_pwd_confirm"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:inputType="textPassword"
+            android:hint="您的密码"/>
+    </LinearLayout>-->
+
+
+</LinearLayout>
\ No newline at end of file
diff --git a/src/MyApplication/app/src/main/res/layout/content_main.xml b/src/MyApplication/app/src/main/res/layout/content_main.xml
new file mode 100644
index 0000000..a4b6b0c
--- /dev/null
+++ b/src/MyApplication/app/src/main/res/layout/content_main.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:paddingBottom="@dimen/activity_vertical_margin"
+    android:paddingLeft="@dimen/activity_horizontal_margin"
+    android:paddingRight="@dimen/activity_horizontal_margin"
+    android:paddingTop="@dimen/activity_vertical_margin"
+    app:layout_behavior="@string/appbar_scrolling_view_behavior"
+    tools:context="ui.MainActivity"
+    tools:showIn="@layout/app_bar_main">
+    <!--
+    <android.support.v4.widget.SwipeRefreshLayout
+        android:id="@+id/swiperefreshlayout"
+        android:layout_width="fill_parent"
+        android:layout_height="fill_parent"
+        android:visibility="visible" >
+
+
+        <com.htq.baidu.coolnote.widget.HTQDragGridView
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:numColumns="2" />
+    </android.support.v4.widget.SwipeRefreshLayout>
+
+    <ImageView
+        android:id="@+id/frag_note_trash"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentBottom="true"
+        android:layout_centerHorizontal="true"
+        android:layout_margin="20dp"
+        android:src="@drawable/ic_note_delete"
+        android:visibility="invisible" />
+-->
+    <FrameLayout
+        android:id="@+id/main_fraglayout"
+        android:layout_height="match_parent"
+        android:layout_width="match_parent"/>
+</RelativeLayout>
diff --git a/src/MyApplication/app/src/main/res/layout/datetime_picker.xml b/src/MyApplication/app/src/main/res/layout/datetime_picker.xml
new file mode 100644
index 0000000..f10d592
--- /dev/null
+++ b/src/MyApplication/app/src/main/res/layout/datetime_picker.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net)
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="horizontal"
+    android:layout_gravity="center_horizontal"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content">
+
+    <NumberPicker
+        android:id="@+id/date"
+        android:layout_width="120dip"
+        android:layout_height="wrap_content"
+        android:focusable="true"
+        android:focusableInTouchMode="true"
+        />
+
+    <NumberPicker
+        android:id="@+id/hour"
+        android:layout_width="50dip"
+        android:layout_height="wrap_content"
+        android:layout_marginLeft="5dip"
+        android:focusable="true"
+        android:focusableInTouchMode="true"
+        />
+
+    <NumberPicker
+        android:id="@+id/minute"
+        android:layout_width="50dip"
+        android:layout_height="wrap_content"
+        android:layout_marginLeft="5dip"
+        android:focusable="true"
+        android:focusableInTouchMode="true"
+        />
+
+    <NumberPicker
+        android:id="@+id/amPm"
+        android:layout_width="50dip"
+        android:layout_height="wrap_content"
+        android:layout_marginLeft="5dip"
+        android:focusable="true"
+        android:focusableInTouchMode="true"
+        />
+</LinearLayout>
\ No newline at end of file
diff --git a/src/MyApplication/app/src/main/res/layout/fragment_change_background.xml b/src/MyApplication/app/src/main/res/layout/fragment_change_background.xml
new file mode 100644
index 0000000..a7ac11c
--- /dev/null
+++ b/src/MyApplication/app/src/main/res/layout/fragment_change_background.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical" >
+    <GridView
+        android:id="@+id/change_background_grid"
+        android:layout_width="fill_parent"
+        android:layout_height="fill_parent"
+        android:layout_marginLeft="10.0dip"
+        android:layout_marginRight="10.0dip"
+        android:columnWidth="96.0dip"
+        android:horizontalSpacing="2.0dip"
+        android:listSelector="#00000000"
+        android:numColumns="auto_fit"
+        android:scrollbars="none"
+        android:stretchMode="columnWidth"
+        android:verticalSpacing="2.0dip" />
+    
+
+</LinearLayout>
diff --git a/src/MyApplication/app/src/main/res/layout/fragment_note.xml b/src/MyApplication/app/src/main/res/layout/fragment_note.xml
new file mode 100644
index 0000000..6812f1d
--- /dev/null
+++ b/src/MyApplication/app/src/main/res/layout/fragment_note.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+
+    android:layout_height="match_parent" >
+
+
+
+    <!-- google 官方下拉刷新 -->
+
+    <android.support.v4.widget.SwipeRefreshLayout
+        android:id="@+id/swiperefreshlayout"
+        android:layout_width="fill_parent"
+        android:layout_height="fill_parent"
+        android:visibility="visible" >
+
+       <com.htq.baidu.coolnote.widget.HTQDragGridView
+            android:id="@+id/frag_note_list"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:numColumns="2" />
+    </android.support.v4.widget.SwipeRefreshLayout>
+
+    <ImageView
+        android:id="@+id/frag_note_trash"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentBottom="true"
+        android:layout_centerHorizontal="true"
+        android:layout_margin="20dp"
+        android:src="@drawable/ic_note_delete"
+        android:visibility="invisible" />
+
+</RelativeLayout>
diff --git a/src/MyApplication/app/src/main/res/layout/fragment_setting.xml b/src/MyApplication/app/src/main/res/layout/fragment_setting.xml
new file mode 100644
index 0000000..e79b578
--- /dev/null
+++ b/src/MyApplication/app/src/main/res/layout/fragment_setting.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/lin"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+    <RelativeLayout
+        android:id="@+id/rl_lock"
+        style="@style/option_item_rl">
+
+        <TextView
+            style="@style/option_item_text_parent"
+            android:text="@string/jia_mi"
+            android:textColor="#000"
+            android:textSize="16sp" />
+
+        <com.htq.baidu.coolnote.widget.ToggleButton
+            android:id="@+id/tb_lock"
+            style="@style/option_item_toggleButton"
+            android:layout_alignParentRight="true" />
+
+    </RelativeLayout>
+    <View
+        android:layout_height="1dp"
+        android:layout_width="match_parent"
+        android:background="#333"></View>
+    <RelativeLayout
+        android:id="@+id/rl_Tran"
+        style="@style/option_item_rl">
+
+        <TextView
+            style="@style/option_item_text_parent"
+            android:text="@string/settran"
+            android:textColor="#000"
+            android:textSize="16sp" />
+
+        <com.htq.baidu.coolnote.widget.ToggleButton
+            android:id="@+id/tb_tran"
+            style="@style/option_item_toggleButton"
+            android:layout_alignParentRight="true" />
+
+    </RelativeLayout>
+</LinearLayout>
diff --git a/src/MyApplication/app/src/main/res/layout/item_notebook.xml b/src/MyApplication/app/src/main/res/layout/item_notebook.xml
new file mode 100644
index 0000000..213fa2d
--- /dev/null
+++ b/src/MyApplication/app/src/main/res/layout/item_notebook.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/item_root_layout"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:paddingLeft="2dp"
+    android:paddingRight="2dp"
+    android:paddingTop="5dp" >
+
+    <RelativeLayout
+        android:id="@+id/item_note_titlebar"
+        android:layout_width="match_parent"
+        android:layout_height="25dp"
+
+        android:layout_marginTop="10dp"
+        android:paddingLeft="8dp"
+        android:paddingRight="8dp" >
+
+        <TextView
+            android:id="@+id/item_note_tv_date"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:layout_alignParentLeft="true"
+            android:layout_centerVertical="true"
+            android:gravity="center"
+            android:textColor="#666"
+            android:textSize="12sp" />
+
+        <ImageView
+            android:id="@+id/item_note_img_state"
+            android:layout_width="20dp"
+            android:layout_height="20dp"
+            android:layout_alignParentRight="true"
+            android:layout_centerVertical="true"
+            android:contentDescription="@null"
+            android:src="@drawable/icon_up" />
+    </RelativeLayout>
+
+    <TextView
+        android:id="@+id/item_note_content"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_below="@+id/item_note_titlebar"
+        android:gravity="top"
+        android:maxLines="5"
+        android:paddingBottom="20dp"
+        android:paddingLeft="5dp"
+        android:paddingRight="5dp"
+        android:paddingTop="20dp"
+        android:singleLine="false"
+        android:textColor="#333" />
+
+    <ImageView
+        android:id="@+id/item_note_img_thumbtack"
+        android:layout_width="30dp"
+        android:layout_height="30dp"
+        android:layout_alignBottom="@+id/item_note_titlebar"
+        android:layout_alignParentTop="true"
+        android:layout_centerHorizontal="true"
+        android:contentDescription="@null"
+        android:paddingBottom="2dp" />
+
+</RelativeLayout>
\ No newline at end of file
diff --git a/src/MyApplication/app/src/main/res/layout/layout_note_detail_menu.xml b/src/MyApplication/app/src/main/res/layout/layout_note_detail_menu.xml
new file mode 100644
index 0000000..511e4bf
--- /dev/null
+++ b/src/MyApplication/app/src/main/res/layout/layout_note_detail_menu.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:visibility="gone"
+    >
+
+    <ImageView
+
+        android:id="@+id/note_detail_img_menu"
+        style="@style/note_detail_menu"
+        android:layout_alignParentRight="true"
+        android:layout_alignParentTop="true"
+        android:layout_marginRight="15dp"
+        android:layout_marginTop="30dp"
+        android:contentDescription="@null"
+        android:scaleType="fitXY"
+        android:visibility="invisible"
+       />
+    <!-- android:visibility="invisible" -->
+    <com.htq.baidu.coolnote.widget.NoteItemCircleView
+        android:id="@+id/note_detail_img_green"
+        style="@style/note_detail_menu_item"
+        android:layout_alignLeft="@+id/note_detail_img_menu"
+        android:layout_below="@+id/note_detail_img_menu"
+
+        android:background="#ffcef3d4"
+        app:border_color="@color/white"
+        app:border_width="2dip"
+     />
+<!-- android:src="#ffcef3d4"-->
+    <com.htq.baidu.coolnote.widget.NoteItemCircleView
+        android:id="@+id/note_detail_img_blue"
+        style="@style/note_detail_menu_item"
+        android:layout_alignLeft="@+id/note_detail_img_menu"
+        android:layout_below="@+id/note_detail_img_green"
+
+        android:background="#ffb9e5f2"
+        app:border_color="@color/white"
+        app:border_width="2dip" />
+
+    <com.htq.baidu.coolnote.widget.NoteItemCircleView
+        android:id="@+id/note_detail_img_purple"
+        style="@style/note_detail_menu_item"
+        android:layout_alignLeft="@+id/note_detail_img_menu"
+        android:layout_below="@+id/note_detail_img_blue"
+
+        android:background="#ffede7e9"
+        app:border_color="@color/white"
+        app:border_width="2dip" />
+
+    <com.htq.baidu.coolnote.widget.NoteItemCircleView
+        android:id="@+id/note_detail_img_yellow"
+        style="@style/note_detail_menu_item"
+        android:layout_alignLeft="@+id/note_detail_img_menu"
+        android:layout_below="@+id/note_detail_img_purple"
+
+        android:background="#fffbf5b9"
+        app:border_color="@color/white"
+        app:border_width="2dip" />
+
+    <com.htq.baidu.coolnote.widget.NoteItemCircleView
+        android:id="@+id/note_detail_img_red"
+        style="@style/note_detail_menu_item"
+        android:layout_alignLeft="@+id/note_detail_img_menu"
+        android:layout_below="@+id/note_detail_img_yellow"
+
+        android:background="#fffcd4d3"
+        app:border_color="@color/white"
+        app:border_width="2dip" />
+
+</RelativeLayout>
\ No newline at end of file
diff --git a/src/MyApplication/app/src/main/res/layout/main_fragment.xml b/src/MyApplication/app/src/main/res/layout/main_fragment.xml
new file mode 100644
index 0000000..f9504c9
--- /dev/null
+++ b/src/MyApplication/app/src/main/res/layout/main_fragment.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+</LinearLayout>
diff --git a/src/MyApplication/app/src/main/res/layout/nav_header_main.xml b/src/MyApplication/app/src/main/res/layout/nav_header_main.xml
new file mode 100644
index 0000000..2011d10
--- /dev/null
+++ b/src/MyApplication/app/src/main/res/layout/nav_header_main.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="@dimen/nav_header_height"
+    android:background="@drawable/side_nav_bar"
+    android:gravity="bottom"
+    android:orientation="vertical"
+    android:paddingBottom="@dimen/activity_vertical_margin"
+    android:paddingLeft="@dimen/activity_horizontal_margin"
+    android:paddingRight="@dimen/activity_horizontal_margin"
+    android:paddingTop="@dimen/activity_vertical_margin"
+    android:theme="@style/ThemeOverlay.AppCompat.Dark">
+
+    <com.htq.baidu.coolnote.widget.CircleImageView
+        android:id="@+id/imageView"
+        android:layout_width="110dp"
+        android:layout_height="110dp"
+        android:scaleType="centerCrop"
+
+        android:clickable="true"
+        android:focusable="true"
+        android:layout_gravity="center_horizontal"
+        />
+    <!--  android:src="@mipmap/mine_avatar"-->
+    <TextView
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:paddingTop="@dimen/nav_header_vertical_spacing"
+        android:text="@string/app_name"
+        android:textAppearance="@style/TextAppearance.AppCompat.Body1" />
+
+    <TextView
+        android:id="@+id/textView"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="2dp"
+        android:text="@string/author" />
+
+</LinearLayout>
+<!--
+-->
\ No newline at end of file
diff --git a/src/MyApplication/app/src/main/res/layout/note_edit_activity_fraglayout.xml b/src/MyApplication/app/src/main/res/layout/note_edit_activity_fraglayout.xml
new file mode 100644
index 0000000..3637861
--- /dev/null
+++ b/src/MyApplication/app/src/main/res/layout/note_edit_activity_fraglayout.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+    <FrameLayout
+        android:id="@+id/main_fraglayout"
+        android:layout_height="match_parent"
+        android:layout_width="match_parent"/>
+
+</RelativeLayout>
diff --git a/src/MyApplication/app/src/main/res/layout/pop_showavator.xml b/src/MyApplication/app/src/main/res/layout/pop_showavator.xml
new file mode 100644
index 0000000..a5605e6
--- /dev/null
+++ b/src/MyApplication/app/src/main/res/layout/pop_showavator.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="#88000000" >
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_alignParentBottom="true"
+        android:background="@drawable/pop_bg"
+        android:orientation="vertical" >
+
+        <RelativeLayout
+            android:id="@+id/layout_photo"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center"
+            android:clickable="true" >
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:textColor="#3e3e39"
+                android:layout_centerInParent="true"
+                android:layout_margin="10dp"
+                android:drawablePadding="20dp"
+                android:gravity="center"
+                android:text="@string/pop_photo" />
+        </RelativeLayout>
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="2dp"
+            android:background="@drawable/base_horizontal_line" >
+        </View>
+
+        <RelativeLayout
+            android:id="@+id/layout_choose"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center"
+            android:clickable="true" >
+
+            <TextView
+                android:textColor="#3e3e39"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_centerInParent="true"
+                android:layout_margin="10dp"
+                android:drawablePadding="20dp"
+                android:gravity="center"
+                android:text="@string/pop_choose" />
+        </RelativeLayout>
+    </LinearLayout>
+
+</RelativeLayout>
\ No newline at end of file
diff --git a/src/MyApplication/app/src/main/res/layout/popupwindow_choose_layout.xml b/src/MyApplication/app/src/main/res/layout/popupwindow_choose_layout.xml
new file mode 100644
index 0000000..5bbe7cd
--- /dev/null
+++ b/src/MyApplication/app/src/main/res/layout/popupwindow_choose_layout.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@android:color/white">
+
+    <TextView
+        android:id="@+id/go_to_album"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:text="相 册"
+        android:textSize="20sp"
+        android:gravity="center"
+        android:layout_marginTop="5dp"
+        android:layout_marginBottom="5dp"/>
+    <ImageView
+        android:layout_width="300dp"
+        android:layout_height="0.5dp"
+        android:layout_gravity="center"
+        android:background="@color/colorPrimaryDark"/>
+    <TextView
+        android:id="@+id/go_to_camera"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:text="拍 照"
+        android:textSize="20sp"
+        android:gravity="center"
+        android:layout_marginTop="5dp"
+        android:layout_marginBottom="5dp"/>
+</LinearLayout>
\ No newline at end of file
diff --git a/src/MyApplication/app/src/main/res/layout/widget_lock_view.xml b/src/MyApplication/app/src/main/res/layout/widget_lock_view.xml
new file mode 100644
index 0000000..41ba98d
--- /dev/null
+++ b/src/MyApplication/app/src/main/res/layout/widget_lock_view.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<merge
+    xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <com.htq.baidu.coolnote.widget.patternlock.LockPatternView
+        android:id="@+id/lockView"
+        android:layout_width="400dp"
+        android:layout_height="400dp"
+       />
+    <!-- android:layout_weight="1"-->
+</merge>
\ No newline at end of file
diff --git a/src/MyApplication/app/src/main/res/menu/activity_main_drawer.xml b/src/MyApplication/app/src/main/res/menu/activity_main_drawer.xml
new file mode 100644
index 0000000..4a3732c
--- /dev/null
+++ b/src/MyApplication/app/src/main/res/menu/activity_main_drawer.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<menu xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <group android:checkableBehavior="single">
+
+        <item
+            android:id="@+id/nav_home"
+            android:icon="@drawable/ic_menu_slideshow"
+            android:title="@string/home" />
+        <!--
+        <item
+            android:id="@+id/nav_create_folder"
+            android:icon="@drawable/ic_menu_slideshow"
+            android:title="@string/create_folder" />
+        <item
+            android:id="@+id/nav_find"
+            android:icon="@drawable/ic_menu_slideshow"
+            android:title="@string/find" />-->
+        <item
+            android:id="@+id/nav_change_bg"
+            android:icon="@drawable/ic_menu_gallery"
+            android:title="@string/change_bg" />
+
+        <item
+            android:id="@+id/nav_setting"
+            android:icon="@drawable/ic_menu_manage"
+            android:title="@string/setting" />
+    </group>
+
+    <item android:title="">
+        <menu>
+            <item
+                android:id="@+id/nav_share"
+                android:icon="@drawable/ic_menu_share"
+                android:title="@string/share_app" />
+            <item
+                android:id="@+id/nav_about"
+                android:icon="@drawable/about"
+                android:title="@string/about_app" />
+         </menu>
+ </item>
+    <item android:title="">
+        <menu>
+            <item
+                android:id="@+id/nav_exit"
+                android:icon="@android:drawable/ic_menu_info_details"
+                android:title="@string/exit" />
+        </menu>
+    </item>
+</menu>
diff --git a/src/MyApplication/app/src/main/res/menu/main.xml b/src/MyApplication/app/src/main/res/menu/main.xml
new file mode 100644
index 0000000..a2411e3
--- /dev/null
+++ b/src/MyApplication/app/src/main/res/menu/main.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<menu xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto">
+    <item
+        android:id="@+id/action_settings"
+        android:orderInCategory="100"
+        android:title="@string/action_settings"
+        app:showAsAction="never" />
+</menu>
diff --git a/src/MyApplication/app/src/main/res/menu/notebook_edit_menu.xml b/src/MyApplication/app/src/main/res/menu/notebook_edit_menu.xml
new file mode 100644
index 0000000..7a86181
--- /dev/null
+++ b/src/MyApplication/app/src/main/res/menu/notebook_edit_menu.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<menu xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:osc="http://schemas.android.com/apk/res-auto" >
+
+    <item
+        android:id="@+id/public_menu_send"
+        android:icon="@drawable/actionbar_send_icon"
+        android:title="@string/submit_notebook"
+        android:visible="true"
+        osc:showAsAction="always"/>
+
+</menu>
\ No newline at end of file
diff --git a/src/MyApplication/app/src/main/res/mipmap-hdpi/app_icon.jpg b/src/MyApplication/app/src/main/res/mipmap-hdpi/app_icon.jpg
new file mode 100644
index 0000000..352ab4e
Binary files /dev/null and b/src/MyApplication/app/src/main/res/mipmap-hdpi/app_icon.jpg differ
diff --git a/src/MyApplication/app/src/main/res/mipmap-hdpi/mine_avatar.jpg b/src/MyApplication/app/src/main/res/mipmap-hdpi/mine_avatar.jpg
new file mode 100644
index 0000000..2faebc0
Binary files /dev/null and b/src/MyApplication/app/src/main/res/mipmap-hdpi/mine_avatar.jpg differ
diff --git a/src/MyApplication/app/src/main/res/mipmap-hdpi/welc_bg.jpg b/src/MyApplication/app/src/main/res/mipmap-hdpi/welc_bg.jpg
new file mode 100644
index 0000000..7bfeea9
Binary files /dev/null and b/src/MyApplication/app/src/main/res/mipmap-hdpi/welc_bg.jpg differ
diff --git a/src/MyApplication/app/src/main/res/values-v21/attrs.xml b/src/MyApplication/app/src/main/res/values-v21/attrs.xml
new file mode 100644
index 0000000..911ac1f
--- /dev/null
+++ b/src/MyApplication/app/src/main/res/values-v21/attrs.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <attr name="windows_bg" format="reference"/>
+
+    <declare-styleable name="ToggleButton">
+        <attr name="toggle_border_width" format="dimension">
+        </attr>
+        <attr name="offBorderColor" format="reference|color">
+        </attr>
+        <attr name="offColor" format="reference|color">
+        </attr>
+        <attr name="onColor" format="reference|color">
+        </attr>
+        <attr name="spotColor" format="reference|color">
+        </attr>
+    </declare-styleable>
+
+    <declare-styleable name="CircleImageView">
+        <attr name="border_width" format="dimension" />
+        <attr name="border_color" format="color" />
+    </declare-styleable>
+
+    <declare-styleable name="PagerSlidingTabStrip">
+        <attr name="slidingBlock" format="reference|color" />
+        <attr name="allowWidthFull" format="boolean" />
+        <attr name="disableViewPager" format="boolean" />
+    </declare-styleable>
+
+    <declare-styleable name="RefreshLayout">
+        <attr name="footer_view_background" format="color" />
+        <attr name="footer_view_text_color" format="color" />
+        <attr name="is_need_footer" format="boolean" />
+    </declare-styleable>
+
+    <declare-styleable name="CirclePagerIndicator">
+        <attr name="circle_indicator_centerHorizontal" format="boolean" />
+        <attr name="circle_indicator_follow" format="boolean" />
+        <attr name="circle_indicator_orientation" format="reference" />
+        <attr name="circle_indicator_color" format="color" />
+        <attr name="circle_indicator_stroke_color" format="color" />
+        <attr name="circle_indicator_stroke_width" format="dimension" />
+        <attr name="circle_indicator_fill_color" format="color" />
+        <attr name="circle_indicator_radius" format="dimension" />
+        <attr name="circle_indicator_space" format="dimension" />
+        <attr name="circle_indicator_indicator_radius" format="dimension" />
+    </declare-styleable>
+    <declare-styleable name="LinePagerIndicator">
+        <attr name="line_indicator_centerHorizontal" format="boolean" />
+        <attr name="line_indicator_width" format="dimension" />
+        <attr name="line_indicator_height" format="dimension" />
+        <attr name="line_indicator_indicator_height" format="dimension" />
+        <attr name="line_indicator_space" format="dimension" />
+        <attr name="line_indicator_fill_color" format="color" />
+        <attr name="line_indicator_indicator_color" format="color" />
+        <attr name="line_indicator_follow" format="boolean" />
+    </declare-styleable>
+    <declare-styleable name="FlowLayout">
+        <attr name="verticalSpace" format="dimension" />
+        <attr name="horizontalSpace" format="dimension" />
+    </declare-styleable>
+</resources>
\ No newline at end of file
diff --git a/src/MyApplication/app/src/main/res/values-v21/styles.xml b/src/MyApplication/app/src/main/res/values-v21/styles.xml
new file mode 100644
index 0000000..159dd1d
--- /dev/null
+++ b/src/MyApplication/app/src/main/res/values-v21/styles.xml
@@ -0,0 +1,12 @@
+<resources>
+
+    <style name="AppTheme.NoActionBar">
+        <item name="windowActionBar">false</item>
+        <item name="windowNoTitle">true</item>
+        <item name="colorAccent">@color/colorAccent</item>
+        <item name="colorPrimary">@color/colorPrimary</item>
+        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
+        <item name="android:windowDrawsSystemBarBackgrounds">true</item>
+        <item name="android:statusBarColor">@android:color/transparent</item>
+    </style>
+</resources>
diff --git a/src/MyApplication/app/src/main/res/values-w820dp/dimens.xml b/src/MyApplication/app/src/main/res/values-w820dp/dimens.xml
new file mode 100644
index 0000000..63fc816
--- /dev/null
+++ b/src/MyApplication/app/src/main/res/values-w820dp/dimens.xml
@@ -0,0 +1,6 @@
+<resources>
+    <!-- Example customization of dimensions originally defined in res/values/dimens.xml
+         (such as screen margins) for screens with more than 820dp of available width. This
+         would include 7" and 10" devices in landscape (~960dp and ~1280dp respectively). -->
+    <dimen name="activity_horizontal_margin">64dp</dimen>
+</resources>
diff --git a/src/MyApplication/app/src/main/res/values/attrs.xml b/src/MyApplication/app/src/main/res/values/attrs.xml
new file mode 100644
index 0000000..ab6c430
--- /dev/null
+++ b/src/MyApplication/app/src/main/res/values/attrs.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <declare-styleable name="CircleImageView">
+        <attr name="civ_border_width" format="dimension" />
+        <attr name="civ_border_color" format="color" />
+        <attr name="civ_border_overlay" format="boolean" />
+        <attr name="civ_fill_color" format="color" />
+    </declare-styleable>
+</resources>
diff --git a/src/MyApplication/app/src/main/res/values/colors.xml b/src/MyApplication/app/src/main/res/values/colors.xml
index 7a9a4fc..10f07f2 100644
--- a/src/MyApplication/app/src/main/res/values/colors.xml
+++ b/src/MyApplication/app/src/main/res/values/colors.xml
@@ -5,13 +5,21 @@
     <color name="colorAccent">#FF4081</color>
 
     <!-- 下拉刷新时，颜色值 -->
+    <color name="swiperefresh_color1">#ff00ddff</color>
+    <color name="swiperefresh_color2">#ffffbb33</color>
+    <color name="swiperefresh_color3">#ffff4444</color>
+    <color name="swiperefresh_color4">#ffaa66cc</color>
 
+    <color name="devide_line">#CBCED2</color>
     <color name="base_color_text_white">#ffffff</color>
+    <color name="transparent">#00000000</color>
     <color name="base_color_text_black">#3e3e39</color>
     <color name="base_color_text_gray">#9fa0a0</color>
     <color name="color_theme">#489cfa</color>
     <color name="theme_bg_color">#f0f2f5</color>
-    <color name="transparent">#00000000</color><!--透明色 -->
+
+
+
     <color name="white">#FFFFFF</color><!--白色 -->
     <color name="ivory">#FFFFF0</color><!--象牙色 -->
     <color name="lightyellow">#FFFFE0</color><!--亮黄色 -->
diff --git a/src/MyApplication/app/src/main/res/values/dimens.xml b/src/MyApplication/app/src/main/res/values/dimens.xml
index 47c8224..fee0beb 100644
--- a/src/MyApplication/app/src/main/res/values/dimens.xml
+++ b/src/MyApplication/app/src/main/res/values/dimens.xml
@@ -1,5 +1,22 @@
 <resources>
+    <!-- Default screen margins, per the Android Design guidelines. -->
+    <dimen name="nav_header_vertical_spacing">16dp</dimen>
+    <dimen name="nav_header_height">200dp</dimen>
     <!-- Default screen margins, per the Android Design guidelines. -->
     <dimen name="activity_horizontal_margin">16dp</dimen>
     <dimen name="activity_vertical_margin">16dp</dimen>
+    <dimen name="fab_margin">16dp</dimen>
+    <dimen name="space_35">35.0dip</dimen>
+    <dimen name="base_action_bar_height">48.0dip</dimen>
+    <dimen name="text_size_small">14sp</dimen>
+    <dimen name="text_size_medium">16sp</dimen>
+    <dimen name="text_size_large">18sp</dimen>
+    <dimen name="register_margin">10.0dp</dimen>
+
+    <!--字体-->
+    <dimen name="text_font_size_super">32sp</dimen>
+    <dimen name="text_font_size_large">25sp</dimen>
+    <dimen name="text_font_size_medium">20sp</dimen>
+    <dimen name="text_font_size_normal">14sp</dimen>
+    <dimen name="text_font_size_small">12sp</dimen>
 </resources>
diff --git a/src/MyApplication/app/src/main/res/values/drawables.xml b/src/MyApplication/app/src/main/res/values/drawables.xml
new file mode 100644
index 0000000..52c6a6c
--- /dev/null
+++ b/src/MyApplication/app/src/main/res/values/drawables.xml
@@ -0,0 +1,8 @@
+<resources xmlns:android="http://schemas.android.com/apk/res/android">
+    <item name="ic_menu_camera" type="drawable">@android:drawable/ic_menu_camera</item>
+    <item name="ic_menu_gallery" type="drawable">@android:drawable/ic_menu_gallery</item>
+    <item name="ic_menu_slideshow" type="drawable">@android:drawable/ic_menu_slideshow</item>
+    <item name="ic_menu_manage" type="drawable">@android:drawable/ic_menu_manage</item>
+    <item name="ic_menu_share" type="drawable">@android:drawable/ic_menu_share</item>
+    <item name="ic_menu_send" type="drawable">@android:drawable/ic_menu_send</item>
+</resources>
diff --git a/src/MyApplication/app/src/main/res/values/strings.xml b/src/MyApplication/app/src/main/res/values/strings.xml
index 2e69503..da6aab9 100644
--- a/src/MyApplication/app/src/main/res/values/strings.xml
+++ b/src/MyApplication/app/src/main/res/values/strings.xml
@@ -1,5 +1,48 @@
 <resources>
     <string name="app_name">嗖藏</string>
+
+    <string name="navigation_drawer_open">Open navigation drawer</string>
+    <string name="navigation_drawer_close">Close navigation drawer</string>
+
+    <string name="action_settings">透明效果</string>
+    <string name="submit_notebook">保存记录</string>
+    <string name="add_notebook">添加记录</string>
+    <string name="change_bg">更换皮肤</string>
+    <string name="share_app">分享应用</string>
+    <string name="about_app">关于应用</string>
+    <string name="about_me">作者：@：Curry </string>
+    <string name="setting">设置</string>
+    <string name="home">主页</string>
+    <string name="author">嗖藏 @htq All rights reserved </string>
+    <string name="jia_mi">应用加密</string>
+    <string name="slogan">漂亮好用的记事本</string>
+    <string name="exit">退出</string>
+    <string name="settran">应用透明背景</string>
+    <string name="pop_photo">拍照</string>
+    <string name="pop_choose">从相册中选择</string>
+    <string name="login_username_hint">请输入账号</string>
+    <string name="login_password_hint">请输入密码</string>
+    <string name="login">登陆</string>
+    <string name="register_txt1">还没账号？</string>
+    <string name="register_txt2">立即注册</string>
+    <string name="login_account">账号</string>
+    <string name="login_pwd">密码</string>
+    <string name="register">注册</string>
+    <string name="login_email">确认密码</string>
+    <string name="login_email_hint">请再次输入密码</string>
+    <string name="register_account">注册账号</string>
+    <string name="user_info">个人资料</string>
+    <string name="my_blog">http://blog.csdn.net/htq__欢迎大家访问</string>
+    <string name="datetime_dialog_ok">设置</string>
+    <string name="datetime_dialog_cancel">取消</string>
+    <string name="notealert_look">查看详情</string>
+    <string name="notealert_cancle">哥知道了</string>
+    <string name="font_small">小</string>
+    <string name="font_normal">普通</string>
+    <string name="font_large">大</string>
+    <string name="font_super">较大</string>
+    <string name="create_folder">创建文件夹</string>
+    <string name="find">博客</string>
     <string name="title_activity_login">Login</string>
 
     <!-- Strings related to login -->
diff --git a/src/MyApplication/app/src/main/res/values/styles.xml b/src/MyApplication/app/src/main/res/values/styles.xml
index 5885930..ce2fff6 100644
--- a/src/MyApplication/app/src/main/res/values/styles.xml
+++ b/src/MyApplication/app/src/main/res/values/styles.xml
@@ -1,11 +1,150 @@
 <resources>
 
-    <!-- Base application theme. -->
-    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
+    <!-- Base application theme.-->
+    <style name="AppTheme" parent="Base.AppTheme">
+       <!-- Customize your theme here.-->
+    </style>
+    <style name="Base.AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
         <!-- Customize your theme here. -->
         <item name="colorPrimary">@color/colorPrimary</item>
         <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
         <item name="colorAccent">@color/colorAccent</item>
     </style>
 
+    <style name="AppTheme.NoActionBar"  parent="AppTheme" >
+        <item name="windowActionBar">false</item>
+        <item name="windowNoTitle">true</item>
+
+    </style>
+
+    <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
+
+    <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
+
+
+    <style name="note_detail_menu">
+        <item name="android:layout_height">30dp</item>
+        <item name="android:layout_width">30dp</item>
+    </style>
+    <style name="note_detail_menu_item" parent="note_detail_menu">
+        <item name="android:layout_marginTop">5dp</item>
+        <item name="android:layout_marginBottom">5dp</item>
+    </style>
+    <style name="option_item_text_parent">
+        <item name="android:layout_width">wrap_content</item>
+        <item name="android:layout_height">wrap_content</item>
+        <item name="android:layout_marginRight">4dp</item>
+        <item name="android:gravity">center_vertical</item>
+        <item name="android:textColor">#333</item>
+        <item name="android:clickable">false</item>
+        <item name="android:layout_centerVertical">true</item>
+        <item name="android:textSize">16sp</item>
+    </style>
+
+    <style name="option_item_toggleButton">
+        <item name="android:layout_width">45dp</item>
+        <item name="android:layout_height">20dp</item>
+    </style>
+
+    <style name="option_item_rl">
+        <item name="android:layout_width">match_parent</item>
+        <item name="android:layout_height">wrap_content</item>
+        <item name="android:background">#fff</item>
+        <item name="android:clickable">true</item>
+        <item name="android:padding">13dp</item>
+        <item name="android:gravity">center_vertical</item>
+        <item name="android:orientation">horizontal</item>
+    </style>
+
+    <style name="edittext_container_style">
+        <item name="android:layout_width">match_parent</item>
+        <item name="android:layout_height">wrap_content</item>
+        <item name="android:layout_marginRight">35dp</item>
+        <item name="android:layout_marginLeft">35dp</item>
+        <item name="android:background">@drawable/login_ll_background</item>
+        <item name="android:divider">@drawable/login_divider_line</item>
+        <item name="android:orientation">vertical</item>
+        <item name="android:showDividers">middle</item>
+    </style>
+
+    <style name="login_edittext_style">
+        <item name="android:layout_width">match_parent</item>
+        <item name="android:layout_height">match_parent</item>
+        <item name="android:layout_weight">1</item>
+        <item name="android:background">@drawable/login_et_background</item>
+        <item name="android:padding">10dp</item>
+        <item name="android:textSize">20dp</item>
+    </style>
+
+    <style name="login_button_style">
+        <item name="android:layout_width">match_parent</item>
+        <item name="android:layout_height">wrap_content</item>
+        <item name="android:layout_marginRight">35dp</item>
+        <item name="android:layout_marginLeft">35dp</item>
+        <item name="android:layout_marginTop">30dp</item>
+        <item name="android:padding">10dp</item>
+        <item name="android:textSize">18dp</item>
+        <item name="android:textColor">@android:color/white</item>
+        <item name="android:textAllCaps">false</item>
+    </style>
+
+    <style name="Smile">
+        <item name="android:layout_width">wrap_content</item>
+        <item name="android:layout_height">wrap_content</item>
+    </style>
+
+    <style name="Smile.TextView">
+        <item name="android:textSize">18sp</item>
+    </style>
+    <style name="Smile.TextView._Black">
+        <item name="android:textColor">@color/base_color_text_black</item>
+    </style>
+
+    <style name="Register_Input">
+        <item name="android:orientation">horizontal</item>
+        <item name="android:background">@drawable/base_edit_input</item>
+        <item name="android:layout_width">match_parent</item>
+        <item name="android:layout_height">@dimen/base_action_bar_height</item>
+        <item name="android:layout_marginTop">@dimen/register_margin</item>
+        <item name="android:layout_marginLeft">@dimen/register_margin</item>
+        <item name="android:layout_marginRight">@dimen/register_margin</item>
+    </style>
+    <style name="Animations" />
+    <style name="Animations.GrowFromBottom">
+        <item name="@android:windowEnterAnimation">@anim/grow_from_bottom</item>
+        <item name="@android:windowExitAnimation">@anim/shrink_from_top</item>
+    </style>
+
+    <style name="Register_Edit">
+        <item name="android:layout_width">0dp</item>
+        <item name="android:layout_height">match_parent</item>
+        <item name="android:layout_weight">1.0</item>
+        <item name="android:layout_marginLeft">@dimen/register_margin</item>
+        <item name="android:background">@color/transparent</item>
+    </style>
+
+    <style name="TextAppearanceUnderMenuIcon">
+        <item name="android:textSize">@dimen/text_font_size_normal</item>
+        <item name="android:textColor">@android:color/black</item>
+    </style>
+
+
+
+    <style name="TextAppearanceSuper">
+        <item name="android:textSize">@dimen/text_font_size_super</item>
+        <item name="android:textColorLink">#0000ff</item>
+    </style>
+    <style name="TextAppearanceLarge">
+        <item name="android:textSize">@dimen/text_font_size_large</item>
+        <item name="android:textColorLink">#0000ff</item>
+    </style>
+    <style name="TextAppearanceMedium">
+        <item name="android:textSize">@dimen/text_font_size_medium</item>
+        <item name="android:textColorLink">#0000ff</item>
+    </style>
+    <style name="TextAppearanceNormal">
+        <item name="android:textSize">@dimen/text_font_size_normal</item>
+        <item name="android:textColorLink">#0000ff</item>
+    </style>
+
 </resources>
