Android第三章 Activity
来源:互联网 发布:enako 知乎 编辑:程序博客网 时间:2024/05/18 19:38
Application
每个应用程序在不指定application的时候,系统都会帮助生成一个Application的实例。
一个Application代表的就是当前的应用程序
一般使用Application来做
- 共享数据
- 循环便利退出
- 初始化第三方组件
如果要实现这上面这三点,一般需要实现单例模式,注意点: - 不允许私有构造方法,由系统初始化
- 不允许创建对象,对象由系统创建
- 在onCreate生命周期中,将instance对象和this绑定。
Activity
android的核心对象之一
所有和用户交互(显示,操作)的功能都在这里
1. android:screenOrientation 指定当前Activity显示横竖等2. android:exported 是否允许activity被其它程序调用3. android:launchMode 设置Activity的启动方式standard、singleTop、sin4. gleTask和singleInstance
- Android四大组件之一,
- Activity 95% 显示UI,处理和用户的交互
- Service 2% 处理后台长期任务,没有界面
- BroadcastReceiver 3% 通信,组件交互,
- ContextProvider 0% 获取联系人,短信。
Context 上下文1. context 是 Application 和 activity的父类2. 2.很多方法中,传递的都是上下文,而不是具体的Activity或者Applicati
Activity的生命周期
- 创建 onCreate - onStart - onResume
- 死亡 onPause - onStop - onDestroy
被盖住的情况 - 完全盖住 onPause - onStop 运行 onRestart - onStart - onResume
- 遮住一部分 onPause 运行 onResume
- 被回收了 被杀死,不会再执行任何的方法,在回来的时候,已经不是它了,从新创建另外
一个activity
创建Activity
- 创建类继承于Activity
- 重写onCreate的方法并且设置布局(setContentView)
- 在manifest中application节点下注册activity(name=创建activity)
跳转Activity
- Intent intent = new Intent(this, 要跳转的Activity.class);
- startActivity(intent);
Toast
1. 使用静态方法来创建一个Toast对象,调用show方法来展示到屏幕上,一段时间后会自动消失。2. Toast toast = Toast.makeText(Context context,"msg",时间);Toast.LENGTH_LONG,Toast.LENGTH_SHORT3. toast.show();
LogCat界面
- Log 日志输出工具
2. - Log.e w i d v
- 可以添加过滤器,一般使用Tag和Application Name(包名+类名)来做过滤
- 启动过程
- 用户点击某个应用
- android系统开始查找该应用中的manifest清单文件,并且开始实例化Application
- 开始在整个Application中查找启动页面,去实例化整个启动Activity
- 启动的Activity开始实例化,并且调用各个生命周期方法
1. 如果没有,执行:window-show View - other - android - logcat2.3. 过滤器,一般通过 应用程序包名和Tag来过滤4.5. 文本过滤,可以筛选文本6.7. 过滤等级 v,d,i,w,e分别对应Log类的5个日志输出8. Log.v9. Log.d10. Log.i System.out11. log.w12. Log.e
错误
1. ActivityNotFound 没有在manifest中声明2. 颜色必须是 3 4 6 83. Activity修改掉了MainActivity4. Activity配置的时候路径是你自己的5. TextView可以配置图片 左右上下 DrawableLeft,Right,Top,Bottom
关闭Activity
- finish();//关闭当前的Activity
点击事件是View的方法,任意一个视图都可以被点击
xml中配置的点击事件
1. 在对应的Activity中,去实现这个方法2. public void xxx(xml中设置的方法名)(View v){3. //v代表当前点击的视图4. }
代码中配置点击事件
- 直接设置this,让activity去实现这个接口,重写这个方法
- 直接new OnClickListener(){//重写方法};
Activity常用方法
1. //设置布局2. 设置布局:setContentView(View/layoutId)3. 关闭Activity:finish()4. 从Activity找到组件:findViewById(resId);
监听事件
1. 每个组件 都有 监听事件。2. View有三个监听器3.onClickListener 点击事件4. onLongClickListener 长按事件5. //自定义View去讲6.onTouchListener 触摸监听 (按下,抬起,滑动)
1. view.setOnClickListener(OnClickListener);2.3. interface OnClickListener4. {5. void onClick(View v);6. }
设置字体
1. 在accets中添加字体(不能中文)2. tv.setTypeface(Typeface.createFromAsset(getAssets(), "ttf/fzfdw.ttf"));
Activity栈
Activity带参跳转,带参返回
1. Bundle:专门用来携带数据的一个类,里面可以存放各种基本数据类型和序列化的对象。2. Intent:intent有一个Bundle的成员变量,所有数据实际存放在Bundle3. intent可以put的数据类型有:4. 8种基本数据类型和数组5. String和String数组6. ArrayList<String|Integer>7. 两种序列化对象1. Intent intent = new Intent(Activity.this,xxx.class);2. intent.putXXX(key,value);//将数据保存在intent中3. startActivity(intent);4.5.6. Intent intent = getIntent();7. XXX data = intent.getXXX(key[,defalutValue]);
Activity带参返回
启动和普通不一样,启动方法为
startActivityForResult(intent,请求识别码);
重写Activity的 onActivityResult的方法来接受返回数据
返回数据页面中调用 setResult(RESULT_CODE[,Intent data]);finish();返回数据
ImageView 动态设置图片 setImageResouce(R.drawable.xxx);
代码创建
布局技巧
include
merge
阅读全文