├── .gitignore
├── .idea
├── compiler.xml
├── deploymentTargetDropDown.xml
├── gradle.xml
├── jarRepositories.xml
├── misc.xml
└── vcs.xml
├── README.md
├── app
├── .gitignore
├── build.gradle
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── com
│ │ └── webabcd
│ │ └── androiddemo
│ │ └── ExampleInstrumentedTest.java
│ ├── main
│ ├── AndroidManifest.xml
│ ├── AndroidManifest.xml.readme
│ ├── assets
│ │ ├── URLSchemeDemo1.html
│ │ ├── WebViewDemo2.html
│ │ ├── WebViewDemo3.html
│ │ ├── ad.mp4
│ │ ├── site_map.json
│ │ ├── son.jpg
│ │ └── text_storage_storagedemo3.txt
│ ├── java
│ │ └── com
│ │ │ └── webabcd
│ │ │ └── androiddemo
│ │ │ ├── MainActivity.java
│ │ │ ├── MainExpandableListAdapter.java
│ │ │ ├── MainNavigationBean.java
│ │ │ ├── MyApplication.java
│ │ │ ├── OnGroupExpandedListener.java
│ │ │ ├── SplashActivity.java
│ │ │ ├── activity
│ │ │ ├── ActivityDemo1.java
│ │ │ ├── ActivityDemo1_2.java
│ │ │ ├── ActivityDemo2.java
│ │ │ ├── ActivityDemo3.java
│ │ │ ├── ActivityDemo3_2.java
│ │ │ ├── ActivityDemo4.java
│ │ │ ├── ActivityDemo4_2.java
│ │ │ ├── ActivityDemo4_3.java
│ │ │ ├── ActivityDemo5.java
│ │ │ ├── ActivityDemo5_2.java
│ │ │ ├── ActivityDemo5_3.java
│ │ │ ├── ActivityDemo6.java
│ │ │ └── ActivityDemo6_2.java
│ │ │ ├── animation
│ │ │ ├── AnimationDemo1.java
│ │ │ ├── AnimationDemo2.java
│ │ │ ├── AnimationDemo3.java
│ │ │ ├── AnimationDemo3CustomInterpolator.java
│ │ │ ├── AnimationDemo4.java
│ │ │ ├── AnimationDemo5.java
│ │ │ ├── AnimationDemo5CustomTypeEvaluator.java
│ │ │ ├── AnimationDemo6.java
│ │ │ ├── AnimationDemo7.java
│ │ │ ├── MatrixDemo1.java
│ │ │ ├── MatrixDemo2.java
│ │ │ └── MatrixDemo2CustomView.java
│ │ │ ├── async
│ │ │ ├── AsyncTaskDemo1.java
│ │ │ ├── FutureTaskDemo1.java
│ │ │ ├── FutureTaskDemo2.java
│ │ │ ├── HandlerDemo1.java
│ │ │ ├── HandlerDemo2.java
│ │ │ ├── HandlerDemo3.java
│ │ │ ├── ThreadDemo1.java
│ │ │ ├── ThreadDemo2.java
│ │ │ ├── ThreadDemo3.java
│ │ │ ├── ThreadDemo4.java
│ │ │ ├── ThreadDemo5.java
│ │ │ ├── ThreadDemo6.java
│ │ │ ├── ThreadLocalDemo1.java
│ │ │ ├── ThreadPoolDemo1.java
│ │ │ ├── ThreadPoolDemo2.java
│ │ │ └── TimerDemo1.java
│ │ │ ├── concurrent
│ │ │ ├── AtomicDemo1.java
│ │ │ ├── CountDownLatchDemo1.java
│ │ │ ├── CyclicBarrierDemo1.java
│ │ │ ├── LockDemo1.java
│ │ │ ├── LockDemo2.java
│ │ │ ├── LockDemo3.java
│ │ │ ├── ReadWriteLockDemo1.java
│ │ │ ├── ReentrantLockDemo1.java
│ │ │ ├── ReentrantReadWriteLockDemo1.java
│ │ │ ├── SemaphoreDemo1.java
│ │ │ ├── SynchronizedDemo1.java
│ │ │ ├── SynchronizedDemo2.java
│ │ │ └── VolatileDemo1.java
│ │ │ ├── designpattern
│ │ │ ├── Singleton.java
│ │ │ └── SingletonPattern.java
│ │ │ ├── fragment
│ │ │ ├── Fragment1_1.java
│ │ │ ├── Fragment2_1.java
│ │ │ ├── Fragment2_2.java
│ │ │ ├── Fragment3_1.java
│ │ │ ├── Fragment4_1.java
│ │ │ ├── FragmentDemo1.java
│ │ │ ├── FragmentDemo1_2.java
│ │ │ ├── FragmentDemo2.java
│ │ │ ├── FragmentDemo3.java
│ │ │ └── FragmentDemo4.java
│ │ │ ├── input
│ │ │ ├── GestureDemo1.java
│ │ │ ├── GestureDemo2.java
│ │ │ ├── GestureDemo3.java
│ │ │ ├── KeyDemo1.java
│ │ │ ├── TouchDemo1.java
│ │ │ ├── TouchDemo2.java
│ │ │ ├── TouchDemo3.java
│ │ │ ├── TouchDemo4.java
│ │ │ ├── TouchDemo4_CustomView.java
│ │ │ ├── TouchDemo5.java
│ │ │ └── TouchDemo5_CustomView.java
│ │ │ ├── ipc
│ │ │ ├── BroadcastDemo1.java
│ │ │ ├── BroadcastDemo2.java
│ │ │ ├── BroadcastDemo3.java
│ │ │ ├── ClipboardDemo1.java
│ │ │ ├── ContentProviderDemo1.java
│ │ │ ├── PackageDemo1.java
│ │ │ ├── ShareSourceDemo1.java
│ │ │ └── URLSchemeDemo1.java
│ │ │ ├── java
│ │ │ ├── BitDemo1.java
│ │ │ ├── CallbackDemo1.java
│ │ │ ├── CallbackDemo1_CallbackClass.java
│ │ │ └── CallbackDemo1_CallbackInterface.java
│ │ │ ├── jetpack
│ │ │ └── lifecycle
│ │ │ │ ├── DataBindingDemo.kt
│ │ │ │ ├── LifecycleDemo.kt
│ │ │ │ ├── LiveDataDemo.kt
│ │ │ │ ├── LiveDataDemo2.kt
│ │ │ │ └── ViewModelDemo.kt
│ │ │ ├── kotlin
│ │ │ ├── Demo1.kt
│ │ │ ├── Demo10.kt
│ │ │ ├── Demo11.kt
│ │ │ ├── Demo12.kt
│ │ │ ├── Demo2.kt
│ │ │ ├── Demo3.kt
│ │ │ ├── Demo4.kt
│ │ │ ├── Demo5.kt
│ │ │ ├── Demo6.kt
│ │ │ ├── Demo7.kt
│ │ │ ├── Demo7_Class.kt
│ │ │ ├── Demo8.kt
│ │ │ ├── Demo8_Abstract.kt
│ │ │ ├── Demo8_Class1.kt
│ │ │ ├── Demo8_Class2.kt
│ │ │ ├── Demo8_Class3.kt
│ │ │ ├── Demo8_Class4.kt
│ │ │ ├── Demo8_Interface1.kt
│ │ │ ├── Demo8_Interface2.kt
│ │ │ ├── Demo9.kt
│ │ │ ├── Demo9_DataClass.kt
│ │ │ ├── Demo9_Enum.kt
│ │ │ ├── Demo9_SealedClass.kt
│ │ │ ├── HelloWorld.kt
│ │ │ ├── HelloWorld_Java.java
│ │ │ ├── HelloWorld_Kotlin.kt
│ │ │ └── coroutine
│ │ │ │ ├── Demo1.kt
│ │ │ │ ├── Demo2.kt
│ │ │ │ ├── Demo3.kt
│ │ │ │ ├── Demo4.kt
│ │ │ │ ├── Demo5.kt
│ │ │ │ ├── Demo6.kt
│ │ │ │ └── Demo7.kt
│ │ │ ├── ndk
│ │ │ └── NdkDemo1.java
│ │ │ ├── notification
│ │ │ ├── NotificationDemo1.java
│ │ │ ├── NotificationDemo1Click.java
│ │ │ ├── NotificationDemo2.java
│ │ │ └── ToastDemo1.java
│ │ │ ├── optimize
│ │ │ ├── Demo1.java
│ │ │ ├── Demo2.java
│ │ │ ├── Demo3.java
│ │ │ ├── Demo4.java
│ │ │ └── MyUncaughtExceptionHandler.java
│ │ │ ├── resource
│ │ │ ├── LocalizationDemo1.java
│ │ │ ├── MetaDataDemo1.java
│ │ │ ├── Temp.java
│ │ │ └── XmlDemo1.java
│ │ │ ├── service
│ │ │ ├── DownloadManagerDemo1.java
│ │ │ ├── Service1.java
│ │ │ ├── ServiceDemo1.java
│ │ │ ├── Worker1.java
│ │ │ └── WorkerManagerDemo1.java
│ │ │ ├── storage
│ │ │ ├── Android11Demo1.java
│ │ │ ├── Android11Demo2.java
│ │ │ ├── Android11Demo3.java
│ │ │ ├── SharedPreferencesDemo1.java
│ │ │ ├── SqliteDemo1.java
│ │ │ ├── StorageDemo1.java
│ │ │ ├── StorageDemo2.java
│ │ │ └── StorageDemo3.java
│ │ │ ├── tools
│ │ │ ├── GenerateHtmlIndex.java
│ │ │ └── GenerateReadme.java
│ │ │ ├── ui
│ │ │ ├── ColorDemo1.java
│ │ │ ├── ConfigurationChangeDemo1.java
│ │ │ ├── DensityDemo1.java
│ │ │ ├── IconDemo1.java
│ │ │ ├── ImmersiveDemo1.java
│ │ │ ├── ImmersiveDemo2.java
│ │ │ ├── NavigationBarDemo1.java
│ │ │ ├── ShapeDemo1.java
│ │ │ ├── ShapeDemo2.java
│ │ │ ├── ShapeDemo3.java
│ │ │ ├── StatusBarDemo1.java
│ │ │ ├── StyleDemo1.java
│ │ │ ├── ThemeDemo1.java
│ │ │ ├── ThemeDemo2.java
│ │ │ └── ThemeDemo3.java
│ │ │ ├── utils
│ │ │ ├── Demo1.java
│ │ │ ├── Demo2.java
│ │ │ ├── Demo3.java
│ │ │ └── Helper.java
│ │ │ └── view
│ │ │ ├── ViewDemo1.java
│ │ │ ├── ViewDemo2.java
│ │ │ ├── ViewDemo3.java
│ │ │ ├── button
│ │ │ ├── ButtonDemo1.java
│ │ │ ├── ButtonDemo2.java
│ │ │ └── ImageButtonDemo1.java
│ │ │ ├── collection
│ │ │ ├── ExpandableListViewDemo1.java
│ │ │ ├── GridViewDemo1.java
│ │ │ ├── GridViewDemo2.java
│ │ │ ├── ViewFlipperDemo1.java
│ │ │ ├── ViewPagerDemo1.java
│ │ │ ├── ViewPagerDemo2.java
│ │ │ ├── ViewPagerDemo3.java
│ │ │ ├── ViewPagerDemo3_Fragment.java
│ │ │ ├── ViewPagerDemo4.java
│ │ │ └── ViewPagerDemo4_Fragment.java
│ │ │ ├── custom
│ │ │ ├── CustomView1.java
│ │ │ ├── CustomView1Demo.java
│ │ │ ├── CustomView2.java
│ │ │ ├── CustomView2Demo.java
│ │ │ ├── CustomView3.java
│ │ │ ├── CustomView3Demo.java
│ │ │ ├── CustomView4.java
│ │ │ ├── CustomView4Demo.java
│ │ │ ├── MyLoading1.java
│ │ │ └── MyLoadingDemo1.java
│ │ │ ├── flyout
│ │ │ ├── AlertDialogDemo1.java
│ │ │ ├── AlertDialogDemo2.java
│ │ │ ├── AlertDialogDemo3.java
│ │ │ ├── AlertDialogDemo4.java
│ │ │ ├── ContextMenuDemo1.java
│ │ │ ├── ContextMenuDemo2.java
│ │ │ ├── DatePickerDialogDemo1.java
│ │ │ ├── PopupMenuDemo1.java
│ │ │ ├── PopupMenuDemo2.java
│ │ │ ├── PopupWindowDemo1.java
│ │ │ ├── ProgressDialogDemo1.java
│ │ │ └── TimePickerDialogDemo1.java
│ │ │ ├── layout
│ │ │ ├── ConstraintLayoutDemo1.java
│ │ │ ├── ConstraintLayoutDemo2.java
│ │ │ ├── ConstraintLayoutDemo3.java
│ │ │ ├── ContentViewDemo1.java
│ │ │ ├── FrameLayoutDemo1.java
│ │ │ ├── GridLayoutDemo1.java
│ │ │ ├── IncludeDemo1.java
│ │ │ ├── InflateDemo1.java
│ │ │ ├── LinearLayoutDemo1.java
│ │ │ ├── RelativeLayoutDemo1.java
│ │ │ ├── ScrollViewDemo1.java
│ │ │ └── TableLayoutDemo1.java
│ │ │ ├── listview
│ │ │ ├── ListViewDemo1.java
│ │ │ ├── ListViewDemo10.java
│ │ │ ├── ListViewDemo2.java
│ │ │ ├── ListViewDemo3.java
│ │ │ ├── ListViewDemo4.java
│ │ │ ├── ListViewDemo5.java
│ │ │ ├── ListViewDemo6.java
│ │ │ ├── ListViewDemo7.java
│ │ │ ├── ListViewDemo8.java
│ │ │ ├── ListViewDemo8LoadMoreListView.java
│ │ │ └── ListViewDemo9.java
│ │ │ ├── media
│ │ │ ├── GlideDemo1.java
│ │ │ ├── ImageViewDemo1.java
│ │ │ ├── ImageViewDemo2.java
│ │ │ ├── MediaPlayerDemo1.kt
│ │ │ ├── MediaPlayerDemo2.kt
│ │ │ ├── MediaPlayerDemo3.kt
│ │ │ ├── NinePatchDemo1.java
│ │ │ ├── PicassoDemo1.java
│ │ │ └── ScreenshotDemo1.kt
│ │ │ ├── navigation
│ │ │ ├── DrawerLayoutDemo1.java
│ │ │ ├── TabBarDemo1.java
│ │ │ ├── TabBarDemo1_MyTabBar.java
│ │ │ ├── ToolBarDemo1.java
│ │ │ └── ToolBarDemo2.java
│ │ │ ├── progress
│ │ │ ├── ProgressBarDemo1.java
│ │ │ ├── ProgressBarDemo2.java
│ │ │ ├── RatingBarDemo1.java
│ │ │ ├── RatingBarDemo2.java
│ │ │ ├── SeekBarDemo1.java
│ │ │ └── SeekBarDemo2.java
│ │ │ ├── recyclerview
│ │ │ ├── MyData.java
│ │ │ ├── MyRecyclerViewAdapter.java
│ │ │ ├── MyVerticalLinearLayoutManagerDivider.java
│ │ │ ├── RecyclerViewDemo1.java
│ │ │ ├── RecyclerViewDemo2.java
│ │ │ ├── RecyclerViewDemo3.java
│ │ │ ├── RecyclerViewDemo4.java
│ │ │ ├── RecyclerViewDemo4Adapter.java
│ │ │ └── RecyclerViewDemo4OnScrollListener.java
│ │ │ ├── selection
│ │ │ ├── CheckBoxDemo1.java
│ │ │ ├── CheckBoxDemo2.java
│ │ │ ├── NumberPickerCustom.java
│ │ │ ├── NumberPickerDemo1.java
│ │ │ ├── NumberPickerDemo2.java
│ │ │ ├── RadioButtonDemo1.java
│ │ │ ├── RadioButtonDemo2.java
│ │ │ ├── SpinnerDemo1.java
│ │ │ ├── SpinnerDemo2.java
│ │ │ ├── SpinnerDemo3.java
│ │ │ ├── SpinnerDemo4.java
│ │ │ ├── SpinnerDemo5.java
│ │ │ ├── SwitchDemo1.java
│ │ │ ├── SwitchDemo2.java
│ │ │ ├── ToggleButtonDemo1.java
│ │ │ └── ToggleButtonDemo2.java
│ │ │ ├── text
│ │ │ ├── AutoCompleteTextViewDemo1.java
│ │ │ ├── EditTextDemo1.java
│ │ │ ├── EditTextDemo2.java
│ │ │ ├── EditTextDemo3.java
│ │ │ ├── MultiAutoCompleteTextViewDemo1.java
│ │ │ ├── TextViewDemo1.java
│ │ │ ├── TextViewDemo2.java
│ │ │ ├── TextViewDemo3.java
│ │ │ ├── TextViewDemo4.java
│ │ │ ├── TextViewDemo5.java
│ │ │ ├── TextViewDemo6.java
│ │ │ ├── TextViewMarquee.java
│ │ │ └── utils
│ │ │ │ ├── HelloTagHandler.java
│ │ │ │ ├── KeyboardHeightObserver.java
│ │ │ │ ├── KeyboardHeightProvider.java
│ │ │ │ ├── MyFontTagHandler.java
│ │ │ │ ├── URLImageGetter.java
│ │ │ │ └── URLImageGetterDrawable.java
│ │ │ └── webview
│ │ │ ├── WebViewDemo1.java
│ │ │ ├── WebViewDemo2.java
│ │ │ ├── WebViewDemo3.java
│ │ │ ├── WebViewDemo4.java
│ │ │ └── WebViewDemo5.java
│ ├── jni
│ │ ├── Android.mk
│ │ ├── Application.mk
│ │ ├── cHello.c
│ │ └── cHello.h
│ ├── jniLibs
│ │ ├── arm64-v8a
│ │ │ └── libjniHello.so
│ │ ├── armeabi-v7a
│ │ │ └── libjniHello.so
│ │ ├── x86
│ │ │ └── libjniHello.so
│ │ └── x86_64
│ │ │ └── libjniHello.so
│ └── res
│ │ ├── anim
│ │ ├── accelerateinterpolator_animation_animationdemo2.xml
│ │ ├── activity_fade_in.xml
│ │ ├── activity_fade_out.xml
│ │ ├── activity_flip_horizontal_in.xml
│ │ ├── activity_flip_horizontal_out.xml
│ │ ├── activity_push_left_in.xml
│ │ ├── activity_push_left_out.xml
│ │ ├── activity_zoom_enter.xml
│ │ ├── activity_zoom_exit.xml
│ │ ├── alertdialog_enter.xml
│ │ ├── alertdialog_exit.xml
│ │ ├── fragment_push_left_in.xml
│ │ ├── fragment_push_left_out.xml
│ │ ├── fragment_zoom_enter.xml
│ │ ├── fragment_zoom_exit.xml
│ │ ├── popupwindow_enter.xml
│ │ ├── popupwindow_exit.xml
│ │ ├── set_animation_animationdemo1.xml
│ │ ├── translate_animationdemo2.xml
│ │ ├── viewflipper_left_in.xml
│ │ ├── viewflipper_left_out.xml
│ │ ├── viewflipper_right_in.xml
│ │ └── viewflipper_right_out.xml
│ │ ├── animator
│ │ ├── animator_animation_animationdemo5.xml
│ │ └── set_animation_animationdemo6.xml
│ │ ├── color
│ │ └── selector_button_textcolor.xml
│ │ ├── drawable-mdpi
│ │ └── son02.jpg
│ │ ├── drawable-xxhdpi
│ │ ├── ic_expand_less.png
│ │ ├── ic_expand_more.png
│ │ ├── ic_ratingbar_background.png
│ │ ├── ic_ratingbar_progress.png
│ │ ├── ic_ratingbar_secondaryprogress.png
│ │ ├── img_activity_lifecycle.jpg
│ │ ├── img_dialog_ninepatch.9.png
│ │ ├── img_dialog_original.png
│ │ ├── img_fragment_lifecycle.png
│ │ ├── img_sample_son.jpg
│ │ ├── img_theme_explain.jpg
│ │ ├── img_thread_state.png
│ │ └── son01.jpg
│ │ ├── drawable
│ │ ├── animationlist_animationdemo4.xml
│ │ ├── animationlist_progressbar_indeterminate.xml
│ │ ├── ic_launcher_background.xml
│ │ ├── layerlist_checkbox_button_checked.xml
│ │ ├── layerlist_checkbox_button_unchecked.xml
│ │ ├── layerlist_expand_group_collapsed.xml
│ │ ├── layerlist_expand_group_expanded.xml
│ │ ├── layerlist_progressbar_indeterminate.xml
│ │ ├── layerlist_progressbar_progress.xml
│ │ ├── layerlist_radiobutton_button_checked.xml
│ │ ├── layerlist_radiobutton_button_unchecked.xml
│ │ ├── layerlist_ratingbar_progress.xml
│ │ ├── layerlist_seekbar_progress.xml
│ │ ├── layerlist_splash_background.xml
│ │ ├── layerlist_togglebutton_button_checked.xml
│ │ ├── layerlist_togglebutton_button_unchecked.xml
│ │ ├── rotate_progressbar_indeterminate.xml
│ │ ├── selector_button_background.xml
│ │ ├── selector_checkbox_button.xml
│ │ ├── selector_expand_group.xml
│ │ ├── selector_listview_item_background_normal.xml
│ │ ├── selector_listview_item_background_selected.xml
│ │ ├── selector_radiobutton_button.xml
│ │ ├── selector_seekbar_thumb.xml
│ │ ├── selector_spinner_background.xml
│ │ ├── selector_switch_thumb.xml
│ │ ├── selector_switch_track.xml
│ │ ├── selector_togglebutton_button.xml
│ │ ├── shape_button_background.xml
│ │ ├── shape_edittext_bottom_line.xml
│ │ ├── shape_edittext_cursor.xml
│ │ ├── shape_linearlayout_divider_vertical.xml
│ │ ├── shape_listview_divider.xml
│ │ ├── shape_recyclerview_divider.xml
│ │ ├── shape_sample_gradient_linear.xml
│ │ ├── shape_sample_gradient_radial.xml
│ │ ├── shape_sample_gradient_sweep.xml
│ │ ├── shape_sample_line.xml
│ │ ├── shape_sample_oval.xml
│ │ ├── shape_sample_padding.xml
│ │ ├── shape_sample_rectangle.xml
│ │ ├── shape_sample_ring.xml
│ │ ├── shape_sample_size.xml
│ │ ├── shape_sample_solid_stroke_corners.xml
│ │ ├── shape_seekbar_thumb_pressed.xml
│ │ ├── shape_seekbar_thumb_unpressed.xml
│ │ ├── shape_switch_thumb_pressed.xml
│ │ ├── shape_switch_thumb_unpressed.xml
│ │ ├── shape_switch_track_checked.xml
│ │ ├── shape_switch_track_unchecked.xml
│ │ └── shape_toast_background.xml
│ │ ├── font
│ │ └── myfont.ttf
│ │ ├── layout
│ │ ├── activity_activity_activitydemo1.xml
│ │ ├── activity_activity_activitydemo1_2.xml
│ │ ├── activity_activity_activitydemo2_landscape.xml
│ │ ├── activity_activity_activitydemo2_portrait.xml
│ │ ├── activity_activity_activitydemo3.xml
│ │ ├── activity_activity_activitydemo3_2.xml
│ │ ├── activity_activity_activitydemo4.xml
│ │ ├── activity_activity_activitydemo4_2.xml
│ │ ├── activity_activity_activitydemo4_3.xml
│ │ ├── activity_activity_activitydemo5.xml
│ │ ├── activity_activity_activitydemo5_2.xml
│ │ ├── activity_activity_activitydemo5_3.xml
│ │ ├── activity_activity_activitydemo6.xml
│ │ ├── activity_activity_activitydemo6_2.xml
│ │ ├── activity_animation_animationdemo1.xml
│ │ ├── activity_animation_animationdemo2.xml
│ │ ├── activity_animation_animationdemo3.xml
│ │ ├── activity_animation_animationdemo4.xml
│ │ ├── activity_animation_animationdemo5.xml
│ │ ├── activity_animation_animationdemo6.xml
│ │ ├── activity_animation_animationdemo7.xml
│ │ ├── activity_animation_matrixdemo1.xml
│ │ ├── activity_animation_matrixdemo2.xml
│ │ ├── activity_async_asynctaskdemo1.xml
│ │ ├── activity_async_futuretaskdemo1.xml
│ │ ├── activity_async_futuretaskdemo2.xml
│ │ ├── activity_async_handlerdemo1.xml
│ │ ├── activity_async_handlerdemo2.xml
│ │ ├── activity_async_handlerdemo3.xml
│ │ ├── activity_async_threaddemo1.xml
│ │ ├── activity_async_threaddemo2.xml
│ │ ├── activity_async_threaddemo3.xml
│ │ ├── activity_async_threaddemo4.xml
│ │ ├── activity_async_threaddemo5.xml
│ │ ├── activity_async_threaddemo6.xml
│ │ ├── activity_async_threadlocaldemo1.xml
│ │ ├── activity_async_threadpooldemo1.xml
│ │ ├── activity_async_threadpooldemo2.xml
│ │ ├── activity_async_timerdemo1.xml
│ │ ├── activity_concurrent_atomicdemo1.xml
│ │ ├── activity_concurrent_countdownlatchdemo1.xml
│ │ ├── activity_concurrent_cyclicbarrierdemo1.xml
│ │ ├── activity_concurrent_lockdemo1.xml
│ │ ├── activity_concurrent_lockdemo2.xml
│ │ ├── activity_concurrent_lockdemo3.xml
│ │ ├── activity_concurrent_readwritelockdemo1.xml
│ │ ├── activity_concurrent_reentrantlockdemo1.xml
│ │ ├── activity_concurrent_reentrantreadwritelockdemo1.xml
│ │ ├── activity_concurrent_semaphoredemo1.xml
│ │ ├── activity_concurrent_synchronizeddemo1.xml
│ │ ├── activity_concurrent_synchronizeddemo2.xml
│ │ ├── activity_concurrent_volatiledemo1.xml
│ │ ├── activity_designpattern_singleton.xml
│ │ ├── activity_fragment_fragmentdemo1.xml
│ │ ├── activity_fragment_fragmentdemo1_2.xml
│ │ ├── activity_fragment_fragmentdemo2.xml
│ │ ├── activity_fragment_fragmentdemo3.xml
│ │ ├── activity_fragment_fragmentdemo4.xml
│ │ ├── activity_input_gesturedemo1.xml
│ │ ├── activity_input_gesturedemo2.xml
│ │ ├── activity_input_gesturedemo3.xml
│ │ ├── activity_input_keydemo1.xml
│ │ ├── activity_input_touchdemo1.xml
│ │ ├── activity_input_touchdemo2.xml
│ │ ├── activity_input_touchdemo3.xml
│ │ ├── activity_input_touchdemo4.xml
│ │ ├── activity_input_touchdemo5.xml
│ │ ├── activity_ipc_broadcastdemo1.xml
│ │ ├── activity_ipc_broadcastdemo2.xml
│ │ ├── activity_ipc_broadcastdemo3.xml
│ │ ├── activity_ipc_clipboarddemo1.xml
│ │ ├── activity_ipc_contentproviderdemo1.xml
│ │ ├── activity_ipc_packagedemo1.xml
│ │ ├── activity_ipc_sharesourcedemo1.xml
│ │ ├── activity_ipc_urlschemedemo1.xml
│ │ ├── activity_java_bitdemo1.xml
│ │ ├── activity_java_callbackdemo1.xml
│ │ ├── activity_jetpack_lifecycle_databindingdemo.xml
│ │ ├── activity_jetpack_lifecycle_lifecycledemo.xml
│ │ ├── activity_jetpack_lifecycle_livedatademo.xml
│ │ ├── activity_jetpack_lifecycle_livedatademo2.xml
│ │ ├── activity_jetpack_lifecycle_viewmodeldemo.xml
│ │ ├── activity_kotlin_coroutine_demo1.xml
│ │ ├── activity_kotlin_coroutine_demo2.xml
│ │ ├── activity_kotlin_coroutine_demo3.xml
│ │ ├── activity_kotlin_coroutine_demo4.xml
│ │ ├── activity_kotlin_coroutine_demo5.xml
│ │ ├── activity_kotlin_coroutine_demo6.xml
│ │ ├── activity_kotlin_coroutine_demo7.xml
│ │ ├── activity_kotlin_demo1.xml
│ │ ├── activity_kotlin_demo10.xml
│ │ ├── activity_kotlin_demo11.xml
│ │ ├── activity_kotlin_demo12.xml
│ │ ├── activity_kotlin_demo2.xml
│ │ ├── activity_kotlin_demo3.xml
│ │ ├── activity_kotlin_demo4.xml
│ │ ├── activity_kotlin_demo5.xml
│ │ ├── activity_kotlin_demo6.xml
│ │ ├── activity_kotlin_demo7.xml
│ │ ├── activity_kotlin_demo8.xml
│ │ ├── activity_kotlin_demo9.xml
│ │ ├── activity_kotlin_helloworld.xml
│ │ ├── activity_main.xml
│ │ ├── activity_ndk_ndkdemo1.xml
│ │ ├── activity_notification_notificationdemo1.xml
│ │ ├── activity_notification_notificationdemo1click.xml
│ │ ├── activity_notification_notificationdemo2.xml
│ │ ├── activity_notification_toastdemo1.xml
│ │ ├── activity_notification_toastdemo1_customtoast.xml
│ │ ├── activity_optimize_demo1.xml
│ │ ├── activity_optimize_demo2.xml
│ │ ├── activity_optimize_demo3.xml
│ │ ├── activity_optimize_demo4.xml
│ │ ├── activity_resource_localizationdemo1.xml
│ │ ├── activity_resource_metadatademo1.xml
│ │ ├── activity_resource_xmldemo1.xml
│ │ ├── activity_service_downloadmanagerdemo1.xml
│ │ ├── activity_service_servicedemo1.xml
│ │ ├── activity_service_workermanagerdemo1.xml
│ │ ├── activity_storage_android11demo1.xml
│ │ ├── activity_storage_android11demo2.xml
│ │ ├── activity_storage_android11demo3.xml
│ │ ├── activity_storage_sharedpreferencesdemo1.xml
│ │ ├── activity_storage_sqlitedemo1.xml
│ │ ├── activity_storage_storagedemo1.xml
│ │ ├── activity_storage_storagedemo2.xml
│ │ ├── activity_storage_storagedemo3.xml
│ │ ├── activity_tools_generatehtmlindex.xml
│ │ ├── activity_tools_generatereadme.xml
│ │ ├── activity_ui_colordemo1.xml
│ │ ├── activity_ui_configurationchangedemo1.xml
│ │ ├── activity_ui_densitydemo1.xml
│ │ ├── activity_ui_icondemo1.xml
│ │ ├── activity_ui_immersivedemo1.xml
│ │ ├── activity_ui_immersivedemo2.xml
│ │ ├── activity_ui_navigationbardemo1.xml
│ │ ├── activity_ui_shapedemo1.xml
│ │ ├── activity_ui_shapedemo2.xml
│ │ ├── activity_ui_shapedemo3.xml
│ │ ├── activity_ui_statusbardemo1.xml
│ │ ├── activity_ui_styledemo1.xml
│ │ ├── activity_ui_themedemo1.xml
│ │ ├── activity_ui_themedemo2.xml
│ │ ├── activity_ui_themedemo3.xml
│ │ ├── activity_utils_demo1.xml
│ │ ├── activity_utils_demo2.xml
│ │ ├── activity_utils_demo3.xml
│ │ ├── activity_view_button_buttondemo1.xml
│ │ ├── activity_view_button_buttondemo2.xml
│ │ ├── activity_view_button_imagebuttondemo1.xml
│ │ ├── activity_view_collection_expandablelistviewdemo1.xml
│ │ ├── activity_view_collection_gridviewdemo1.xml
│ │ ├── activity_view_collection_gridviewdemo2.xml
│ │ ├── activity_view_collection_viewflipperdemo1.xml
│ │ ├── activity_view_collection_viewpagerdemo1.xml
│ │ ├── activity_view_collection_viewpagerdemo1_page1.xml
│ │ ├── activity_view_collection_viewpagerdemo1_page2.xml
│ │ ├── activity_view_collection_viewpagerdemo1_page3.xml
│ │ ├── activity_view_collection_viewpagerdemo2.xml
│ │ ├── activity_view_collection_viewpagerdemo2_page1.xml
│ │ ├── activity_view_collection_viewpagerdemo2_page2.xml
│ │ ├── activity_view_collection_viewpagerdemo2_page3.xml
│ │ ├── activity_view_collection_viewpagerdemo3.xml
│ │ ├── activity_view_collection_viewpagerdemo4.xml
│ │ ├── activity_view_custom_customview1demo.xml
│ │ ├── activity_view_custom_customview2demo.xml
│ │ ├── activity_view_custom_customview3demo.xml
│ │ ├── activity_view_custom_customview4demo.xml
│ │ ├── activity_view_custom_myloadingdemo1.xml
│ │ ├── activity_view_flyout_alertdialogdemo1.xml
│ │ ├── activity_view_flyout_alertdialogdemo2.xml
│ │ ├── activity_view_flyout_alertdialogdemo3.xml
│ │ ├── activity_view_flyout_alertdialogdemo4.xml
│ │ ├── activity_view_flyout_contextmenudemo1.xml
│ │ ├── activity_view_flyout_contextmenudemo2.xml
│ │ ├── activity_view_flyout_datepickerdialogdemo1.xml
│ │ ├── activity_view_flyout_popupmenudemo1.xml
│ │ ├── activity_view_flyout_popupmenudemo2.xml
│ │ ├── activity_view_flyout_popupwindowdemo1.xml
│ │ ├── activity_view_flyout_progressdialogdemo1.xml
│ │ ├── activity_view_flyout_timepickerdialogdemo1.xml
│ │ ├── activity_view_layout_constraintlayoutdemo1.xml
│ │ ├── activity_view_layout_constraintlayoutdemo2.xml
│ │ ├── activity_view_layout_constraintlayoutdemo3.xml
│ │ ├── activity_view_layout_framelayoutdemo1.xml
│ │ ├── activity_view_layout_gridlayoutdemo1.xml
│ │ ├── activity_view_layout_includedemo1.xml
│ │ ├── activity_view_layout_inflatedemo1.xml
│ │ ├── activity_view_layout_linearlayoutdemo1.xml
│ │ ├── activity_view_layout_relativelayoutdemo1.xml
│ │ ├── activity_view_layout_scrollviewdemo1.xml
│ │ ├── activity_view_layout_tablelayoutdemo1.xml
│ │ ├── activity_view_listview_listviewdemo1.xml
│ │ ├── activity_view_listview_listviewdemo10.xml
│ │ ├── activity_view_listview_listviewdemo2.xml
│ │ ├── activity_view_listview_listviewdemo3.xml
│ │ ├── activity_view_listview_listviewdemo4.xml
│ │ ├── activity_view_listview_listviewdemo5.xml
│ │ ├── activity_view_listview_listviewdemo6.xml
│ │ ├── activity_view_listview_listviewdemo7.xml
│ │ ├── activity_view_listview_listviewdemo8.xml
│ │ ├── activity_view_listview_listviewdemo9.xml
│ │ ├── activity_view_media_glidedemo1.xml
│ │ ├── activity_view_media_imageviewdemo1.xml
│ │ ├── activity_view_media_imageviewdemo2.xml
│ │ ├── activity_view_media_mediaplayerdemo1.xml
│ │ ├── activity_view_media_mediaplayerdemo2.xml
│ │ ├── activity_view_media_mediaplayerdemo3.xml
│ │ ├── activity_view_media_ninepatchdemo1.xml
│ │ ├── activity_view_media_picassodemo1.xml
│ │ ├── activity_view_media_screenshotdemo1.xml
│ │ ├── activity_view_navigation_drawerlayoutdemo1.xml
│ │ ├── activity_view_navigation_tabbardemo1.xml
│ │ ├── activity_view_navigation_toolbardemo1.xml
│ │ ├── activity_view_navigation_toolbardemo2.xml
│ │ ├── activity_view_progress_progressbardemo1.xml
│ │ ├── activity_view_progress_progressbardemo2.xml
│ │ ├── activity_view_progress_ratingbardemo1.xml
│ │ ├── activity_view_progress_ratingbardemo2.xml
│ │ ├── activity_view_progress_seekbardemo1.xml
│ │ ├── activity_view_progress_seekbardemo2.xml
│ │ ├── activity_view_recyclerview_recyclerviewdemo1.xml
│ │ ├── activity_view_recyclerview_recyclerviewdemo2.xml
│ │ ├── activity_view_recyclerview_recyclerviewdemo3.xml
│ │ ├── activity_view_recyclerview_recyclerviewdemo4.xml
│ │ ├── activity_view_selection_checkboxdemo1.xml
│ │ ├── activity_view_selection_checkboxdemo2.xml
│ │ ├── activity_view_selection_numberpickerdemo1.xml
│ │ ├── activity_view_selection_numberpickerdemo2.xml
│ │ ├── activity_view_selection_radiobuttondemo1.xml
│ │ ├── activity_view_selection_radiobuttondemo2.xml
│ │ ├── activity_view_selection_spinnerdemo1.xml
│ │ ├── activity_view_selection_spinnerdemo2.xml
│ │ ├── activity_view_selection_spinnerdemo3.xml
│ │ ├── activity_view_selection_spinnerdemo4.xml
│ │ ├── activity_view_selection_spinnerdemo5.xml
│ │ ├── activity_view_selection_switchdemo1.xml
│ │ ├── activity_view_selection_switchdemo2.xml
│ │ ├── activity_view_selection_togglebuttondemo1.xml
│ │ ├── activity_view_selection_togglebuttondemo2.xml
│ │ ├── activity_view_text_autocompletetextviewdemo1.xml
│ │ ├── activity_view_text_edittextdemo1.xml
│ │ ├── activity_view_text_edittextdemo2.xml
│ │ ├── activity_view_text_edittextdemo3.xml
│ │ ├── activity_view_text_multiautocompletetextviewdemo1.xml
│ │ ├── activity_view_text_textviewdemo1.xml
│ │ ├── activity_view_text_textviewdemo2.xml
│ │ ├── activity_view_text_textviewdemo3.xml
│ │ ├── activity_view_text_textviewdemo4.xml
│ │ ├── activity_view_text_textviewdemo5.xml
│ │ ├── activity_view_text_textviewdemo6.xml
│ │ ├── activity_view_viewdemo1.xml
│ │ ├── activity_view_viewdemo2.xml
│ │ ├── activity_view_viewdemo3.xml
│ │ ├── activity_view_webview_webviewdemo1.xml
│ │ ├── activity_view_webview_webviewdemo2.xml
│ │ ├── activity_view_webview_webviewdemo3.xml
│ │ ├── activity_view_webview_webviewdemo4.xml
│ │ ├── activity_view_webview_webviewdemo5.xml
│ │ ├── alertdialog_view_flyout_alertdialogdemo2.xml
│ │ ├── customview_view_custom_customview3.xml
│ │ ├── fragment_fragment_fragment1_1.xml
│ │ ├── fragment_fragment_fragment2_1.xml
│ │ ├── fragment_fragment_fragment2_2.xml
│ │ ├── fragment_fragment_fragment3_1.xml
│ │ ├── fragment_fragment_fragment4_1.xml
│ │ ├── fragment_view_collection_viewpagerdemo3.xml
│ │ ├── fragment_view_collection_viewpagerdemo4.xml
│ │ ├── item_expand_child.xml
│ │ ├── item_expand_group.xml
│ │ ├── item_view_collection_gridviewdemo1.xml
│ │ ├── item_view_collection_gridviewdemo2.xml
│ │ ├── item_view_listview_listviewdemo1.xml
│ │ ├── item_view_listview_listviewdemo10.xml
│ │ ├── item_view_listview_listviewdemo2.xml
│ │ ├── item_view_listview_listviewdemo3.xml
│ │ ├── item_view_listview_listviewdemo4.xml
│ │ ├── item_view_listview_listviewdemo5.xml
│ │ ├── item_view_listview_listviewdemo6.xml
│ │ ├── item_view_listview_listviewdemo6_footer.xml
│ │ ├── item_view_listview_listviewdemo6_header.xml
│ │ ├── item_view_listview_listviewdemo7_1.xml
│ │ ├── item_view_listview_listviewdemo7_2.xml
│ │ ├── item_view_listview_listviewdemo8.xml
│ │ ├── item_view_listview_listviewdemo8_loadmore.xml
│ │ ├── item_view_recyclerview_myrecyclerviewadapter_1.xml
│ │ ├── item_view_recyclerview_myrecyclerviewadapter_2.xml
│ │ ├── item_view_recyclerview_recyclerviewdemo8_loadmore.xml
│ │ ├── item_view_selection_spinnerdemo3.xml
│ │ ├── item_view_selection_spinnerdemo4.xml
│ │ ├── item_view_selection_spinnerdemo5.xml
│ │ ├── item_view_text_autocompletetextviewdemo1.xml
│ │ ├── item_view_text_multiautocompletetextviewdemo1.xml
│ │ ├── popupwindow_measure_softinput.xml
│ │ ├── popupwindow_view_layout_popupwindowdemo1.xml
│ │ ├── remoteviews_big_notification_notificationdemo2.xml
│ │ ├── remoteviews_notification_notificationdemo2.xml
│ │ ├── view_view_layout_includedemo1.xml
│ │ └── view_view_layout_inflatedemo1.xml
│ │ ├── menu
│ │ ├── menu_view_flyout_contextmenudemo1.xml
│ │ ├── menu_view_flyout_contextmenudemo2.xml
│ │ ├── menu_view_flyout_popupmenudemo1.xml
│ │ ├── menu_view_flyout_popupmenudemo2.xml
│ │ ├── menu_view_navigation_toolbardemo1.xml
│ │ └── menu_view_navigation_toolbardemo2.xml
│ │ ├── mipmap-xxhdpi
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_alpha.png
│ │ └── ic_launcher_round.png
│ │ ├── raw
│ │ ├── notification.mp3
│ │ └── text_storage_storagedemo3.txt
│ │ ├── values-en
│ │ └── strings.xml
│ │ ├── values-zh
│ │ └── strings.xml
│ │ ├── values
│ │ ├── arrays.xml
│ │ ├── attrs.xml
│ │ ├── colors.xml
│ │ ├── dimens.xml
│ │ ├── strings.xml
│ │ └── styles.xml
│ │ └── xml
│ │ └── network_security_config.xml
│ └── test
│ └── java
│ └── com
│ └── webabcd
│ └── androiddemo
│ └── ExampleUnitTest.java
├── build.gradle
├── gradle.properties
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle
/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea/caches
5 | /.idea/libraries
6 | /.idea/modules.xml
7 | /.idea/workspace.xml
8 | /.idea/navEditor.xml
9 | /.idea/assetWizardSettings.xml
10 | .DS_Store
11 | /build
12 | /captures
13 | .externalNativeBuild
14 | .cxx
15 |
--------------------------------------------------------------------------------
/.idea/compiler.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/deploymentTargetDropDown.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/.idea/gradle.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
18 |
19 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 | /src/main/obj
--------------------------------------------------------------------------------
/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
--------------------------------------------------------------------------------
/app/src/androidTest/java/com/webabcd/androiddemo/ExampleInstrumentedTest.java:
--------------------------------------------------------------------------------
1 | package com.webabcd.androiddemo;
2 |
3 | import android.content.Context;
4 |
5 | import androidx.test.platform.app.InstrumentationRegistry;
6 | import androidx.test.ext.junit.runners.AndroidJUnit4;
7 |
8 | import org.junit.Test;
9 | import org.junit.runner.RunWith;
10 |
11 | import static org.junit.Assert.*;
12 |
13 | /**
14 | * Instrumented test, which will execute on an Android device.
15 | *
16 | * @see Testing documentation
17 | */
18 | @RunWith(AndroidJUnit4.class)
19 | public class ExampleInstrumentedTest {
20 | @Test
21 | public void useAppContext() {
22 | // Context of the app under test.
23 | Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
24 | assertEquals("com.webabcd.androiddemo", appContext.getPackageName());
25 | }
26 | }
--------------------------------------------------------------------------------
/app/src/main/AndroidManifest.xml.readme:
--------------------------------------------------------------------------------
1 | 关于 application 节点的几个属性的说明
2 | 1、extractNativeLibs="true" 会通过 zip 压缩 so,否则不压缩 so
3 | minSdkVersion >= 23 且 Android Gradle plugin >= 3.6.0 时,extractNativeLibs 默认值为 false,否则其默认值为 true
4 | 2、networkSecurityConfig="@xml/network_security_config"(在 android 9.0 或以上系统请求 http 资源,需要配置这个)
5 |
6 | 关于 activity 节点的几个属性的说明
7 | 1、android:exported="true" 的意思是此 activity 允许被其他程序启动
--------------------------------------------------------------------------------
/app/src/main/assets/ad.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webabcd/AndroidDemo/02031106c66b359162f32f6564c557f708cea593/app/src/main/assets/ad.mp4
--------------------------------------------------------------------------------
/app/src/main/assets/son.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webabcd/AndroidDemo/02031106c66b359162f32f6564c557f708cea593/app/src/main/assets/son.jpg
--------------------------------------------------------------------------------
/app/src/main/assets/text_storage_storagedemo3.txt:
--------------------------------------------------------------------------------
1 | i am from assets
--------------------------------------------------------------------------------
/app/src/main/java/com/webabcd/androiddemo/OnGroupExpandedListener.java:
--------------------------------------------------------------------------------
1 | /**
2 | * 本程序首页的 ExpandableListView 分组展开监听器
3 | */
4 |
5 | package com.webabcd.androiddemo;
6 |
7 | public interface OnGroupExpandedListener {
8 | /**
9 | * 分组展开
10 | *
11 | * @param groupPosition 分组的位置
12 | */
13 | void onGroupExpanded(int groupPosition);
14 | }
15 |
--------------------------------------------------------------------------------
/app/src/main/java/com/webabcd/androiddemo/animation/AnimationDemo3CustomInterpolator.java:
--------------------------------------------------------------------------------
1 | /**
2 | * 自定义 Interpolator 实现一个先慢后快的效果
3 | *
4 | * Interpolator 用于计算不同时间点的动画结果的比例值
5 | */
6 |
7 | package com.webabcd.androiddemo.animation;
8 |
9 | import android.view.animation.BaseInterpolator;
10 |
11 | // 继承 BaseInterpolator 实现一个自定义的 Interpolator
12 | public class AnimationDemo3CustomInterpolator extends BaseInterpolator {
13 |
14 | private float mPow;
15 |
16 | /**
17 | * @param pow 值越大,先慢后快的效果越明显
18 | */
19 | public AnimationDemo3CustomInterpolator(float pow) {
20 | mPow = pow;
21 | }
22 |
23 | // 传入一个动画的时间点值(0 - 1 之间,0 对应动画开始的时间点,1 对应动画结束的时间点),返回插值结果(允许不在 0 - 1 之间)
24 | // 这个插值结果就是指定时间点的动画结果的比例值,这个比例值乘以(目标位置 - 初始位置)就是动画当前时间点的相对于初始位置的位置
25 | @Override
26 | public float getInterpolation(float input) {
27 | return (float) Math.pow(input, mPow);
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/app/src/main/java/com/webabcd/androiddemo/animation/AnimationDemo5CustomTypeEvaluator.java:
--------------------------------------------------------------------------------
1 | /**
2 | * 自定义 TypeEvaluator
3 | *
4 | * 本例用于根据从 TimeInterpolator 获取到的比例值,计算出 Point 的值
5 | */
6 |
7 | package com.webabcd.androiddemo.animation;
8 |
9 | import android.animation.TypeEvaluator;
10 | import android.graphics.Point;
11 |
12 | public class AnimationDemo5CustomTypeEvaluator implements TypeEvaluator {
13 |
14 | @Override
15 | public Object evaluate(float fraction, Object startValue, Object endValue) {
16 | // startValue - Point 的开始值
17 | // endValue - Point 的结束值
18 | Point startPoint = (Point) startValue;
19 | Point endPoint = (Point) endValue;
20 |
21 | // fraction 是通过 TimeInterpolator 计算出的比例值,需要根据此值以及 startValue 和 endValue 计算出 fraction 对应的 Point 值
22 | float x = startPoint.x + (endPoint.x - startPoint.x) * fraction;
23 | float y = startPoint.y + (endPoint.y - startPoint.y) * fraction;
24 |
25 | return new Point((int)x, (int)y);
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/app/src/main/java/com/webabcd/androiddemo/animation/MatrixDemo2.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Matrix 变换(通过自定义控件实现)
3 | *
4 | * ImageView 有设置其 Matrix 变换的方法(需要将其 scaleType 设置为 matrix),但是其他控件都没有,那么如何设置其他控件的 Matrix 变换呢
5 | * 本例演示如何重写 TextView 控件的 onDraw() 方法,以使其支持 Matrix 变换(详细代码参见:animation/MatrixDemo2CustomView.java)
6 | *
7 | * 注:对于非 ImageView 控件的 Matrix 变换来说,除了用本例的方法外,也可以用其他方法实现。比如调用控件的 setTranslationX(), setScaleX() 之类的方法,或者用 0 秒动画
8 | */
9 |
10 | package com.webabcd.androiddemo.animation;
11 |
12 | import androidx.appcompat.app.AppCompatActivity;
13 | import android.os.Bundle;
14 |
15 | import com.webabcd.androiddemo.R;
16 |
17 | public class MatrixDemo2 extends AppCompatActivity {
18 |
19 | @Override
20 | protected void onCreate(Bundle savedInstanceState) {
21 | super.onCreate(savedInstanceState);
22 | setContentView(R.layout.activity_animation_matrixdemo2);
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/app/src/main/java/com/webabcd/androiddemo/designpattern/SingletonPattern.java:
--------------------------------------------------------------------------------
1 | /**
2 | * 单例模式
3 | */
4 |
5 | package com.webabcd.androiddemo.designpattern;
6 |
7 | import android.os.SystemClock;
8 |
9 | public class SingletonPattern {
10 | private static SingletonPattern instance = null;
11 |
12 | public synchronized static SingletonPattern getInstance() {
13 | if (instance == null) {
14 | instance = new SingletonPattern();
15 | }
16 | return instance;
17 | }
18 |
19 | private final long mTimestamp;
20 |
21 | private SingletonPattern() {
22 | mTimestamp = SystemClock.elapsedRealtime();
23 | }
24 |
25 | public long getTimestamp() {
26 | return mTimestamp;
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/app/src/main/java/com/webabcd/androiddemo/fragment/Fragment4_1.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Fragment4_1,由 FragmentDemo4 动态加载,用于演示 Fragment 动画
3 | */
4 |
5 | package com.webabcd.androiddemo.fragment;
6 |
7 | import android.graphics.Color;
8 | import android.os.Bundle;
9 | import androidx.fragment.app.Fragment;
10 | import android.view.LayoutInflater;
11 | import android.view.View;
12 | import android.view.ViewGroup;
13 |
14 | import com.webabcd.androiddemo.R;
15 |
16 | import java.util.Random;
17 |
18 | public class Fragment4_1 extends Fragment {
19 |
20 | @Override
21 | public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
22 | View view = inflater.inflate(R.layout.fragment_fragment_fragment4_1, container, false);
23 |
24 | Random random = new Random();
25 | view.setBackgroundColor(Color.argb(255, random.nextInt(256), random.nextInt(256), random.nextInt(256)));
26 |
27 | return view;
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/app/src/main/java/com/webabcd/androiddemo/fragment/FragmentDemo1_2.java:
--------------------------------------------------------------------------------
1 | package com.webabcd.androiddemo.fragment;
2 |
3 | import androidx.appcompat.app.AppCompatActivity;
4 | import android.os.Bundle;
5 | import android.view.View;
6 | import android.widget.Button;
7 |
8 | import com.webabcd.androiddemo.R;
9 |
10 | public class FragmentDemo1_2 extends AppCompatActivity {
11 |
12 | private Button mButton1;
13 |
14 | @Override
15 | protected void onCreate(Bundle savedInstanceState) {
16 | super.onCreate(savedInstanceState);
17 | setContentView(R.layout.activity_fragment_fragmentdemo1_2);
18 |
19 | mButton1 = findViewById(R.id.button1);
20 | mButton1.setOnClickListener(new View.OnClickListener() {
21 | @Override
22 | public void onClick(View v) {
23 | finish();
24 | }
25 | });
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/app/src/main/java/com/webabcd/androiddemo/java/CallbackDemo1_CallbackClass.java:
--------------------------------------------------------------------------------
1 | /**
2 | * 本例用于演示如何实现支持回调的类
3 | *
4 | * 定义回调接口参见:CallbackDemo1_CallbackInterface.java
5 | * 使用支持回调的类参见:CallbackDemo1.java
6 | */
7 |
8 | package com.webabcd.androiddemo.java;
9 |
10 | import java.util.Date;
11 |
12 | public class CallbackDemo1_CallbackClass {
13 |
14 | private CallbackDemo1_CallbackInterface _callback;
15 |
16 | public CallbackDemo1_CallbackClass(CallbackDemo1_CallbackInterface callBack){
17 | this._callback = callBack;
18 | }
19 |
20 | public void execute() {
21 | if (_callback != null) {
22 | if (new Date().getTime() % 2 == 0) {
23 | _callback.ok();
24 | } else {
25 | _callback.error("错误信息");
26 | }
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/app/src/main/java/com/webabcd/androiddemo/java/CallbackDemo1_CallbackInterface.java:
--------------------------------------------------------------------------------
1 | /**
2 | * 本例用于演示如何定义回调接口
3 | *
4 | * 实现支持回调的类参见:CallbackDemo1_CallbackClass.java
5 | * 使用支持回调的类参见:CallbackDemo1.java
6 | */
7 |
8 | package com.webabcd.androiddemo.java;
9 |
10 | public interface CallbackDemo1_CallbackInterface {
11 | void ok();
12 | void error(String errMsg);
13 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/webabcd/androiddemo/kotlin/Demo8_Abstract.kt:
--------------------------------------------------------------------------------
1 | /**
2 | * 抽象类(用于演示抽象类)
3 | */
4 |
5 | package com.webabcd.androiddemo.kotlin
6 |
7 | abstract class Demo8_Abstract {
8 |
9 | // 需要子类重写的属性
10 | abstract var name:String
11 |
12 | // 需要子类重写的属性
13 | abstract var country:String
14 |
15 | // 需要子类重写的方法
16 | abstract fun getAge(): Int
17 |
18 | // 有自己逻辑的方法,不需要子类重写
19 | fun hello(): String {
20 | return "hello:$name, age:${getAge()}, country:$country"
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/app/src/main/java/com/webabcd/androiddemo/kotlin/Demo8_Class1.kt:
--------------------------------------------------------------------------------
1 | /**
2 | * 父类(用于演示类继承)
3 | *
4 | * 可被继承的类要用 open 修饰(默认是 final 的,即不可继承)
5 | * 可被重写的属性或方法要用 open 修饰(默认是 final 的,即不可重写)
6 | */
7 |
8 | package com.webabcd.androiddemo.kotlin
9 |
10 | open class Demo8_Class1(var age: Int) {
11 |
12 | init {
13 | this.age = age
14 | }
15 |
16 | open var name = "wanglei"
17 |
18 | open var country = "china"
19 |
20 | open fun hello(): String {
21 | return "hello:$name, age:$age, country:$country"
22 | }
23 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/webabcd/androiddemo/kotlin/Demo8_Class3.kt:
--------------------------------------------------------------------------------
1 | /**
2 | * 实现类(用于演示接口)
3 | *
4 | * 接口的方法可以有自己的实现,但是属性不可以有自己的实现(需要子类实现)
5 | */
6 |
7 | package com.webabcd.androiddemo.kotlin
8 |
9 | // 通过 : 实现多个接口
10 | // 通过类似如下 override var age: Int 的方式实现接口的属性
11 | class Demo8_Class3(override var age: Int) : Demo8_Interface1, Demo8_Interface2 {
12 |
13 | init {
14 | this.age = age;
15 | }
16 |
17 | // 实现接口的属性
18 | override var name: String = ""
19 | get() = "wanglei"
20 |
21 | // 实现接口的方法
22 | override fun hello(): String {
23 |
24 | // 通过 super 调用接口的方法
25 | // super.hello()
26 |
27 | // 如果实现的多个接口有重名的方法,则可以用如下方式调用不同接口的方法
28 | return super.hello() + " " + super.hello()
29 | }
30 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/webabcd/androiddemo/kotlin/Demo8_Class4.kt:
--------------------------------------------------------------------------------
1 | /**
2 | * 子类(用于演示抽象类)
3 | */
4 |
5 | package com.webabcd.androiddemo.kotlin
6 |
7 | // 通过 : 继承抽象类
8 | // 通过类似如下 override var name: String 的方式重写抽象类的抽象属性
9 | class Demo8_Class4(override var name: String) : Demo8_Abstract() {
10 |
11 | init {
12 | this.name = name
13 | }
14 |
15 | // 重写抽象类的抽象属性
16 | override var country = "china"
17 |
18 | // 重写抽象类的抽象方法
19 | override fun getAge(): Int {
20 | return 100;
21 | }
22 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/webabcd/androiddemo/kotlin/Demo8_Interface1.kt:
--------------------------------------------------------------------------------
1 | /**
2 | * 接口 1(用于演示接口)
3 | *
4 | * 接口的方法可以有自己的实现,但是属性不可以有自己的实现(需要子类实现)
5 | */
6 |
7 | package com.webabcd.androiddemo.kotlin
8 |
9 | interface Demo8_Interface1 {
10 |
11 | var name: String
12 |
13 | var age: Int
14 |
15 | fun hello(): String {
16 | return "hello:$name, age:$age"
17 | }
18 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/webabcd/androiddemo/kotlin/Demo8_Interface2.kt:
--------------------------------------------------------------------------------
1 | /**
2 | * 接口 2(用于演示接口)
3 | *
4 | * 接口的方法可以有自己的实现,但是属性不可以有自己的实现(需要子类实现)
5 | */
6 |
7 | package com.webabcd.androiddemo.kotlin
8 |
9 | interface Demo8_Interface2 {
10 |
11 | var name: String
12 |
13 | var age: Int
14 |
15 | fun hello(): String {
16 | return "hi:$name, age:$age"
17 | }
18 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/webabcd/androiddemo/kotlin/Demo9_DataClass.kt:
--------------------------------------------------------------------------------
1 | /**
2 | * 数据类的示例
3 | */
4 |
5 | package com.webabcd.androiddemo.kotlin
6 |
7 | // 用 data 修饰的类就是数据类
8 | // 主构造函数中的参数,可以直接用 var 或 val 声明,其会自动生成 public 的同名属性
9 | // 主构造函数中声明的属性会支持数据类的特性,比如解构, toString(), copy(), equals(), componentN() 等
10 | data class Demo9_DataClass(var name: String, val age: Int) {
11 | // 这里声明的属性不支持数据类的特性
12 | var salary = 1000
13 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/webabcd/androiddemo/kotlin/Demo9_Enum.kt:
--------------------------------------------------------------------------------
1 | /**
2 | * 枚举的示例
3 | */
4 |
5 | package com.webabcd.androiddemo.kotlin
6 |
7 | enum class Demo9_Enum1 {
8 | // 枚举常量
9 | OK,
10 | ERROR
11 | }
12 |
13 | // 带构造函数的枚举
14 | enum class Demo9_Enum2 (var status: Int) {
15 | // 枚举常量(使用枚举构造函数)
16 | OK(100),
17 | ERROR(200); // 这里要有分号,用于分隔枚举常量和方法
18 |
19 | // 枚举中的方法
20 | fun getMessage() = "message:$status"
21 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/webabcd/androiddemo/kotlin/Demo9_SealedClass.kt:
--------------------------------------------------------------------------------
1 | /**
2 | * 密封类的示例
3 | */
4 |
5 | package com.webabcd.androiddemo.kotlin
6 |
7 | // 用 sealed 修饰的类就是密封类
8 | // 密封类不能实例化
9 | sealed class Demo9_SealedClass {
10 | class OK : Demo9_SealedClass()
11 | class ERROR : Demo9_SealedClass()
12 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/webabcd/androiddemo/kotlin/HelloWorld_Java.java:
--------------------------------------------------------------------------------
1 | package com.webabcd.androiddemo.kotlin;
2 |
3 | public class HelloWorld_Java {
4 |
5 | public String hello(String message) {
6 | return "hello: " + message;
7 | }
8 |
9 | // java 调用 kotlin 的示例
10 | public String javaToKotlin() {
11 | HelloWorld_Kotlin x = new HelloWorld_Kotlin();
12 | return x.hello("java 调用 kotlin");
13 | }
14 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/webabcd/androiddemo/kotlin/HelloWorld_Kotlin.kt:
--------------------------------------------------------------------------------
1 | package com.webabcd.androiddemo.kotlin
2 |
3 | class HelloWorld_Kotlin {
4 |
5 | fun hello(message: String): String {
6 | return "hello: $message"
7 | }
8 |
9 | // kotlin 调用 java 的示例
10 | fun kotlinToJava(): String {
11 | var x = HelloWorld_Java()
12 | return x.hello("kotlin 调用 java")
13 | }
14 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/webabcd/androiddemo/resource/Temp.java:
--------------------------------------------------------------------------------
1 | package com.webabcd.androiddemo.resource;
2 |
3 | // 限定符说明要写,看自己的待写笔记
4 | //
5 |
6 | public class Temp {
7 | }
8 |
--------------------------------------------------------------------------------
/app/src/main/java/com/webabcd/androiddemo/resource/XmlDemo1.java:
--------------------------------------------------------------------------------
1 | /**
2 | * 布局 xml 基础
3 | */
4 |
5 | package com.webabcd.androiddemo.resource;
6 |
7 | import androidx.appcompat.app.AppCompatActivity;
8 | import androidx.core.content.ContextCompat;
9 |
10 | import android.os.Bundle;
11 | import android.widget.TextView;
12 |
13 | import com.webabcd.androiddemo.R;
14 |
15 | public class XmlDemo1 extends AppCompatActivity {
16 |
17 | @Override
18 | protected void onCreate(Bundle savedInstanceState) {
19 | super.onCreate(savedInstanceState);
20 | setContentView(R.layout.activity_resource_xmldemo1);
21 |
22 | // 如果 xml 中的控件有重名,则通过 findViewById() 找到的是 xml 中最先出现的控件
23 | TextView xmldemo1_textView2 = findViewById(R.id.xmldemo1_textView2);
24 | xmldemo1_textView2.setBackgroundColor(ContextCompat.getColor(this, R.color.orange));
25 | }
26 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/webabcd/androiddemo/ui/IconDemo1.java:
--------------------------------------------------------------------------------
1 | /**
2 | * 在 AndroidManifest.xml 中通过如下方式指定普通图标和圆形图标
3 | *
4 | *
5 | * 关于屏幕密度的说明请参见 /ui/DensityDemo1.java
6 | */
7 |
8 | package com.webabcd.androiddemo.ui;
9 |
10 | import androidx.appcompat.app.AppCompatActivity;
11 |
12 | import android.os.Bundle;
13 |
14 | import com.webabcd.androiddemo.R;
15 |
16 | public class IconDemo1 extends AppCompatActivity {
17 |
18 | @Override
19 | protected void onCreate(Bundle savedInstanceState) {
20 | super.onCreate(savedInstanceState);
21 | setContentView(R.layout.activity_ui_icondemo1);
22 | }
23 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/webabcd/androiddemo/ui/ShapeDemo1.java:
--------------------------------------------------------------------------------
1 | /**
2 | * shape 渐变色(线性渐变,放射性渐变,扫描式渐变)
3 | *
4 | * 扫描式渐变的意思就是转着圈渐变
5 | */
6 |
7 | package com.webabcd.androiddemo.ui;
8 |
9 | import androidx.appcompat.app.AppCompatActivity;
10 | import android.os.Bundle;
11 |
12 | import com.webabcd.androiddemo.R;
13 |
14 | public class ShapeDemo1 extends AppCompatActivity {
15 |
16 | @Override
17 | protected void onCreate(Bundle savedInstanceState) {
18 | super.onCreate(savedInstanceState);
19 | setContentView(R.layout.activity_ui_shapedemo1);
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/app/src/main/java/com/webabcd/androiddemo/ui/ShapeDemo2.java:
--------------------------------------------------------------------------------
1 | /**
2 | * shape 之填充,描边,圆角,尺寸,内部间距
3 | */
4 |
5 | package com.webabcd.androiddemo.ui;
6 |
7 | import androidx.appcompat.app.AppCompatActivity;
8 | import android.os.Bundle;
9 |
10 | import com.webabcd.androiddemo.R;
11 |
12 | public class ShapeDemo2 extends AppCompatActivity {
13 |
14 | @Override
15 | protected void onCreate(Bundle savedInstanceState) {
16 | super.onCreate(savedInstanceState);
17 | setContentView(R.layout.activity_ui_shapedemo2);
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/app/src/main/java/com/webabcd/androiddemo/ui/ShapeDemo3.java:
--------------------------------------------------------------------------------
1 | /**
2 | * shape 形状(矩形,圆形,环形,直线)
3 | */
4 |
5 | package com.webabcd.androiddemo.ui;
6 |
7 | import androidx.appcompat.app.AppCompatActivity;
8 | import android.os.Bundle;
9 |
10 | import com.webabcd.androiddemo.R;
11 |
12 | public class ShapeDemo3 extends AppCompatActivity {
13 |
14 | @Override
15 | protected void onCreate(Bundle savedInstanceState) {
16 | super.onCreate(savedInstanceState);
17 | setContentView(R.layout.activity_ui_shapedemo3);
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/app/src/main/java/com/webabcd/androiddemo/ui/ThemeDemo3.java:
--------------------------------------------------------------------------------
1 | /**
2 | * 通过主题修改控件的默认样式
3 | */
4 |
5 | package com.webabcd.androiddemo.ui;
6 |
7 | import androidx.appcompat.app.AppCompatActivity;
8 | import android.os.Bundle;
9 |
10 | import com.webabcd.androiddemo.R;
11 |
12 | public class ThemeDemo3 extends AppCompatActivity {
13 |
14 | @Override
15 | protected void onCreate(Bundle savedInstanceState) {
16 | super.onCreate(savedInstanceState);
17 |
18 | // 指定 activity 的主题(需要在 setContentView() 之前)
19 | setTheme(R.style.ThemeDemo3Theme);
20 |
21 | setContentView(R.layout.activity_ui_themedemo3);
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/app/src/main/java/com/webabcd/androiddemo/view/collection/ExpandableListViewDemo1.java:
--------------------------------------------------------------------------------
1 | /**
2 | * ExpandableListView - 可展开的 ListView
3 | *
4 | * ExpandableListView 的 Adapter 可以用 BaseExpandableListAdapter(最常用的), SimpleExpandableListAdapter, SimpleCursorTreeAdapter
5 | * 关于 ExpandableListView 的知识点,请参见本程序的 MainActivity 中的代码
6 | */
7 |
8 | package com.webabcd.androiddemo.view.collection;
9 |
10 | import androidx.appcompat.app.AppCompatActivity;
11 | import android.os.Bundle;
12 |
13 | import com.webabcd.androiddemo.R;
14 |
15 | public class ExpandableListViewDemo1 extends AppCompatActivity {
16 |
17 | @Override
18 | protected void onCreate(Bundle savedInstanceState) {
19 | super.onCreate(savedInstanceState);
20 | setContentView(R.layout.activity_view_collection_expandablelistviewdemo1);
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/app/src/main/java/com/webabcd/androiddemo/view/custom/CustomView1Demo.java:
--------------------------------------------------------------------------------
1 | /**
2 | * 参见 view/custom/CustomView1.java
3 | * 通过一个自定义 View 来演示 measure, layout, draw
4 | */
5 |
6 | package com.webabcd.androiddemo.view.custom;
7 |
8 | import androidx.appcompat.app.AppCompatActivity;
9 | import android.os.Bundle;
10 |
11 | import com.webabcd.androiddemo.R;
12 |
13 | public class CustomView1Demo extends AppCompatActivity {
14 |
15 | @Override
16 | protected void onCreate(Bundle savedInstanceState) {
17 | super.onCreate(savedInstanceState);
18 | setContentView(R.layout.activity_view_custom_customview1demo);
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/app/src/main/java/com/webabcd/androiddemo/view/custom/CustomView2Demo.java:
--------------------------------------------------------------------------------
1 | /**
2 | * 参见 view/custom/CustomView2.java
3 | * 通过一个自定义 ViewGroup 来演示 measure, layout, draw
4 | */
5 |
6 | package com.webabcd.androiddemo.view.custom;
7 |
8 | import androidx.appcompat.app.AppCompatActivity;
9 | import android.os.Bundle;
10 |
11 | import com.webabcd.androiddemo.R;
12 |
13 | public class CustomView2Demo extends AppCompatActivity {
14 |
15 | @Override
16 | protected void onCreate(Bundle savedInstanceState) {
17 | super.onCreate(savedInstanceState);
18 | setContentView(R.layout.activity_view_custom_customview2demo);
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/app/src/main/java/com/webabcd/androiddemo/view/custom/CustomView4Demo.java:
--------------------------------------------------------------------------------
1 | /**
2 | * 演示自定义控件的自定义属性的使用,自定义控件的实现代码参见 view/custom/CustomView4.java
3 | */
4 |
5 | package com.webabcd.androiddemo.view.custom;
6 |
7 | import androidx.appcompat.app.AppCompatActivity;
8 | import android.os.Bundle;
9 |
10 | import com.webabcd.androiddemo.R;
11 |
12 | public class CustomView4Demo extends AppCompatActivity {
13 |
14 | @Override
15 | protected void onCreate(Bundle savedInstanceState) {
16 | super.onCreate(savedInstanceState);
17 | setContentView(R.layout.activity_view_custom_customview4demo);
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/app/src/main/java/com/webabcd/androiddemo/view/media/ImageViewDemo2.java:
--------------------------------------------------------------------------------
1 | /**
2 | * ImageView - 图片控件
3 | *
4 | * 本例用于演示 ImageView 的 scaleType
5 | *
6 | * 注:关于网络图片的显示和缓存,以及图片的处理之类的建议使用 Picasso 框架
7 | */
8 |
9 | package com.webabcd.androiddemo.view.media;
10 |
11 | import androidx.appcompat.app.AppCompatActivity;
12 | import android.os.Bundle;
13 |
14 | import com.webabcd.androiddemo.R;
15 |
16 | public class ImageViewDemo2 extends AppCompatActivity {
17 |
18 | @Override
19 | protected void onCreate(Bundle savedInstanceState) {
20 | super.onCreate(savedInstanceState);
21 | setContentView(R.layout.activity_view_media_imageviewdemo2);
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/app/src/main/java/com/webabcd/androiddemo/view/media/NinePatchDemo1.java:
--------------------------------------------------------------------------------
1 | /**
2 | * 9patch(nine patch)图片
3 | */
4 |
5 | package com.webabcd.androiddemo.view.media;
6 |
7 | import androidx.appcompat.app.AppCompatActivity;
8 | import android.os.Bundle;
9 |
10 | import com.webabcd.androiddemo.R;
11 |
12 | public class NinePatchDemo1 extends AppCompatActivity {
13 |
14 | @Override
15 | protected void onCreate(Bundle savedInstanceState) {
16 | super.onCreate(savedInstanceState);
17 | setContentView(R.layout.activity_view_media_ninepatchdemo1);
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/app/src/main/java/com/webabcd/androiddemo/view/progress/ProgressBarDemo1.java:
--------------------------------------------------------------------------------
1 | /**
2 | * ProgressBar - 进度条控件
3 | */
4 |
5 | package com.webabcd.androiddemo.view.progress;
6 |
7 | import androidx.appcompat.app.AppCompatActivity;
8 | import android.os.Bundle;
9 |
10 | import com.webabcd.androiddemo.R;
11 |
12 | public class ProgressBarDemo1 extends AppCompatActivity {
13 |
14 | @Override
15 | protected void onCreate(Bundle savedInstanceState) {
16 | super.onCreate(savedInstanceState);
17 | setContentView(R.layout.activity_view_progress_progressbardemo1);
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/app/src/main/java/com/webabcd/androiddemo/view/progress/ProgressBarDemo2.java:
--------------------------------------------------------------------------------
1 | /**
2 | * ProgressBar - 进度条控件
3 | * setIndeterminateDrawable() - 设置圈圈进度条的样式
4 | * setProgressDrawable() - 设置长条进度条的样式
5 | */
6 |
7 | package com.webabcd.androiddemo.view.progress;
8 |
9 | import androidx.appcompat.app.AppCompatActivity;
10 | import android.os.Bundle;
11 |
12 | import com.webabcd.androiddemo.R;
13 |
14 | public class ProgressBarDemo2 extends AppCompatActivity {
15 |
16 | @Override
17 | protected void onCreate(Bundle savedInstanceState) {
18 | super.onCreate(savedInstanceState);
19 | setContentView(R.layout.activity_view_progress_progressbardemo2);
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/app/src/main/java/com/webabcd/androiddemo/view/progress/RatingBarDemo2.java:
--------------------------------------------------------------------------------
1 | /**
2 | * RatingBar - 评分条
3 | */
4 |
5 | package com.webabcd.androiddemo.view.progress;
6 |
7 | import androidx.appcompat.app.AppCompatActivity;
8 | import android.os.Bundle;
9 |
10 | import com.webabcd.androiddemo.R;
11 |
12 | public class RatingBarDemo2 extends AppCompatActivity {
13 |
14 | @Override
15 | protected void onCreate(Bundle savedInstanceState) {
16 | super.onCreate(savedInstanceState);
17 | setContentView(R.layout.activity_view_progress_ratingbardemo2);
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/app/src/main/java/com/webabcd/androiddemo/view/selection/CheckBoxDemo2.java:
--------------------------------------------------------------------------------
1 | /**
2 | * CheckBox - 复选框控件
3 | * setButtonDrawable() - 设置复选框图片在各种状态下的样式
4 | *
5 | *
6 | * 本例主要介绍 CheckBox 的样式
7 | */
8 |
9 | package com.webabcd.androiddemo.view.selection;
10 |
11 | import androidx.appcompat.app.AppCompatActivity;
12 | import android.os.Bundle;
13 | import android.widget.CheckBox;
14 |
15 | import com.webabcd.androiddemo.R;
16 |
17 | public class CheckBoxDemo2 extends AppCompatActivity {
18 |
19 | private CheckBox _checkBox3;
20 |
21 | @Override
22 | protected void onCreate(Bundle savedInstanceState) {
23 | super.onCreate(savedInstanceState);
24 | setContentView(R.layout.activity_view_selection_checkboxdemo2);
25 |
26 | _checkBox3 = (CheckBox)findViewById(R.id.checkBox3);
27 | _checkBox3.setButtonDrawable(R.drawable.selector_checkbox_button);
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/app/src/main/java/com/webabcd/androiddemo/view/selection/SpinnerDemo2.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Spinner - 列表选择框控件
3 | *
4 | * 本例主要介绍 Spinner 的样式
5 | */
6 |
7 | package com.webabcd.androiddemo.view.selection;
8 |
9 | import androidx.appcompat.app.AppCompatActivity;
10 | import android.os.Bundle;
11 |
12 | import com.webabcd.androiddemo.R;
13 |
14 | public class SpinnerDemo2 extends AppCompatActivity {
15 |
16 | @Override
17 | protected void onCreate(Bundle savedInstanceState) {
18 | super.onCreate(savedInstanceState);
19 | setContentView(R.layout.activity_view_selection_spinnerdemo2);
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/app/src/main/java/com/webabcd/androiddemo/view/selection/ToggleButtonDemo2.java:
--------------------------------------------------------------------------------
1 | /**
2 | * ToggleButton - 双状态按钮
3 | * setButtonDrawable() - 设置双状态按钮在各种状态下的样式
4 | */
5 |
6 | package com.webabcd.androiddemo.view.selection;
7 |
8 | import androidx.appcompat.app.AppCompatActivity;
9 | import android.os.Bundle;
10 | import android.widget.ToggleButton;
11 |
12 | import com.webabcd.androiddemo.R;
13 |
14 | public class ToggleButtonDemo2 extends AppCompatActivity {
15 |
16 | private ToggleButton _toggleButton2;
17 |
18 | @Override
19 | protected void onCreate(Bundle savedInstanceState) {
20 | super.onCreate(savedInstanceState);
21 | setContentView(R.layout.activity_view_selection_togglebuttondemo2);
22 |
23 | _toggleButton2 = (ToggleButton)findViewById(R.id.toggleButton2);
24 | _toggleButton2.setButtonDrawable(R.drawable.selector_togglebutton_button);
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/app/src/main/java/com/webabcd/androiddemo/view/text/TextViewMarquee.java:
--------------------------------------------------------------------------------
1 | /**
2 | * TextViewMarquee - 允许一个页面内存在多个跑马灯的 TextView
3 | */
4 |
5 | package com.webabcd.androiddemo.view.text;
6 |
7 | import android.content.Context;
8 | import android.util.AttributeSet;
9 |
10 | // xml 中的 TextView 在编译时自动替换为 AppCompatTextView
11 | // 代码中的 TextView 在 Android 8.0 系统及以上与 AppCompatTextView 相同
12 | public class TextViewMarquee extends androidx.appcompat.widget.AppCompatTextView {
13 |
14 | public TextViewMarquee(Context context) {
15 | super(context);
16 | }
17 |
18 | public TextViewMarquee(Context context, AttributeSet attrs, int defStyle) {
19 | super(context, attrs, defStyle);
20 | }
21 |
22 | public TextViewMarquee(Context context, AttributeSet attrs) {
23 | super(context, attrs);
24 | }
25 |
26 | /**
27 | * 告诉系统我是焦点,从而支持一个页面存在多个跑马灯 TextView
28 | */
29 | @Override
30 | public boolean isFocused() {
31 | return true;
32 | }
33 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/webabcd/androiddemo/view/text/utils/KeyboardHeightObserver.java:
--------------------------------------------------------------------------------
1 | /**
2 | * 用于监听软键盘高度变化的接口
3 | */
4 |
5 | package com.webabcd.androiddemo.view.text.utils;
6 |
7 | public interface KeyboardHeightObserver {
8 | void onKeyboardHeightChanged(int height);
9 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/webabcd/androiddemo/view/text/utils/URLImageGetterDrawable.java:
--------------------------------------------------------------------------------
1 | /**
2 | * 用于绘制 ImageGetter 获得的 Drawable 对象
3 | *
4 | * 因为 ImageGetter 返回的 Drawable 是不可变的,但是在网络图片下载完成后需要将它绘制出来,所以需要对 Drawable 再做一层封装
5 | */
6 |
7 | package com.webabcd.androiddemo.view.text.utils;
8 |
9 | import android.graphics.Canvas;
10 | import android.graphics.drawable.BitmapDrawable;
11 | import android.graphics.drawable.Drawable;
12 |
13 | public class URLImageGetterDrawable extends BitmapDrawable {
14 |
15 | // 需要被绘制的 Drawable 对象
16 | protected Drawable drawable;
17 |
18 | @Override
19 | public void draw(Canvas canvas) {
20 | if(drawable != null) {
21 | drawable.draw(canvas);
22 | }
23 | }
24 | }
--------------------------------------------------------------------------------
/app/src/main/jni/Android.mk:
--------------------------------------------------------------------------------
1 | LOCAL_PATH := $(call my-dir)
2 |
3 | #模块1
4 | include $(CLEAR_VARS) #清除 LOCAL_MODULE, LOCAL_SRC_FILES 之类的变量
5 | LOCAL_CPP_EXTENSION := .cpp # C++ 文件的扩展名
6 | LOCAL_MODULE := jniHello # 模块名。如果模块名为“abc”,则此模块将会生成“libabc.so”文件。
7 | LOCAL_SRC_FILES := cHello.c # 需要编译的源文件
8 | include $(BUILD_SHARED_LIBRARY) # 编译当前模块
9 |
10 | #模块2
--------------------------------------------------------------------------------
/app/src/main/jni/Application.mk:
--------------------------------------------------------------------------------
1 | #如果没有用到 c++ 则可以不配置此文件
--------------------------------------------------------------------------------
/app/src/main/jni/cHello.c:
--------------------------------------------------------------------------------
1 | #include "cHello.h"
2 | #include
3 |
4 | JNIEXPORT jstring JNICALL Java_com_webabcd_androiddemo_ndk_NdkDemo1_helloJniC(JNIEnv *env, jobject obj) {
5 | return (*env)->NewStringUTF(env, "hello: ndk");
6 | }
7 |
--------------------------------------------------------------------------------
/app/src/main/jni/cHello.h:
--------------------------------------------------------------------------------
1 | #include
2 |
3 | #ifndef _Included_com_webabcd_androiddemo_ndk_NdeDemo1
4 | #define _Included_com_webabcd_androiddemo_ndk_NdeDemo1
5 | #ifdef __cplusplus
6 | extern "C" {
7 | #endif
8 |
9 | JNIEXPORT jstring JNICALL Java_com_webabcd_androiddemo_ndk_NdkDemo1_helloJniC(JNIEnv *env, jobject obj);
10 |
11 | #ifdef __cplusplus
12 | }
13 | #endif
14 | #endif
--------------------------------------------------------------------------------
/app/src/main/jniLibs/arm64-v8a/libjniHello.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webabcd/AndroidDemo/02031106c66b359162f32f6564c557f708cea593/app/src/main/jniLibs/arm64-v8a/libjniHello.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/armeabi-v7a/libjniHello.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webabcd/AndroidDemo/02031106c66b359162f32f6564c557f708cea593/app/src/main/jniLibs/armeabi-v7a/libjniHello.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86/libjniHello.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webabcd/AndroidDemo/02031106c66b359162f32f6564c557f708cea593/app/src/main/jniLibs/x86/libjniHello.so
--------------------------------------------------------------------------------
/app/src/main/jniLibs/x86_64/libjniHello.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webabcd/AndroidDemo/02031106c66b359162f32f6564c557f708cea593/app/src/main/jniLibs/x86_64/libjniHello.so
--------------------------------------------------------------------------------
/app/src/main/res/anim/accelerateinterpolator_animation_animationdemo2.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/activity_fade_in.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/activity_fade_out.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/activity_flip_horizontal_in.xml:
--------------------------------------------------------------------------------
1 |
2 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/activity_flip_horizontal_out.xml:
--------------------------------------------------------------------------------
1 |
2 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/activity_push_left_in.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/activity_push_left_out.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/activity_zoom_enter.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
8 |
9 |
17 |
18 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/activity_zoom_exit.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
8 |
9 |
17 |
18 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/alertdialog_enter.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/alertdialog_exit.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/fragment_push_left_in.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/fragment_push_left_out.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/fragment_zoom_enter.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
8 |
9 |
17 |
18 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/fragment_zoom_exit.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
8 |
9 |
17 |
18 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/popupwindow_enter.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/popupwindow_exit.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/translate_animationdemo2.xml:
--------------------------------------------------------------------------------
1 |
7 |
8 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/viewflipper_left_in.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/viewflipper_left_out.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/viewflipper_right_in.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/viewflipper_right_out.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/animator/animator_animation_animationdemo5.xml:
--------------------------------------------------------------------------------
1 |
14 |
15 |
24 |
25 |
--------------------------------------------------------------------------------
/app/src/main/res/color/selector_button_textcolor.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/son02.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webabcd/AndroidDemo/02031106c66b359162f32f6564c557f708cea593/app/src/main/res/drawable-mdpi/son02.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_expand_less.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webabcd/AndroidDemo/02031106c66b359162f32f6564c557f708cea593/app/src/main/res/drawable-xxhdpi/ic_expand_less.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_expand_more.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webabcd/AndroidDemo/02031106c66b359162f32f6564c557f708cea593/app/src/main/res/drawable-xxhdpi/ic_expand_more.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_ratingbar_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webabcd/AndroidDemo/02031106c66b359162f32f6564c557f708cea593/app/src/main/res/drawable-xxhdpi/ic_ratingbar_background.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_ratingbar_progress.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webabcd/AndroidDemo/02031106c66b359162f32f6564c557f708cea593/app/src/main/res/drawable-xxhdpi/ic_ratingbar_progress.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_ratingbar_secondaryprogress.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webabcd/AndroidDemo/02031106c66b359162f32f6564c557f708cea593/app/src/main/res/drawable-xxhdpi/ic_ratingbar_secondaryprogress.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/img_activity_lifecycle.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webabcd/AndroidDemo/02031106c66b359162f32f6564c557f708cea593/app/src/main/res/drawable-xxhdpi/img_activity_lifecycle.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/img_dialog_ninepatch.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webabcd/AndroidDemo/02031106c66b359162f32f6564c557f708cea593/app/src/main/res/drawable-xxhdpi/img_dialog_ninepatch.9.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/img_dialog_original.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webabcd/AndroidDemo/02031106c66b359162f32f6564c557f708cea593/app/src/main/res/drawable-xxhdpi/img_dialog_original.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/img_fragment_lifecycle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webabcd/AndroidDemo/02031106c66b359162f32f6564c557f708cea593/app/src/main/res/drawable-xxhdpi/img_fragment_lifecycle.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/img_sample_son.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webabcd/AndroidDemo/02031106c66b359162f32f6564c557f708cea593/app/src/main/res/drawable-xxhdpi/img_sample_son.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/img_theme_explain.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webabcd/AndroidDemo/02031106c66b359162f32f6564c557f708cea593/app/src/main/res/drawable-xxhdpi/img_theme_explain.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/img_thread_state.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webabcd/AndroidDemo/02031106c66b359162f32f6564c557f708cea593/app/src/main/res/drawable-xxhdpi/img_thread_state.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/son01.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webabcd/AndroidDemo/02031106c66b359162f32f6564c557f708cea593/app/src/main/res/drawable-xxhdpi/son01.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable/animationlist_animationdemo4.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/animationlist_progressbar_indeterminate.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/layerlist_checkbox_button_checked.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/layerlist_checkbox_button_unchecked.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/layerlist_expand_group_collapsed.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/layerlist_expand_group_expanded.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/layerlist_progressbar_indeterminate.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | -
7 |
13 |
14 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/layerlist_radiobutton_button_checked.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/layerlist_radiobutton_button_unchecked.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/layerlist_ratingbar_progress.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
12 |
13 |
14 |
17 |
18 |
19 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/layerlist_splash_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
5 |
6 |
7 |
8 |
9 | -
10 |
13 |
14 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/layerlist_togglebutton_button_checked.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/layerlist_togglebutton_button_unchecked.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/rotate_progressbar_indeterminate.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
10 |
15 |
22 |
23 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/selector_checkbox_button.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
13 |
14 |
18 |
22 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/selector_expand_group.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/selector_listview_item_background_normal.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
10 |
13 |
14 |
15 | -
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 | -
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/selector_listview_item_background_selected.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
10 |
13 |
14 |
15 | -
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 | -
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/selector_radiobutton_button.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
12 |
13 |
17 |
21 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/selector_seekbar_thumb.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
9 |
12 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/selector_switch_thumb.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
9 |
12 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/selector_switch_track.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
9 |
12 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/selector_togglebutton_button.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
12 |
13 |
17 |
21 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/shape_button_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/shape_edittext_bottom_line.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/shape_edittext_cursor.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/shape_linearlayout_divider_vertical.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/shape_listview_divider.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/shape_recyclerview_divider.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/shape_sample_gradient_linear.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
7 |
17 |
22 |
23 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/shape_sample_gradient_radial.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
7 |
17 |
24 |
25 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/shape_sample_gradient_sweep.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
7 |
16 |
22 |
23 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/shape_sample_line.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
7 |
10 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/shape_sample_oval.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
7 |
10 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/shape_sample_padding.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/shape_sample_rectangle.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
7 |
10 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/shape_sample_ring.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
12 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/shape_sample_size.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
11 |
12 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/shape_sample_solid_stroke_corners.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
22 |
23 |
24 |
29 |
30 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/shape_seekbar_thumb_pressed.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
10 |
11 |
14 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/shape_seekbar_thumb_unpressed.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
10 |
11 |
14 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/shape_switch_thumb_pressed.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
10 |
11 |
14 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/shape_switch_thumb_unpressed.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
10 |
11 |
14 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/shape_switch_track_checked.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/shape_switch_track_unchecked.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/shape_toast_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
9 |
12 |
13 |
18 |
19 |
24 |
--------------------------------------------------------------------------------
/app/src/main/res/font/myfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webabcd/AndroidDemo/02031106c66b359162f32f6564c557f708cea593/app/src/main/res/font/myfont.ttf
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_activity_activitydemo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
13 |
14 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_activity_activitydemo1_2.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_activity_activitydemo2_landscape.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
12 |
13 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_activity_activitydemo2_portrait.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
12 |
13 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_activity_activitydemo3.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
18 |
19 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_activity_activitydemo3_2.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
17 |
18 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_activity_activitydemo4.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_activity_activitydemo4_2.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
14 |
15 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_activity_activitydemo4_3.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_activity_activitydemo6_2.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_animation_animationdemo3.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_animation_animationdemo4.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
10 |
15 |
16 |
20 |
21 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_animation_animationdemo5.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
13 |
14 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_animation_animationdemo6.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
13 |
14 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_animation_matrixdemo2.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_async_handlerdemo3.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
18 |
19 |
25 |
26 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_async_threaddemo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
18 |
19 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_async_threaddemo2.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_async_threaddemo3.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_async_threaddemo4.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_async_threaddemo5.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_async_threadlocaldemo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_async_timerdemo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
17 |
18 |
23 |
24 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_concurrent_atomicdemo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_concurrent_countdownlatchdemo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_concurrent_cyclicbarrierdemo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_concurrent_lockdemo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_concurrent_lockdemo2.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_concurrent_lockdemo3.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_concurrent_readwritelockdemo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_concurrent_reentrantlockdemo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_concurrent_reentrantreadwritelockdemo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_concurrent_semaphoredemo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_concurrent_synchronizeddemo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_concurrent_synchronizeddemo2.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_concurrent_volatiledemo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_designpattern_singleton.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_fragment_fragmentdemo1_2.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_input_gesturedemo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_input_keydemo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_input_touchdemo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
15 |
16 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_input_touchdemo2.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
12 |
13 |
20 |
21 |
22 |
23 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_input_touchdemo3.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_input_touchdemo5.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
11 |
12 |
15 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_ipc_broadcastdemo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
13 |
14 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_ipc_broadcastdemo2.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
13 |
14 |
18 |
19 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_ipc_broadcastdemo3.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
13 |
14 |
18 |
19 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_ipc_contentproviderdemo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_ipc_sharesourcedemo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_java_bitdemo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_java_callbackdemo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_jetpack_lifecycle_lifecycledemo.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
13 |
14 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_jetpack_lifecycle_livedatademo.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
13 |
14 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_jetpack_lifecycle_livedatademo2.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
13 |
14 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_jetpack_lifecycle_viewmodeldemo.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
13 |
14 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_kotlin_demo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_kotlin_demo10.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
12 |
13 |
19 |
20 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_kotlin_demo11.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_kotlin_demo12.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_kotlin_demo2.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_kotlin_demo3.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_kotlin_demo4.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_kotlin_demo5.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_kotlin_demo6.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_kotlin_demo7.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_kotlin_demo8.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_kotlin_demo9.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_kotlin_helloworld.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
13 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_ndk_ndkdemo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_notification_notificationdemo1click.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_notification_notificationdemo2.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
13 |
14 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_notification_toastdemo1_customtoast.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
12 |
13 |
18 |
19 |
25 |
26 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_optimize_demo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
12 |
13 |
18 |
19 |
24 |
25 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_optimize_demo2.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_optimize_demo3.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_optimize_demo4.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_resource_metadatademo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_service_servicedemo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
12 |
13 |
18 |
19 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_service_workermanagerdemo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
12 |
13 |
18 |
19 |
23 |
24 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_storage_android11demo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
13 |
14 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_tools_generatehtmlindex.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_tools_generatereadme.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_ui_configurationchangedemo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
13 |
14 |
20 |
21 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_ui_densitydemo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
16 |
17 |
21 |
22 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_ui_icondemo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_ui_themedemo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
10 |
16 |
17 |
23 |
24 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_ui_themedemo2.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
19 |
20 |
26 |
27 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_ui_themedemo3.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
10 |
11 |
15 |
16 |
20 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_utils_demo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_utils_demo2.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_utils_demo3.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_view_button_imagebuttondemo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
10 |
11 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_view_collection_expandablelistviewdemo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_view_collection_gridviewdemo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
10 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_view_collection_viewpagerdemo1_page1.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_view_collection_viewpagerdemo1_page2.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_view_collection_viewpagerdemo1_page3.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_view_collection_viewpagerdemo2_page1.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_view_collection_viewpagerdemo2_page2.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_view_collection_viewpagerdemo2_page3.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_view_collection_viewpagerdemo3.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_view_collection_viewpagerdemo4.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_view_custom_customview3demo.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
11 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_view_custom_myloadingdemo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_view_flyout_alertdialogdemo2.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_view_flyout_alertdialogdemo3.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_view_flyout_alertdialogdemo4.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
13 |
14 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_view_flyout_contextmenudemo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
13 |
14 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_view_flyout_contextmenudemo2.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_view_flyout_datepickerdialogdemo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_view_flyout_popupmenudemo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
13 |
14 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_view_flyout_popupmenudemo2.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_view_flyout_popupwindowdemo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_view_flyout_timepickerdialogdemo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_view_layout_includedemo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
12 |
13 |
18 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_view_listview_listviewdemo2.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_view_listview_listviewdemo3.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_view_listview_listviewdemo4.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_view_listview_listviewdemo7.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_view_listview_listviewdemo8.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
10 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_view_listview_listviewdemo9.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_view_media_glidedemo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_view_media_picassodemo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_view_media_screenshotdemo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
13 |
14 |
19 |
20 |
25 |
26 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_view_navigation_tabbardemo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
10 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_view_progress_seekbardemo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
14 |
15 |
19 |
20 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_view_recyclerview_recyclerviewdemo2.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
12 |
13 |
19 |
20 |
24 |
25 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_view_recyclerview_recyclerviewdemo3.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_view_recyclerview_recyclerviewdemo4.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_view_selection_numberpickerdemo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
10 |
11 |
15 |
16 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_view_selection_numberpickerdemo2.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_view_selection_spinnerdemo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_view_selection_spinnerdemo3.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_view_selection_spinnerdemo4.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_view_selection_spinnerdemo5.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_view_selection_togglebuttondemo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
13 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_view_text_edittextdemo3.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
14 |
15 |
16 |
20 |
25 |
26 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_view_viewdemo3.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
12 |
13 |
18 |
19 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_view_webview_webviewdemo2.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
13 |
14 |
20 |
21 |
25 |
26 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_view_webview_webviewdemo3.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_view_webview_webviewdemo4.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_view_webview_webviewdemo5.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
16 |
17 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/fragment_fragment_fragment1_1.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/fragment_fragment_fragment2_1.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/fragment_fragment_fragment2_2.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/fragment_fragment_fragment4_1.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/fragment_view_collection_viewpagerdemo3.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/fragment_view_collection_viewpagerdemo4.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_expand_child.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_expand_group.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_view_collection_gridviewdemo2.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_view_listview_listviewdemo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_view_listview_listviewdemo6_footer.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_view_listview_listviewdemo6_header.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_view_recyclerview_recyclerviewdemo8_loadmore.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
17 |
18 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_view_selection_spinnerdemo3.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_view_text_autocompletetextviewdemo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
13 |
14 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_view_text_multiautocompletetextviewdemo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
13 |
14 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/popupwindow_measure_softinput.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/remoteviews_big_notification_notificationdemo2.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
13 |
14 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/remoteviews_notification_notificationdemo2.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
13 |
14 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/view_view_layout_includedemo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
12 |
13 |
18 |
19 |
24 |
25 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/view_view_layout_inflatedemo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_view_flyout_contextmenudemo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_view_flyout_contextmenudemo2.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_view_flyout_popupmenudemo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | -
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_view_flyout_popupmenudemo2.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_view_navigation_toolbardemo1.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
12 |
15 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_view_navigation_toolbardemo2.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webabcd/AndroidDemo/02031106c66b359162f32f6564c557f708cea593/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher_alpha.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webabcd/AndroidDemo/02031106c66b359162f32f6564c557f708cea593/app/src/main/res/mipmap-xxhdpi/ic_launcher_alpha.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webabcd/AndroidDemo/02031106c66b359162f32f6564c557f708cea593/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/raw/notification.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webabcd/AndroidDemo/02031106c66b359162f32f6564c557f708cea593/app/src/main/res/raw/notification.mp3
--------------------------------------------------------------------------------
/app/src/main/res/raw/text_storage_storagedemo3.txt:
--------------------------------------------------------------------------------
1 | i am from raw
--------------------------------------------------------------------------------
/app/src/main/res/values-en/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | 我是英文资源
3 |
4 |
--------------------------------------------------------------------------------
/app/src/main/res/values-zh/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | 我是中文资源
3 |
4 |
--------------------------------------------------------------------------------
/app/src/main/res/values/arrays.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - 中国
5 | - 美国
6 | - 日本
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 32dp
4 | 32sp
5 | 32px
6 |
--------------------------------------------------------------------------------
/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | Android Demo
3 | hello webabcd
4 | hello wanglei
5 | Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。Android操作系统最初由Andy Rubin开发,主要支持手机。2005年8月由Google收购注资。2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。随后Google以Apache开源许可证的授权方式,发布了Android的源代码。第一部Android智能手机发布于2008年10月。Android逐渐扩展到平板电脑及其他领域上,如电视、数码相机、游戏机、智能手表等。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。 2013年的第四季度,Android平台手机的全球市场份额已经达到78.1%。 [1] 2013年09月24日谷歌开发的操作系统Android在迎来了5岁生日,全世界采用这款系统的设备数量已经达到10亿台。
6 | 操作系统
7 | 我是默认资源
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/network_security_config.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/test/java/com/webabcd/androiddemo/ExampleUnitTest.java:
--------------------------------------------------------------------------------
1 | package com.webabcd.androiddemo;
2 |
3 | import org.junit.Test;
4 |
5 | import static org.junit.Assert.*;
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * @see Testing documentation
11 | */
12 | public class ExampleUnitTest {
13 | @Test
14 | public void addition_isCorrect() {
15 | assertEquals(4, 2 + 2);
16 | }
17 | }
--------------------------------------------------------------------------------
/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 | buildscript {
3 | ext {
4 | kotlin_version = '1.8.0'
5 | }
6 | repositories {
7 | google()
8 | mavenCentral()
9 | }
10 | dependencies {
11 | // 更新 gradle 版本后有的时候会遇到编译报错的问题,可以执行一下 gradlew clean, gradlew assemble 试试
12 | classpath 'com.android.tools.build:gradle:4.2.2'
13 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
14 | }
15 | }
16 |
17 | allprojects {
18 | repositories {
19 | google()
20 | mavenCentral()
21 | }
22 | }
23 |
24 | task clean(type: Delete) {
25 | delete rootProject.buildDir
26 | }
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webabcd/AndroidDemo/02031106c66b359162f32f6564c557f708cea593/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Fri Jun 10 10:51:26 CST 2022
2 | distributionBase=GRADLE_USER_HOME
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.1-bin.zip
4 | distributionPath=wrapper/dists
5 | zipStorePath=wrapper/dists
6 | zipStoreBase=GRADLE_USER_HOME
7 |
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 | rootProject.name = "AndroidDemo"
--------------------------------------------------------------------------------