Android Log
查看设备adb devices
指定设备adb -s emulator-5556 install helloWorld.apk
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
android 源码
http://grepcode.com/project/repository.grepcode.com/java/ext/com.google.android/android/
android:layout_gravity 表示控件本身的布局
android:gravity 表示内部的布局
Action Data: 对谁(具体的)做了什么
Action Type: 对什么(一类的)做了什么
Category:什么时候做
launchmode4种模式:
1,standard:
如果从A跳到A,intent5次,task里5个activity;
2,single Top:
如果从A 跳B,再从B跳A,如果此时栈顶为A,则不创建新实例,直接把Intent给A,但如果栈顶不是A,则还要创建A的实例
3,singleTask
如果从A跳B,再从B跳A,无论是否栈顶栈底,只要A在,则将Intent给A,不会创建A的新实例;
4,singleInstance
不同于前3种模式,前3种只是在同一个task的,而实例化的策略不同。这种模式下的activity会单独存在一个task下。
现成的例子是google地图。比如我有一个应用是导游方面的,其中调用的google地图Activity。那么现在我比如按home(后台activity onstop,back是finish)键,然后到应用列表中打开google地图,你会发现显示的就是刚才的地图,实际上是同一个Activity。
如果使用上面三种模式,是无法实现这个需求的。google地图应用中有多个上下文Activity,比如路线查询等的,导游应用也有一些上下文Activity。在各自应用中回退要回退到各自的上下文Activity中。
总结:
1 2:会创建新实例
3 4:不会创建新实例
123:activity的taskid相同
4:activity的taskid不同。被分到单独一个task中
<!--?xml version="1.0" encoding="UTF-8" standalone="no"?--> Market 相关
1. //寻找某个应用
2. Uri uri = Uri.parse("market://search?q=pname:pkg_name");
3. Intent it = new Intent(Intent.ACTION_VIEW, uri);
4. startActivity(it);
5. //where pkg_name is the full package path for an application
1. //显示某个应用的相关信息
2. Uri uri = Uri.parse("market://details?id=app_id");
3. Intent it = new Intent(Intent.ACTION_VIEW, uri);
4. startActivity(it);
5. //where app_id is the application ID, find the ID
6. //by clicking on your application on Market home
7. //page, and notice the ID from the address bar
Android颜色
Android获取View坐标的几种方法:
int[] location = newint[2] ;
view.getLocationInWindow(location); //获取在当前窗口内的绝对坐标,getLeft, getTop, getBottom, getRight, 这一组是获取相对在它父窗口里的坐标。
view.getLocationOnScreen(location);//获取在整个屏幕内的绝对坐标,注意这个值是要从屏幕顶端算起,也就是包括了通知栏的高度。
location [0]--->x坐标,location [1]--->y坐标
管理你的线程
android.graphics包中的一些类的使用
经典项目
1.List转换成为数组。
List list = new ArrayList();
list.add("1");
list.add("2");
final int size = list.size();
String[] arr = (String[])list.toArray(new String[size]);
2.数组转换成为List。
String[] arr = new String[] {"1", "2"};
List list = Arrays.asList(arr);
Java:对象的强、软、弱和虚引用
android用于打开各种文件的intent
委托
如楼主所说,有些地方可以直接调用对象的方法,而不用委托。
但有些时候这样做不合适。
比如,在写这个类的时候,根本就不能确定要调用哪个对象的方法:例如,你把自己的一个对象上的方法挂在微软的textbox 的一个事件上。微软在写textbox时根本就不可能知道这个事件发生时,需要调用哪个对象的哪个方法,只有你自己去指定说需要调什么方法,并且以委托的方式挂在相应的事件上。
微软在写textbox的事件时,唯一能确定的是这个事件的格式,或者说这个事件需要调用的方法的格式,
类似于 button1_click(object sender, EnentArgs e) 等等。 只要是按照这个类型写的方法,都能被挂在这个事件上,并且在事件发生时,方法会被调用。
而规定了事件方法格式,就确保了事件发生时被调用的方法都是合法的,不会出现方法类型不匹配等等。这就是所谓的委托是类型安全的。而c++下面用void* 的函数指针实现事件处理缺少对函数格式的检查。 所以C# 发明了委托这个怪东西,为的就是然被调用的函数格式正确。
这只是基于消息驱动的实现方式之一。
另一个普遍的方式,是使用接口。这是java的事件处理方式。 它以接口的形式规定了被调用方法的格式。这种方式更直接,更简单,更容易理解。
两种方式各有利弊,有各自的使用场景,但从效果上看是等效的。
4.Drawable和Bitmap的区别
对比项 | Bitmap | Drawable |
显示清晰度 | 相同 | 相同 |
占用内存 | 大 | 小 |
支持缩放 | 是 | 是 |
支持色相色差调整 | 是 | 否 |
支持旋转 | 是 | 是 |
支持透明色 | 是 | 是 |
绘制速度 | 慢 | 快 |
支持像素操作 | 是 | 否 |
更多相关文章
- android中常见的二种数据解析方法----XML和Json
- Android SDK Manager无法更新解决方法
- Android 之事件的分发和消费机制
- Android Timer 更好方法
- 删除android ScrollView边界阴影方法
- android度量相对于地球坐标系的加速度
- Android显示网络图片相关实现方法浅谈