From 8cd26f02d8bb48d7269cf73239800d85f4a78b24 Mon Sep 17 00:00:00 2001 From: pozhujun Date: Tue, 13 Jun 2017 11:10:10 +0800 Subject: [PATCH 1/8] =?UTF-8?q?setContentView=E7=BB=98=E5=88=B6=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E5=88=86=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../study/meetpast/com/studymodule/MainActivity.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/study/meetpast/com/studymodule/MainActivity.java b/app/src/main/java/study/meetpast/com/studymodule/MainActivity.java index f8d61de..96bd185 100644 --- a/app/src/main/java/study/meetpast/com/studymodule/MainActivity.java +++ b/app/src/main/java/study/meetpast/com/studymodule/MainActivity.java @@ -1,13 +1,21 @@ package study.meetpast.com.studymodule; -import android.support.v7.app.AppCompatActivity; +import android.app.Activity; import android.os.Bundle; -public class MainActivity extends AppCompatActivity { +public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } + /** + * activity .setContentView绘制流程分析 + * 创建PhoneWindow mWindow,mWindow.setContentView + * 创建ViewGroup mContentParent,创建DecorView mDecor + * mContentParent = generateLayout(mDecor); mDecor = generateDecor(-1); + * mLayoutInflater.inflate(layoutResID, mContentParent); mLayoutInflater = LayoutInflater.from(context); + * + */ } From a2c4f5955fb32433c737e85b1164aa80aaaf6b3b Mon Sep 17 00:00:00 2001 From: pozhujun Date: Tue, 13 Jun 2017 14:08:46 +0800 Subject: [PATCH 2/8] =?UTF-8?q?=E7=BB=98=E5=88=B6=E6=B5=81=E7=A8=8B-?= =?UTF-8?q?=E6=BA=90=E7=A0=81=E5=88=86=E6=9E=90=E7=AC=94=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../assets/Lsn1_\347\254\224\350\256\260" | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 "app/src/main/assets/Lsn1_\347\254\224\350\256\260" diff --git "a/app/src/main/assets/Lsn1_\347\254\224\350\256\260" "b/app/src/main/assets/Lsn1_\347\254\224\350\256\260" new file mode 100644 index 0000000..bbe10d2 --- /dev/null +++ "b/app/src/main/assets/Lsn1_\347\254\224\350\256\260" @@ -0,0 +1,34 @@ +读源码一定要有线索 +要带着自己的疑问来读源码 + +一、从setContentView开始,了解view的加载过程 + + 1、疑问: + setContentView到底做了些什么,为什么调用后就可以显示出我们想要的布局页面? + + PhoneWindow倒是什么东西?Window和它是什么关系? + + DecorView是干什么用的?和我们的布局又有什么样的关系 + + requestFeature为什么要在setContentView之前调用? + + + 2、LayoutInflater 到底怎么把xml添加到decorview? + + include 为什么不能xml资源布局的根节点? + + merge 为什么作为xml资源布局的根节点? + + + 小结:每一个Activity都有一个关联的Window对象,用来描述应用程序窗口。 + 每一个窗口内部又包含了一个DecorView对象,Decorview对象用来描述窗口的视图--xml布局 + + 上述是创建DecorView的过程 + + 3、DecorView如何添加到Window + 看图片,最终调用了ViewRootImpl.setView + 在setview方法里调用了view.assignParent(this);,将Decorview的mParent设置成ViewRootImpl + 这也就是为什么View再用requestLayout方法的时候最终会走到ViewRootImpl的requestLayout + + + 找到UI绘制流程的起始点 \ No newline at end of file From 6e2f1d490f2ab6e1a79388b3c22085637bdc475a Mon Sep 17 00:00:00 2001 From: pozhujun Date: Wed, 21 Jun 2017 13:20:26 +0800 Subject: [PATCH 3/8] =?UTF-8?q?=E5=88=86=E6=94=AF=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 29 ++++ app/src/main/res/drawable/btn_checked.xml | 9 ++ app/src/main/res/drawable/btn_selected.xml | 9 ++ app/src/main/res/drawable/btn_unchecked.xml | 9 ++ app/src/main/res/drawable/btn_unselected.xml | 9 ++ .../res/drawable/selector_btn_checked.xml | 7 + .../res/drawable/selector_btn_selected.xml | 7 + .../main/res/drawable/vpi__tab_indicator.xml | 34 +++++ .../vpi__tab_selected_focused_holo.9.png | Bin 0 -> 147 bytes .../res/drawable/vpi__tab_selected_holo.9.png | Bin 0 -> 148 bytes .../vpi__tab_selected_pressed_holo.9.png | Bin 0 -> 147 bytes .../vpi__tab_unselected_focused_holo.9.png | Bin 0 -> 146 bytes .../drawable/vpi__tab_unselected_holo.9.png | Bin 0 -> 153 bytes .../vpi__tab_unselected_pressed_holo.9.png | Bin 0 -> 145 bytes app/src/main/res/layout/activity_main.xml | 61 +++++++++ app/src/main/res/layout/activity_test.xml | 18 +++ app/src/main/res/layout/fragment_splash.xml | 22 +++ app/src/main/res/layout/item_menu.xml | 19 +++ app/src/main/res/layout/menu_pop.xml | 15 ++ app/src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3418 bytes app/src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2206 bytes app/src/main/res/mipmap-xhdpi/aliwx_at6.png | Bin 0 -> 130 bytes app/src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4842 bytes .../main/res/mipmap-xhdpi/icon_arrow_down.png | Bin 0 -> 3067 bytes app/src/main/res/mipmap-xhdpi/tangyan_1.jpg | Bin 0 -> 22346 bytes app/src/main/res/mipmap-xhdpi/tangyan_11.jpg | Bin 0 -> 31730 bytes app/src/main/res/mipmap-xhdpi/tangyan_12.jpg | Bin 0 -> 115960 bytes app/src/main/res/mipmap-xhdpi/tangyan_2.jpg | Bin 0 -> 22622 bytes app/src/main/res/mipmap-xhdpi/tangyan_5.jpg | Bin 0 -> 79872 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 7718 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 10486 bytes app/src/main/res/values-w820dp/dimens.xml | 6 + app/src/main/res/values/colors.xml | 6 + app/src/main/res/values/dimens.xml | 5 + app/src/main/res/values/strings.xml | 3 + app/src/main/res/values/styles.xml | 11 ++ app/src/main/res/values/vpi__attrs.xml | 129 ++++++++++++++++++ app/src/main/res/values/vpi__colors.xml | 26 ++++ app/src/main/res/values/vpi__defaults.xml | 53 +++++++ app/src/main/res/values/vpi__styles.xml | 47 +++++++ build.gradle | 23 ++++ settings.gradle | 1 + 42 files changed, 558 insertions(+) create mode 100644 app/build.gradle create mode 100644 app/src/main/res/drawable/btn_checked.xml create mode 100644 app/src/main/res/drawable/btn_selected.xml create mode 100644 app/src/main/res/drawable/btn_unchecked.xml create mode 100644 app/src/main/res/drawable/btn_unselected.xml create mode 100644 app/src/main/res/drawable/selector_btn_checked.xml create mode 100644 app/src/main/res/drawable/selector_btn_selected.xml create mode 100644 app/src/main/res/drawable/vpi__tab_indicator.xml create mode 100644 app/src/main/res/drawable/vpi__tab_selected_focused_holo.9.png create mode 100644 app/src/main/res/drawable/vpi__tab_selected_holo.9.png create mode 100644 app/src/main/res/drawable/vpi__tab_selected_pressed_holo.9.png create mode 100644 app/src/main/res/drawable/vpi__tab_unselected_focused_holo.9.png create mode 100644 app/src/main/res/drawable/vpi__tab_unselected_holo.9.png create mode 100644 app/src/main/res/drawable/vpi__tab_unselected_pressed_holo.9.png create mode 100644 app/src/main/res/layout/activity_main.xml create mode 100644 app/src/main/res/layout/activity_test.xml create mode 100644 app/src/main/res/layout/fragment_splash.xml create mode 100644 app/src/main/res/layout/item_menu.xml create mode 100644 app/src/main/res/layout/menu_pop.xml create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xhdpi/aliwx_at6.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xhdpi/icon_arrow_down.png create mode 100644 app/src/main/res/mipmap-xhdpi/tangyan_1.jpg create mode 100644 app/src/main/res/mipmap-xhdpi/tangyan_11.jpg create mode 100644 app/src/main/res/mipmap-xhdpi/tangyan_12.jpg create mode 100644 app/src/main/res/mipmap-xhdpi/tangyan_2.jpg create mode 100644 app/src/main/res/mipmap-xhdpi/tangyan_5.jpg create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 app/src/main/res/values-w820dp/dimens.xml create mode 100644 app/src/main/res/values/colors.xml create mode 100644 app/src/main/res/values/dimens.xml create mode 100644 app/src/main/res/values/strings.xml create mode 100644 app/src/main/res/values/styles.xml create mode 100644 app/src/main/res/values/vpi__attrs.xml create mode 100644 app/src/main/res/values/vpi__colors.xml create mode 100644 app/src/main/res/values/vpi__defaults.xml create mode 100644 app/src/main/res/values/vpi__styles.xml create mode 100644 build.gradle create mode 100644 settings.gradle diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..41b0e57 --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,29 @@ +apply plugin: 'com.android.application' + +android { + compileSdkVersion 25 + buildToolsVersion "25.0.3" + defaultConfig { + applicationId "study.meetpast.com.studymodule" + minSdkVersion 15 + targetSdkVersion 25 + versionCode 1 + versionName "1.0" + testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } +} + +dependencies { + compile fileTree(dir: 'libs', include: ['*.jar']) + androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { + exclude group: 'com.android.support', module: 'support-annotations' + }) + compile 'com.android.support:appcompat-v7:25.3.1' + testCompile 'junit:junit:4.12' +} diff --git a/app/src/main/res/drawable/btn_checked.xml b/app/src/main/res/drawable/btn_checked.xml new file mode 100644 index 0000000..a6ccec4 --- /dev/null +++ b/app/src/main/res/drawable/btn_checked.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/btn_selected.xml b/app/src/main/res/drawable/btn_selected.xml new file mode 100644 index 0000000..2dbc3ef --- /dev/null +++ b/app/src/main/res/drawable/btn_selected.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/btn_unchecked.xml b/app/src/main/res/drawable/btn_unchecked.xml new file mode 100644 index 0000000..70ea0a6 --- /dev/null +++ b/app/src/main/res/drawable/btn_unchecked.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/btn_unselected.xml b/app/src/main/res/drawable/btn_unselected.xml new file mode 100644 index 0000000..70ea0a6 --- /dev/null +++ b/app/src/main/res/drawable/btn_unselected.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_btn_checked.xml b/app/src/main/res/drawable/selector_btn_checked.xml new file mode 100644 index 0000000..801fd11 --- /dev/null +++ b/app/src/main/res/drawable/selector_btn_checked.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_btn_selected.xml b/app/src/main/res/drawable/selector_btn_selected.xml new file mode 100644 index 0000000..458265e --- /dev/null +++ b/app/src/main/res/drawable/selector_btn_selected.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/vpi__tab_indicator.xml b/app/src/main/res/drawable/vpi__tab_indicator.xml new file mode 100644 index 0000000..520d08c --- /dev/null +++ b/app/src/main/res/drawable/vpi__tab_indicator.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/vpi__tab_selected_focused_holo.9.png b/app/src/main/res/drawable/vpi__tab_selected_focused_holo.9.png new file mode 100644 index 0000000000000000000000000000000000000000..673e3bf10d60cc54b6dfef2fcda24575073adf61 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1i!3HFsuehcLq*#ibJVQ8upoSx*1IXtr@Q5sC zVBqcqVMgJWBc+iXw=G=Ra=)z4*}Q$iB}l;b6k literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/vpi__tab_selected_holo.9.png b/app/src/main/res/drawable/vpi__tab_selected_holo.9.png new file mode 100644 index 0000000000000000000000000000000000000000..d57df98b501944b4ba63623766c396b5bccc29ee GIT binary patch literal 148 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1i!3HFsuehcLq*#ibJVQ8upoSx*1IXtr@Q5sC zVBqcqVMg}h~fd(*my85}Sb4q9e0H>EG$N&HU literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/vpi__tab_unselected_focused_holo.9.png b/app/src/main/res/drawable/vpi__tab_unselected_focused_holo.9.png new file mode 100644 index 0000000000000000000000000000000000000000..294991d7931432f4ce0615f83594077185b41e53 GIT binary patch literal 146 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1c!3HD^Kbl$tDVAa<&kznEsNqQI0P;BtJR*x3 z7`Qt@n9=;?>9s&X6Hgb%5RRG22KRnVX>4qKXwM^^Uwi5RN9qg%hl7#%FO7Y8A{hJ} m-AWwAG-}%xl(FUbF)^t86Xr1Vx%dsJpTX1B&t;ucLK6TtwI;Oy literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/vpi__tab_unselected_holo.9.png b/app/src/main/res/drawable/vpi__tab_unselected_holo.9.png new file mode 100644 index 0000000000000000000000000000000000000000..19532ab10d4fe414d597ed44ed50c91a3e3b9279 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1c!3HD^Kbl$tDVAa<&kznEsNqQI0P;BtJR*x3 z7`Qt@n9=;?>9s&XYfl%)5RRG2KmPx>XJ%$TT(5HGK*O1ak257UFsy01aiHFf4G12u u^?&$m-q&fz7T&FR9W0_QnO}Q~fkExE@YIkG=lX%hFnGH9xvX9s&XV^0^y5RRG22KRnVX>4qKXwM^^Uwi5RN2-aD!@msM(PIt + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_test.xml b/app/src/main/res/layout/activity_test.xml new file mode 100644 index 0000000..d95ab1d --- /dev/null +++ b/app/src/main/res/layout/activity_test.xml @@ -0,0 +1,18 @@ + + + + + + diff --git a/app/src/main/res/layout/fragment_splash.xml b/app/src/main/res/layout/fragment_splash.xml new file mode 100644 index 0000000..33bee1a --- /dev/null +++ b/app/src/main/res/layout/fragment_splash.xml @@ -0,0 +1,22 @@ + + + + + +