Android入门学习笔记,主要是activity和intent,以及eclipse常用快捷方式

string.xml作用:软件国际化
AndroidManifest.xml中包名与程序包结构无关
Eclipse常用快捷键:
Ctrl+shift+↓ 向下复制
Ctrl+T 查看父类结构
Ctrl+O 显示大纲
Ctrl+D 删除当前行
Ctrl+1 快速修复
Ctrl+/ 为每行或者选择部分添加注释
Ctrl+F 查找
Ctrl+M窗口最大最小化方便进行代码的书写
Ctrl+T 快速显示当前类的继承结构
Ctrl+Shift+R快速查找资源免得左边找
Ctrl+Q快速定位到最后一个编辑的地方
F4查看类结构
Ctrl+F11 运行
Ctrl+Shift+L显示所有的快捷键
F11 调试最后一次运行的程序
Ctrl+Shift+F最常用格式化某段代码不选择某段代码则格式化化整个Java 文件
Ctrl+Shift+S 保存所有
Ctrl+H全局搜索
Alt+↓当前行和下一行相互交换位置
Alt+Enter显示当前资源(工程或者文件)的属性
Ctrl+W关闭当前编辑器
Ctrl+E快速显示文件下拉列表
Ctrl+J 查找当前选中的文本块
Ctrl+Shift+J 反向查找当前选中的文本块从后往前找
Ctrl+Shift+P 定位到对于的匹配符(譬如{}) (从前面定位后面时光标要在匹配符里面,后面到前面,则反之)
Alt+Shift+R重命名(是我自己最爱用的一个了,尤其是变量和类Rename,比手工方法能节省很多劳动力)
Alt+Shift+M 抽取方法(这是重构里面最常用的方法之一了,尤其是对 一大堆泥团代码有用)
Alt+Shift+C 修改函数结构 (比较实用,有N个函数调用了这个方法,修改一次搞定)
Alt+Shift+L 抽取本地变量(可以直接把一些魔法数字和字符串抽取成一个变量,尤其是多处调用的时候)
Alt+Shift+F 把Class中的local变量变为field变量
Alt+Shift+I 合并变量(可能这样说有点不妥Inline)
Alt+Shift+Z 重构的后悔药

显式intent:
一、Intent intent=new Intent();
intent.setClass(this,Activity01.class);
startActivity(intent);
二、Intent intent=new Intent();
intent.setClassName(this,”com.xxx.xxx.xxx.xxx”) //类包名
startActivity(intent);
三、Intent intent=new Intent();
intent.setClassName(”com.xxx.xxx”,”com.xxx.xxx.xxx.xxx”) //程序包名,类包名
startActivity(intent); //可以打开其他应用activity,需要被调activity设置export属性为”true”,调用被调程序主界面不需要设置属性
四、Intent intent=new Intent();
intent.setComponent(new ComponentName(this,Activity01.class));
startActivity(intent);
隐式intent:
AndroidManifest.xml 中activity节点加入intent-filter(白名单)节点
Intent intent=new Intent();
intent.setAction(“com.xxx.xxx”); //被调activity的 intent-filter的name
intent.addCategory(Intent.Category_default);
intent.addData(Uri.parse(“tel:”));
startActivity(intent);
Intent Filter(意图过滤器):
若不声明,之能用显式intent
可以配置action、data、catagory属性
同一属性可以配置多份
一个activity可以配置多个intent-filter
Category 与任意一个category完全匹配均可调用
隐式intent至少匹配一个action和category
Type会覆盖data 所以可使用setTypeAndData()方法
Activity生命周期:
Private String tag=MainActivity.class.getSimpleName();
Log.d(tag,”onCreate”);
一、onRestart(); //再次可见
二、onStart(); //可见
三、onPause(); //暂停
四、onStop(); //停止
五、onDestroy(); //销毁
六、onCreate(); //创建
七、onResume(); //可交互
暂停状态:
Activity被透明activity覆盖,可见但不可操作
停止状态:
不可见,但是保留成员数据
断开状态:
finish(); 关闭activity
暂停和停止状态的activity可以被系统清除
Activity横竖屏切换生命周期:
通常横竖屏切换时或键盘出现或隐藏时,销毁原activity,创建新activity
解决方法:
Activity节点中配置configChanges属性keyboardHidden|orientation|screenSize
则会执行通过onConfigurationChanged()方法实现
禁止横竖屏切换:
Activity节点中配置ScreenOrientation的portrait(竖)属性或 landscape(横)
onConfigurationChanged()方法可得到当前activity是横还是竖:
重写onConfigurationChanged()方法,可以获得屏幕width和height,比较它们大小即可
Anr异常:
在主线程(UI线程)进行耗时操作时(大于6秒),界面无法响应输入事件时,就会发生anr异常
Thread.sleep(6000);//主线程休眠6秒
解决办法:
耗时操作写在子线程里

activity间的数据传递方式:
一、通用方式(通过intent):
传递数据:
原activity:
Intent intent=new Intent();
intent.setClass(this,Activity01.class);
intent.putExtra=(“data”,”Hello World!”);
startActivity(intent);
接收数据activity:
Bundle bundle=getIntent().getExtras();
bundle.getString(“data”);
String data=bundle.getString(“data”);
传递对象:
对象必须实现serializable或parcelable
二、静态变量方式传递:
使用变量后切记手动销毁
三、全局变量传递:
Android的入口:application类的oncreate方法
被传递类继承于application(全局类)
Activity 1:
Intent intent=new Intent(MainActivity.this,OtherActivity.class);
MyApplication app=(MyApplication)getApplication();
app.setName(“Hello!”);
startActivity(intent);
Activity 2:
Oncreate中加入MyApplication app=(MyApplication)getApplication();
若在自定义类件传递,则被传类中加入:
private static MyApplication instance;
public static MyApplication getInstance(){
Return instance;}
oncreate中加入this.instance=this;
可以用HashMap
Application节点加入name属性指定被传类
传递之后手动destroy掉
四、剪切板传递

activity返回数据:
获取返回值activity使用statActivityForResult(intent,0);方法 //0为请求码
Bundle bundle=data.getExtras();
String s=bundle.getString(“phoneNumber”)
被返回值activity使用:
putExtra(“phoneNumber”,value)
setResult(0,intent);//0为结果码
Finish();//结束activity
请求码作用:标识请求源
结果码作用:标识结果源
Activity启动模式(Activity的Launchmode属性):
一、默认模式(standard):每次激活都重新创建新的实例
二、SingleTop:若被创建的activity在栈顶则不重复创建,而调用onNewIntent()方法
三、SingleTask:同一个activity只能存在一个,若被创建的activity在栈内,则会销毁该activity其上的所有activity,并调用onNewIntent()方法。若从其它应用启动activity,创建新栈
四、SingleInstance:只能有一个activity实例,独立存储在一个栈中,使用的onNewIntent()方法。GetTaskId()获取栈ID
保存和恢复activity状态:
需要保存状态的控件设置ID
与方法saveInstanceState()有关
可以覆盖saveInstanceState()方法,加入outState.putSting(“str”,str);调取时覆盖onRestoreInstanceState()方法,if(savedInstanceState==null) return; String str=savedInstanceState.getString(“str”);

Android 视图
可视化控件都是view的子类
单位:控件大小用dp,字体大小用sp
尺寸一般用dimens.xml
Layout Weight:权重(调整控件比例)
调整控件位置:margin xxx 在框架布局异常,需调试
Visibility:隐藏控件
TextView控件:
Autolink属性all:存在URL,邮箱等自动创建链接
tv1.setText(Html.formHtml(html标签表示文本));
tv1.setMovenmentMethod(LinkMovenmethod.getInstance());
通过html可以实现图文混排
Html.formHtml存在图片,使用ImageGetter()获取,需要指定边界
SpannableString:设置文本格式
EditText校验输入:
digits属性:限制输入特定内容
inputType:限制输入类型
autoCompleteTextView:
String[] arr={ };
ArrayAdapter adapter=new ArrayAdapter(this,R.layout.ui_textView,arr);
Auto_textView.setAdapter(adapter);
Button:
点击监听
焦点监听
触摸监听//返回true事件被消耗
drawableTop属性:图文混排
drawablePadding:图文间距
Spannable String :实现图文混排
Margin:外边框
Padding:内边框

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值