Android系统自动会为每个程序运行时创建一个Application类的对象且只创建一个,所以Application可以说是单例(singleton)模式的一个类,用来存储系统的一些信息。
创建一个类继承Application并在AndroidManifest.xml文件中的application标签中进行注册(只需要给application标签增加name属性,并添加自己的 Application的名字即可)。
启动Application时,系统会创建一个PID,即进程ID,所有的Activity都会在此进程上运行。那么我们在Application创建的时候初始化全局变量,同一个应用的所有Activity都可以取到这些全局变量的值。
RecyclerView:以线性方式展示数据库内容。
CircleImageView:展示圆形图片的View。
AndroidUtilCode:安卓工具类的集合,例如手机号的合法性验证。
Glide:用来加载网络图片。
Glide-Transformations:配合Glide使用,用来处理图片,例如图片高斯模糊,或者圆形图片,三角形等。
Realm:不依赖SQLite的独立数据库。
RecyclerView:以线性方式展示数据库内容。
CircleImageView:展示圆形图片的View。
AndroidUtilCode:安卓工具类的集合,例如手机号的合法性验证。
Glide:用来加载网络图片。
Glide-Transformations:配合Glide使用,用来处理图片,例如图片高斯模糊,或者圆形图片,三角形等。
Realm:不依赖SQLite的独立数据库。
引入工具类 AndroidUtilCode 运行 App 时异常退出
版本:
// AndroidUtilCode implementation 'com.blankj:utilcode:1.30.5'
异常 log
java.lang.NoClassDefFoundError: Failed resolution of: Landroid/arch/lifecycle/Lifecycle$Event; at com.blankj.utilcode.util.UtilsActivityLifecycleImpl.onActivityCreated(UtilsActivityLifecycleImpl.java:207) Caused by: java.lang.ClassNotFoundException: Didn't find class "android.arch.lifecycle.Lifecycle$Event" on path: DexPathList[[zip file "/system/framework/org.apache.http.legacy.boot.jar", zip file "/data/app/com.fu.mr.momusic-yNWTC3P2orALS_o1lL0yIg==/base.apk"],nativeLibraryDirectories=[/data/app/com.fu.mr.momusic-yNWTC3P2orALS_o1lL0yIg==/lib/arm, /system/lib]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:171)
解决办法: 修改编译版本,目标版本,和对应的依赖版本 compileSdkVersion 28 targetSdkVersion 28 implementation 'com.android.support:appcompat-v7:28.0.0'
colorPrimaryDark 与 statusBarColor 的不同点.
一个类 继承Application的作用.
RecyclerView 展示数据
CircleImageView 展示圆形图片
AndroidUtilCode Android工具类集合
Glide 加载网络图片
Glide-Transactions 配合Glide使用,对图片进行处理
Realm数据库
最后这里需要绑定布局,通过addview()方法来实现,以及布局关联上属性
这里的init方法是InputView的初始化方法,有两个参数,上下文Contex和AttributeSet
可以通过通过AttributeSet方法来获取到数据
项目基本流程
添加intent标志符,清理task栈
安卓默认启动的页面在intent.action.MAIN里面改
android开发___Intent标志符
android开发----Task栈执行流程与intent标志符
在style.xml文件里 <item name="colorPrimaryDark">@color/mainColor</item> <item name="android:statusBarColor">@android:color/black</item>
移动开发--使用的第三方库
statusBarColor:设置app顶部颜色->styles.xml\
RecyclerView:以线性方式展示数据库内容。
CircleImageView:展示原型图片的View。
AndroidUtilCode:安卓工具类的集合,例如手机号的合法性验证。
Glide:用来加载网络图片。
Glide-Transformations:配合Glde使用,用来处理图片,例如图片高斯模糊,或者圆形图片,三角形等。
Realm:不依赖SQLite的独立数据库。
1、立项
2、原型确认
3、设计图确认
4、代码开发
5、测试-修改
6、上线
任务是指执行特定作业时与用户交互的一系列Activity,这些Activity按照各自的打开顺序排列在堆栈(即返回栈)中
App打开时系统会自动创建一个任务就是常说的Task栈,应用中第一个展示出来的Activity会作为Task栈第一个Activity插入到创建的Task栈中, 依次打开多个Activity最新打开的会被置于栈顶部,其它Activity按照顺序排列,若返回上一个Activity, 该Activity重新激活,但是前的Activity会被销毁。task栈 按先进后出原则工作
Intent标识符
启动新的Activity时,可以通过在传递给startActivity的Intent中加入相应的标志,修改Activity与其任务的默认关联方式
Intent.FLAG_ACTIVITY_CLEAR_TASK
清除当前Task栈中的Activity
Intent.FLAG_ACTIVITY_NEW_TASK
新建Task栈
跳转动画异常是因为格式样式windowAnimationStyle与Task栈顺序有关,清空Task栈会影响到原有顺序所以需要在
Intent intent = new Intent(context, LoginActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); ((Activity)context).overridePendingTransition(R.anim.open_enter, R.anim.open_exit);
在跳转时重新设置动画
colorPrimaryDark与statusBarColor异同点
相同点:
①修改statusBar颜色
②Android5.0以上才能支持
不同点:
①statusBarColor具有更高优先级
②statusBarColor在Android5.0以下的版本中会出现警告提示
③默认情况下,statusBarColor的值继承自colorPrimaryDark
values-版本号 代表着支持不同Android版本号的样式文件
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
overridePendingTransition(R.anim.open_enter, R.anim.open_exit);
open_enter.xml
<translate android:fromXDelta="100%" android:toXDelta="0%" android:duration="350" />
open_exit.xml
<translate android:fromXDelta="0%" android:toXDelta="-100%" android:duration="350" />
close_enter.xml
<translate android:fromXDelta="0%" android:toXDelta="100%" android:duration="350" />
close_exit.xml
<translate android:fromXDelta="-100%" android:toXDelta="0%" android:duration="350" />
styles.xml的AppTheme中
<item name="android:windowAnimationStyle">@style/AnimationActivity</item>
添加style
<style name="AnimationActivity" parent="@android:style/Animation.Activity"> <item name="android:activityOpenEnterAnimation">@anim/open_enter</item> <item name="android:activityOpenExitAnimation">@anim/open_exit</item> <item name="android:activityCloseEnterAnimation">@anim/close_exit</item> <item name="android:activityCloseExitAnimation">@anim/close_enter</item> </style>
<--登录按钮--> <style name="comitBtn"> <item name="android:layout_width">match_parent</item> <item name="android:layout_height">@dimen/btnHeight</item> <item name="android:textColor">@android:color/white</item> <item name="android:textSize">@dimen/titleSize</item> <item name="android:layout_marginLeft">@dimen/marginSize</item> <item name="android:layout_marginRight">@dimen/marginSize</item> <item name="android:gravity">center</item> <item name="android:background">@drawable/btn_commit_select</item> </style>
<--style分割线--> <style name="line"> <item name="android:layout_height">1dp</item> <item name="android:layout_width">match_parent</item> <item name="android:background">@color/lineColor</item> <item name="android:layout_margin">@dimen/marginSize</item> </style>
<View style="@style/line" />
RecyclerView,CircleImageView,AndroidUtilCode,Glide,Glide-Transformations,Realm
解决清理task后过渡动画的问题
对context进行强制类型转换
overridePendingTransition必须放在startActivity后面