├── .gitignore ├── animationdemo ├── .gitignore ├── README.md ├── build.gradle └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── mahao │ │ └── alex │ │ └── animationdemo │ │ └── ApplicationTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── mahao │ │ │ └── alex │ │ │ └── animationdemo │ │ │ ├── custom_anim │ │ │ ├── ListViewFadeInAnimActivity.java │ │ │ └── RecycleViewFadeInAnimActivity.java │ │ │ ├── layout_transition │ │ │ └── LayoutTransitionActivity.java │ │ │ ├── property_anim │ │ │ ├── PropertyAnimActivity.java │ │ │ └── TimerBtnWrapper.java │ │ │ ├── svg │ │ │ ├── SVGMain2Activity.java │ │ │ └── SVGMainActivity.java │ │ │ └── view_anim │ │ │ └── ViewAnimActivity.java │ └── res │ │ ├── anim │ │ ├── listview_item_anim.xml │ │ ├── listview_item_in_anim.xml │ │ ├── view_alpha.xml │ │ ├── view_rotate.xml │ │ ├── view_scale.xml │ │ ├── view_set.xml │ │ └── view_tanslate.xml │ │ ├── animator │ │ ├── anim_aa.xml │ │ ├── anim_bar_empty.xml │ │ ├── anim_bar_fill.xml │ │ ├── anim_bar_fill2.xml │ │ ├── anim_default.xml │ │ ├── anim_default_gone.xml │ │ ├── anim_round.xml │ │ ├── anim_round2.xml │ │ ├── anim_search_empty.xml │ │ ├── anim_search_fill.xml │ │ ├── property_object.xml │ │ ├── property_set.xml │ │ └── property_value.xml │ │ ├── drawable │ │ ├── anim1.xml │ │ ├── anim2.xml │ │ ├── anim3.xml │ │ ├── anim_bar_to_gone.xml │ │ ├── anim_bar_to_search.xml │ │ ├── anim_bar_to_visible.xml │ │ ├── anim_right.xml │ │ ├── anim_search_to_bar.xml │ │ ├── dynamic_ball_red.xml │ │ ├── edit_login.xml │ │ └── search_bar.xml │ │ ├── layout │ │ ├── activity_layout_transition.xml │ │ ├── activity_listview_fade_in.xml │ │ ├── activity_property_anim.xml │ │ ├── activity_recyclew_fade_in.xml │ │ ├── activity_svg.xml │ │ ├── activity_svg2.xml │ │ └── activity_view_anim.xml │ │ ├── mipmap-hdpi │ │ └── ic_launcher.png │ │ ├── mipmap-mdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── view_anim.png │ │ ├── mipmap-xxhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxxhdpi │ │ └── ic_launcher.png │ │ └── values │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── com │ └── mahao │ └── alex │ └── animationdemo │ └── ExampleUnitTest.java ├── app ├── .gitignore ├── build.gradle ├── lib │ ├── commons-codec-1.6.jar │ ├── commons-logging-1.1.3.jar │ └── miaodai.jar └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── mahao │ │ └── alex │ │ └── alex_mahao_sample │ │ └── ApplicationTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── mahao │ │ │ └── alex │ │ │ └── alex_mahao_sample │ │ │ ├── Main2Activity.java │ │ │ └── MainActivity.java │ └── res │ │ ├── layout │ │ └── activity_main.xml │ │ ├── mipmap-hdpi │ │ └── ic_launcher.png │ │ ├── mipmap-mdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxxhdpi │ │ └── ic_launcher.png │ │ ├── values-w820dp │ │ └── dimens.xml │ │ └── values │ │ ├── colors.xml │ │ ├── dimens.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── com │ └── mahao │ └── alex │ └── alex_mahao_sample │ └── ExampleUnitTest.java ├── architecture ├── .gitignore ├── build.gradle └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── mahao │ │ └── alex │ │ └── architecture │ │ └── ApplicationTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── mahao │ │ │ └── alex │ │ │ └── architecture │ │ │ ├── App.java │ │ │ ├── MainActivity.java │ │ │ ├── dagger2 │ │ │ ├── ActivityComponent.java │ │ │ ├── ActivityMoudule.java │ │ │ ├── AppComponent.java │ │ │ ├── AppModule.java │ │ │ ├── Main2Actvity.java │ │ │ ├── MainActivity.java │ │ │ ├── MainComponent.java │ │ │ ├── MainModule.java │ │ │ ├── PerActivity.java │ │ │ ├── PerApp.java │ │ │ ├── Person.java │ │ │ ├── PersonForContext.java │ │ │ └── PersonForName.java │ │ │ ├── di │ │ │ ├── Boy.java │ │ │ ├── BoyInjection.java │ │ │ └── Classes.java │ │ │ └── ioc │ │ │ ├── BaseAnno.java │ │ │ ├── ContentView.java │ │ │ └── IOCMainActivity.java │ └── res │ │ ├── layout │ │ └── activity_main.xml │ │ ├── mipmap-hdpi │ │ └── ic_launcher.png │ │ ├── mipmap-mdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxxhdpi │ │ └── ic_launcher.png │ │ ├── values-w820dp │ │ └── dimens.xml │ │ └── values │ │ ├── colors.xml │ │ ├── dimens.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── com │ └── mahao │ └── alex │ └── architecture │ └── ExampleUnitTest.java ├── arithmetic ├── .gitignore ├── build.gradle └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── mahao │ │ └── alex │ │ └── arithmetic │ │ └── ApplicationTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── mahao │ │ │ └── alex │ │ │ └── arithmetic │ │ │ └── MainActivity.java │ └── res │ │ ├── layout │ │ └── activity_main.xml │ │ ├── mipmap-hdpi │ │ └── ic_launcher.png │ │ ├── mipmap-mdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxxhdpi │ │ └── ic_launcher.png │ │ ├── values-w820dp │ │ └── dimens.xml │ │ └── values │ │ ├── colors.xml │ │ ├── dimens.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── com │ └── mahao │ └── alex │ └── arithmetic │ └── ExampleUnitTest.java ├── build.gradle ├── customviewdemo ├── .gitignore ├── build.gradle └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── mahao │ │ └── alex │ │ └── customviewdemo │ │ └── ApplicationTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── mahao │ │ │ └── alex │ │ │ └── customviewdemo │ │ │ ├── MainActivity.java │ │ │ ├── calendar │ │ │ ├── CalendarActivity.java │ │ │ ├── CalendarAdapter.java │ │ │ ├── CalendarItemDecoration.java │ │ │ ├── CalendarView.java │ │ │ └── Day.java │ │ │ ├── horizontalProgress │ │ │ ├── HorizontalProgressActivity.java │ │ │ └── HorizontalProgressView.java │ │ │ ├── nestscroll │ │ │ ├── NestScrollActivity.java │ │ │ └── NestScrollLinearLayout.java │ │ │ ├── path │ │ │ ├── Bezier.java │ │ │ ├── Bezier3.java │ │ │ ├── CircleActivity.java │ │ │ ├── CircleToHeart.java │ │ │ ├── PathMainActivity.java │ │ │ ├── RadarView.java │ │ │ ├── View1.java │ │ │ ├── View2.java │ │ │ ├── View3.java │ │ │ ├── View4.java │ │ │ └── View5.java │ │ │ ├── precent_circle │ │ │ ├── PercentActivity.java │ │ │ └── PercentCircle.java │ │ │ ├── refresh │ │ │ └── TouchActivity.java │ │ │ ├── select │ │ │ ├── SelectActivity.java │ │ │ └── SelectView.java │ │ │ ├── taobao │ │ │ ├── DetailVerticalActivity.java │ │ │ └── DetailVerticalView.java │ │ │ ├── tree_view │ │ │ ├── Classes.java │ │ │ ├── ClassesExpandableListViewAdapter.java │ │ │ ├── College.java │ │ │ ├── CustomExpandableListView.java │ │ │ ├── SimpleExpandListViewActivity.java │ │ │ └── SimpleExpandableListViewAdapter.java │ │ │ └── viewpager │ │ │ ├── CoverFlowAdapter.java │ │ │ ├── CoverFlowViewPager.java │ │ │ └── OnPageSelectListener.java │ └── res │ │ ├── drawable │ │ ├── selector_calendar_tab_color.xml │ │ ├── shape_calendar_record.xml │ │ ├── shape_calendar_select.xml │ │ └── shape_calendar_today.xml │ │ ├── layout │ │ ├── activity_calendar.xml │ │ ├── activity_horizontal_progress.xml │ │ ├── activity_main.xml │ │ ├── activity_nest_scroll.xml │ │ ├── activity_path.xml │ │ ├── activity_path_circle.xml │ │ ├── activity_percent.xml │ │ ├── activity_select.xml │ │ ├── activity_taobao_detail.xml │ │ ├── activity_touch.xml │ │ ├── activity_tree_view_simple.xml │ │ ├── widget_calendar.xml │ │ ├── widget_calendar_day.xml │ │ ├── widget_calendar_spinner_item.xml │ │ ├── widget_calendar_tab.xml │ │ └── widget_cover_flow.xml │ │ ├── mipmap-hdpi │ │ └── ic_launcher.png │ │ ├── mipmap-mdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── jiantou.jpg │ │ ├── mipmap-xxhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxxhdpi │ │ └── ic_launcher.png │ │ ├── values-w820dp │ │ └── dimens.xml │ │ └── values │ │ ├── colors.xml │ │ ├── dimens.xml │ │ ├── drawable.xml │ │ ├── strings.xml │ │ ├── styles.xml │ │ └── styles_selectview.xml │ └── test │ └── java │ └── com │ └── mahao │ └── alex │ └── customviewdemo │ └── ExampleUnitTest.java ├── designpattern ├── .gitignore ├── build.gradle └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── mahao │ │ └── alex │ │ └── designpattern │ │ └── ApplicationTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── mahao │ │ │ └── alex │ │ │ └── designpattern │ │ │ ├── MainActivity.java │ │ │ ├── book_yuanmasheji │ │ │ └── chapter1 │ │ │ │ ├── e1 │ │ │ │ └── ImageLoader.java │ │ │ │ ├── e2 │ │ │ │ ├── ImageCache.java │ │ │ │ └── ImageLoader.java │ │ │ │ ├── e3 │ │ │ │ ├── DiskCache.java │ │ │ │ ├── ImageCache.java │ │ │ │ └── ImageLoader.java │ │ │ │ └── e4 │ │ │ │ ├── DiskCache.java │ │ │ │ ├── DoubleCache.java │ │ │ │ ├── ImageCache.java │ │ │ │ ├── ImageLoader.java │ │ │ │ └── MemoryCache.java │ │ │ └── prototype │ │ │ ├── Prototype.java │ │ │ └── demo │ │ │ ├── App.java │ │ │ └── User.java │ └── res │ │ ├── layout │ │ └── activity_main.xml │ │ ├── mipmap-hdpi │ │ └── ic_launcher.png │ │ ├── mipmap-mdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxxhdpi │ │ └── ic_launcher.png │ │ ├── values-w820dp │ │ └── dimens.xml │ │ └── values │ │ ├── colors.xml │ │ ├── dimens.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── com │ └── mahao │ └── alex │ └── designpattern │ └── ExampleUnitTest.java ├── hardware ├── .gitignore ├── build.gradle └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── alex │ │ └── hardware │ │ └── ApplicationTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── alex │ │ │ └── hardware │ │ │ ├── bluetooth │ │ │ ├── BluetoothService.java │ │ │ └── MainActivity.java │ │ │ └── sdcard │ │ │ ├── StorageBean.java │ │ │ └── StorageUtils.java │ └── res │ │ ├── layout │ │ └── activity_main.xml │ │ ├── mipmap-hdpi │ │ └── ic_launcher.png │ │ ├── mipmap-mdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxxhdpi │ │ └── ic_launcher.png │ │ ├── values-w820dp │ │ └── dimens.xml │ │ └── values │ │ ├── colors.xml │ │ ├── dimens.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── com │ └── alex │ └── hardware │ └── ExampleUnitTest.java ├── ndkdemo ├── .gitignore ├── build.gradle └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── alex │ │ └── ndkdemo │ │ └── ApplicationTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── alex │ │ │ └── ndkdemo │ │ │ ├── MainActivity.java │ │ │ └── NdkJniUtils.java │ └── res │ │ ├── layout │ │ └── activity_main.xml │ │ ├── mipmap-hdpi │ │ └── ic_launcher.png │ │ ├── mipmap-mdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxxhdpi │ │ └── ic_launcher.png │ │ ├── values-w820dp │ │ └── dimens.xml │ │ └── values │ │ ├── colors.xml │ │ ├── dimens.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── com │ └── alex │ └── ndkdemo │ └── ExampleUnitTest.java ├── networklib ├── .gitignore ├── build.gradle └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── example │ │ └── networklib │ │ └── ApplicationTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── example │ │ │ └── networklib │ │ │ └── MainActivity.java │ └── res │ │ ├── layout │ │ └── activity_main.xml │ │ ├── mipmap-hdpi │ │ └── ic_launcher.png │ │ ├── mipmap-mdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxxhdpi │ │ └── ic_launcher.png │ │ ├── values-w820dp │ │ └── dimens.xml │ │ └── values │ │ ├── colors.xml │ │ ├── dimens.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── com │ └── example │ └── networklib │ └── ExampleUnitTest.java ├── settings.gradle ├── system4compent ├── .gitignore ├── build.gradle └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── example │ │ └── system4compent │ │ └── ApplicationTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── aidl │ │ └── com │ │ │ └── example │ │ │ └── system4compent │ │ │ └── MyAIDLService.aidl │ ├── java │ │ └── com │ │ │ └── example │ │ │ └── system4compent │ │ │ ├── MainActivity.java │ │ │ └── service │ │ │ ├── LongRunningReceiver.java │ │ │ ├── LongRunningService.java │ │ │ ├── MyIntentService.java │ │ │ ├── MyService.java │ │ │ └── ServiceMainActivity.java │ └── res │ │ ├── layout │ │ ├── activity_main.xml │ │ └── activity_main_service.xml │ │ ├── mipmap-hdpi │ │ └── ic_launcher.png │ │ ├── mipmap-mdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxxhdpi │ │ └── ic_launcher.png │ │ ├── values-w820dp │ │ └── dimens.xml │ │ └── values │ │ ├── colors.xml │ │ ├── dimens.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── com │ └── example │ └── system4compent │ └── ExampleUnitTest.java ├── systemwidgetdemo ├── .gitignore ├── RecycleView.md ├── build.gradle ├── src │ ├── androidTest │ │ └── java │ │ │ └── com │ │ │ └── mahao │ │ │ └── alex │ │ │ └── systemwidgetdemo │ │ │ └── ApplicationTest.java │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ │ └── com │ │ │ │ └── mahao │ │ │ │ └── alex │ │ │ │ └── systemwidgetdemo │ │ │ │ ├── MainActivity.java │ │ │ │ ├── behavior │ │ │ │ └── BottomSheetBehaviorActivity.java │ │ │ │ ├── design │ │ │ │ ├── DesignActivity.java │ │ │ │ └── SimpleViewBehavior.java │ │ │ │ ├── dialog │ │ │ │ ├── AlertDialogActivity.java │ │ │ │ ├── CustomDialogActivity.java │ │ │ │ ├── DialogMainActivity.java │ │ │ │ └── SimpleDialog.java │ │ │ │ ├── listView │ │ │ │ ├── BaseAppAdapter.java │ │ │ │ ├── ListViewActivity.java │ │ │ │ ├── MyListView.java │ │ │ │ ├── SimpleBaseAdapter.java │ │ │ │ ├── ToorBarListViewActivity.java │ │ │ │ ├── chat │ │ │ │ │ ├── ChatAdapter.java │ │ │ │ │ ├── ChatBean.java │ │ │ │ │ └── ChatListViewActivity.java │ │ │ │ ├── custom_refresh │ │ │ │ │ ├── CustomRefreshListActivity.java │ │ │ │ │ └── CustomRefreshListView.java │ │ │ │ └── ultra_refresh │ │ │ │ │ ├── CustomUltraRefreshHeader.java │ │ │ │ │ ├── UltraRefreshActivity.java │ │ │ │ │ ├── UltraRefreshListActivity.java │ │ │ │ │ ├── UltraRefreshListView.java │ │ │ │ │ ├── UltraRefreshListViewBeat.java │ │ │ │ │ └── UltraRefreshListener.java │ │ │ │ └── recycleView │ │ │ │ ├── DividerItemDecoration.java │ │ │ │ ├── HomeAdapter.java │ │ │ │ ├── RecycleMainActivity.java │ │ │ │ ├── base │ │ │ │ ├── BaseRecycleAdapter.java │ │ │ │ ├── Person.java │ │ │ │ ├── PersonActivity.java │ │ │ │ └── PersonAdapter.java │ │ │ │ ├── swiperefresh │ │ │ │ ├── LayoutManagerType.java │ │ │ │ ├── LoadDataScrollController.java │ │ │ │ └── SwipeRefreshActivity.java │ │ │ │ └── swipetoloadlayout │ │ │ │ ├── CircleRefreshHeaderView.java │ │ │ │ ├── CircleView.java │ │ │ │ ├── LoaderMoreView.java │ │ │ │ ├── RefreshHeaderView.java │ │ │ │ └── SwipeToLayoutActivity.java │ │ └── res │ │ │ ├── anim │ │ │ ├── dialog_anim_enter.xml │ │ │ └── dialog_anim_exit.xml │ │ │ ├── drawable │ │ │ ├── indeterminate_drawable.xml │ │ │ ├── listview_chat_left.9.png │ │ │ ├── listview_chat_right.9.png │ │ │ └── shape_dialog_psd_bg.xml │ │ │ ├── layout │ │ │ ├── activity_alert_dialog.xml │ │ │ ├── activity_bottom_sheet_behavior.xml │ │ │ ├── activity_design.xml │ │ │ ├── activity_dialog_custom.xml │ │ │ ├── activity_listview.xml │ │ │ ├── activity_listview_chat.xml │ │ │ ├── activity_listview_custom_refresh.xml │ │ │ ├── activity_listview_toobar.xml │ │ │ ├── activity_listview_ultra.xml │ │ │ ├── activity_listview_ultra_refresh.xml │ │ │ ├── activity_main.xml │ │ │ ├── activity_main_dialog.xml │ │ │ ├── activity_main_recycle.xml │ │ │ ├── activity_person.xml │ │ │ ├── activity_recycle_swiperefresh.xml │ │ │ ├── activity_recycle_swipetolayout.xml │ │ │ ├── dialog_simple.xml │ │ │ ├── foot_custom_listview.xml │ │ │ ├── foot_ultra_refresh_listview.xml │ │ │ ├── head_custom_listview.xml │ │ │ ├── item_home.xml │ │ │ ├── item_listview_chat_left.xml │ │ │ ├── item_listview_chat_right.xml │ │ │ ├── item_listview_sample.xml │ │ │ ├── item_person.xml │ │ │ └── item_person2.xml │ │ │ ├── mipmap-hdpi │ │ │ ├── ic_launcher.png │ │ │ ├── indicate_rotate.png │ │ │ └── indicator_arrow.png │ │ │ ├── mipmap-mdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xhdpi │ │ │ ├── ic_launcher.png │ │ │ ├── qq.png │ │ │ └── weixin.png │ │ │ ├── mipmap-xxhdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxxhdpi │ │ │ └── ic_launcher.png │ │ │ ├── values-w820dp │ │ │ ├── attrs.xml │ │ │ └── dimens.xml │ │ │ └── values │ │ │ ├── colors.xml │ │ │ ├── dimens.xml │ │ │ ├── strings.xml │ │ │ └── styles.xml │ └── test │ │ └── java │ │ └── com │ │ └── mahao │ │ └── alex │ │ └── systemwidgetdemo │ │ └── ExampleUnitTest.java ├── swipeRefresh.gif └── swipetoloadlayout.gif └── utils ├── .gitignore ├── build.gradle └── src ├── androidTest └── java │ └── com │ └── mahao │ └── alex │ └── utils │ └── ApplicationTest.java ├── main ├── AndroidManifest.xml ├── java │ └── com │ │ └── mahao │ │ └── alex │ │ └── utils │ │ ├── MainActivity.java │ │ └── json │ │ ├── FastJsonTest.java │ │ ├── OrgJSONTest.java │ │ └── gson │ │ ├── GsonTest.java │ │ └── User.java └── res │ ├── layout │ ├── activity_main.xml │ └── activity_main_json.xml │ ├── mipmap-hdpi │ └── ic_launcher.png │ ├── mipmap-mdpi │ └── ic_launcher.png │ ├── mipmap-xhdpi │ └── ic_launcher.png │ ├── mipmap-xxhdpi │ └── ic_launcher.png │ ├── mipmap-xxxhdpi │ └── ic_launcher.png │ ├── values-w820dp │ └── dimens.xml │ └── values │ ├── colors.xml │ ├── dimens.xml │ ├── strings.xml │ └── styles.xml └── test └── java └── com └── mahao └── alex └── utils └── ExampleUnitTest.java /.gitignore: -------------------------------------------------------------------------------- 1 | .gradle 2 | .DS_Store 3 | .classpath 4 | .project 5 | .settings 6 | *.class 7 | *.swp 8 | *.bak 9 | *.iml 10 | *.zip 11 | bin 12 | build 13 | target 14 | dist 15 | /.idea 16 | /out 17 | /*.ipr 18 | /*.iws 19 | /log.txt 20 | gen 21 | gen-external-apklibsres/values/dimens.xml 22 | gen-external-apklibs/ 23 | gradle.properties 24 | gradle/ 25 | gradlew 26 | gradlew.bat 27 | import-summary.txt 28 | local.properties 29 | app/build 30 | -------------------------------------------------------------------------------- /animationdemo/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /animationdemo/README.md: -------------------------------------------------------------------------------- 1 | ## Android 中动画的记录和总结 2 | 3 | ### 相应笔记博客地址 4 | 5 | - [Android动画之属性动画和视图动画](http://blog.csdn.net/lisdye2/article/details/51396348) 6 | - [Android动画总结之布局动画](http://blog.csdn.net/lisdye2/article/details/51396371) 7 | - [Android VectorDrawable与SVG 实现炫酷动画](http://blog.csdn.net/lisdye2/article/details/51967946) 8 | ### TO DO 9 | 10 | - ListView和RecyclerView的动画列表实现和总结 -------------------------------------------------------------------------------- /animationdemo/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion 25 5 | buildToolsVersion '25.0.0' 6 | 7 | defaultConfig { 8 | applicationId "com.mahao.alex.animationdemo" 9 | minSdkVersion 21 10 | targetSdkVersion 23 11 | versionCode 1 12 | versionName "1.0" 13 | } 14 | buildTypes { 15 | release { 16 | minifyEnabled false 17 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 18 | } 19 | } 20 | } 21 | 22 | dependencies { 23 | compile 'com.android.support:appcompat-v7:25.3.0' 24 | compile fileTree(include: ['*.jar'], dir: 'libs') 25 | testCompile 'junit:junit:4.12' 26 | compile 'com.android.support:recyclerview-v7:25.3.0' 27 | compile 'com.android.support:support-dynamic-animation:25.3.0' 28 | } 29 | -------------------------------------------------------------------------------- /animationdemo/src/androidTest/java/com/mahao/alex/animationdemo/ApplicationTest.java: -------------------------------------------------------------------------------- 1 | package com.mahao.alex.animationdemo; 2 | 3 | import android.app.Application; 4 | import android.test.ApplicationTestCase; 5 | 6 | /** 7 | * Testing Fundamentals 8 | */ 9 | public class ApplicationTest extends ApplicationTestCase { 10 | public ApplicationTest() { 11 | super(Application.class); 12 | } 13 | } -------------------------------------------------------------------------------- /animationdemo/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 10 | 11 | 12 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /animationdemo/src/main/java/com/mahao/alex/animationdemo/property_anim/TimerBtnWrapper.java: -------------------------------------------------------------------------------- 1 | package com.mahao.alex.animationdemo.property_anim; 2 | 3 | import android.widget.Button; 4 | 5 | /** 6 | * Button按钮的包装类,实现倒计时 7 | * Created by Alex_MaHao on 2016/5/13. 8 | */ 9 | public class TimerBtnWrapper { 10 | 11 | private Button btn; 12 | 13 | public TimerBtnWrapper(Button btn) { 14 | this.btn = btn; 15 | } 16 | 17 | 18 | /** 19 | * 关键方法,动画调用此方法,修改属性值 20 | * @param time 21 | */ 22 | public void setTimer(int time){ 23 | 24 | btn.setText(time+"s"); 25 | } 26 | 27 | 28 | /** 29 | * 设值动画结束后的值 30 | * @param text 31 | */ 32 | public void setTimeEndText(String text){ 33 | btn.setText(text); 34 | } 35 | 36 | /** 37 | * 设置按钮是否可以点击 38 | * @param isClick 39 | */ 40 | public void setIsClick(boolean isClick){ 41 | btn.setClickable(isClick); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /animationdemo/src/main/res/anim/listview_item_anim.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 10 | 11 | 13 | -------------------------------------------------------------------------------- /animationdemo/src/main/res/anim/listview_item_in_anim.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 18 | 19 | -------------------------------------------------------------------------------- /animationdemo/src/main/res/anim/view_alpha.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 13 | 14 | -------------------------------------------------------------------------------- /animationdemo/src/main/res/anim/view_rotate.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 21 | 22 | -------------------------------------------------------------------------------- /animationdemo/src/main/res/anim/view_scale.xml: -------------------------------------------------------------------------------- 1 | 2 | 11 | 12 | 25 | -------------------------------------------------------------------------------- /animationdemo/src/main/res/anim/view_set.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 11 | 12 | 13 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /animationdemo/src/main/res/anim/view_tanslate.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 18 | 19 | -------------------------------------------------------------------------------- /animationdemo/src/main/res/animator/anim_aa.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /animationdemo/src/main/res/animator/anim_bar_empty.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /animationdemo/src/main/res/animator/anim_bar_fill.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 12 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /animationdemo/src/main/res/animator/anim_bar_fill2.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 12 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /animationdemo/src/main/res/animator/anim_default.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /animationdemo/src/main/res/animator/anim_default_gone.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /animationdemo/src/main/res/animator/anim_round.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /animationdemo/src/main/res/animator/anim_round2.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /animationdemo/src/main/res/animator/anim_search_empty.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /animationdemo/src/main/res/animator/anim_search_fill.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /animationdemo/src/main/res/animator/property_object.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 17 | 18 | -------------------------------------------------------------------------------- /animationdemo/src/main/res/animator/property_set.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 14 | 15 | 21 | 22 | 23 | 24 | 25 | 26 | 33 | 34 | 41 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /animationdemo/src/main/res/animator/property_value.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 16 | -------------------------------------------------------------------------------- /animationdemo/src/main/res/drawable/anim1.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 8 | 9 | 12 | 15 | 18 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /animationdemo/src/main/res/drawable/anim2.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 10 | 11 | 14 | 17 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /animationdemo/src/main/res/drawable/anim3.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 10 | 13 | 16 | 19 | -------------------------------------------------------------------------------- /animationdemo/src/main/res/drawable/anim_bar_to_gone.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /animationdemo/src/main/res/drawable/anim_bar_to_search.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 10 | -------------------------------------------------------------------------------- /animationdemo/src/main/res/drawable/anim_bar_to_visible.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /animationdemo/src/main/res/drawable/anim_right.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 9 | 10 | 13 | 14 | -------------------------------------------------------------------------------- /animationdemo/src/main/res/drawable/anim_search_to_bar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 10 | 11 | 14 | -------------------------------------------------------------------------------- /animationdemo/src/main/res/drawable/dynamic_ball_red.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /animationdemo/src/main/res/drawable/search_bar.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | 16 | 17 | 18 | 26 | 27 | -------------------------------------------------------------------------------- /animationdemo/src/main/res/layout/activity_listview_fade_in.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 13 | 19 | 20 | 24 | 25 |