博客出自:http://blog.csdn.net/liuxian13183,转载注明出处! All Rights Reserved !
1、用Eclipse插件将文件批量编码如GBK-UTF-8
用Eclipse插件将文件批量编码互转
step1.将插件com.lifesting.tool.encoding_1.0.0.jar拷贝到eclipse/plugins目录下,重启Eclipse。
step2. 选择某个项目,右键选择properties,然后点击Convert Setting进行转码规则设置,如下图:
(图1 项目转码规则设置)
这个表格有四列,分别是文件后缀、文件目前编码、转换后的编码、是否转换文件内容,如果转换文件内容,那么对应的是前面所说的第二种情况,不转换文件内容对应的是第一种情况。比如图1的转码规则就是对项目的jsp文件,不管原来是什么编码,统一转为UTF-8编码,并且同时转换文件内容。可以点击右边的Add /Remove按钮来增加/删除规则。最后点击Apply来保存设置。
step3. 转码
在设置了转码规则的项目上,右键选择项目,某几个文件夹或某几个文件(当然一个也可以),然后点击Lifesting Tools->Set Encoding。插件将完成转码工作。如果我们选择的是项目,将转换整个项目;如果选择的是文件夹,转换文件夹下所有满足规则的文件;如果选择的是文件,只转换文件。如下图2
(图2 转码)
除了这方式外,我们还可以利用Eclipse的文件搜索功能,将搜到的文件进行转码,如下图3:
(图3 在searchview里转码)
如上图所示,我们搜到了整个workspace的jsp文件,然后点击绿色E小图标,插件将会把所有满足结果的文件转码,每个文件的转换规则依赖它所属项目的转码规则设置。
JAR包下载 链接:http://download.csdn.net/detail/liuxian13183/7585301
注:如果批量转码的话,可能需要点时间,部分转码尚存在问题。。。。。。。
2、Android Apk反编译工具 链接:http://download.csdn.net/detail/liuxian13183/6580429
3、如何在项目中看源码
右击项目-Properties-Resource-Linked Resources-Path Variables-New-出现下图
Name随便,Location填入你所下载SDK的source文件夹。注意一定要先下好源码,才能链接上!怎么下载,看第6点
4、
像素密度在120左右的屏幕归为ldpi,160左右的归为mdpi,以此类推。这样,所有的Android屏幕都找到了自己的位置,并赋予了相应的倍率:
●ldpi [0.75倍]
●mdpi [1倍]
●hdpi [1.5倍]
●xhdpi [2倍]
●xxhdpi [3倍]
●xxxhdpi [4倍]
链接:http://www.imooc.com/wenda/detail/261436
5、注意内存开销
对你所使用的语言与库的成本与开销有所了解,从开始到结束,在设计你的app时谨记这些信息。通常,表面上看起来无关痛痒(innocuous)的事情也许实际上会导致大量的开销。例如:
- Enums的内存消耗通常是static constants的2倍。你应该尽量避免在Android上使用enums。
- 在Java中的每一个类(包括匿名内部类)都会使用大概500 bytes。
- 每一个类的实例花销是12-16 bytes。
- 往HashMap添加一个entry需要额一个额外占用的32 bytes的entry对象。
6、FQ利器
***和VPN,下载地址:http://61.40.206.230:3699/cn/download.aspx
ADT更新FQ:Android SDK Manager->Tools->Option->
7、Json
介绍:http://json.org/
格式化:http://www.bejson.com/
8、依赖项目中出现-case expressions must be constant expressions
那么最好的解决办法是,用if语句而不是swith去解决这个问题
9、关于libs下的so包
armeabi默认选项,
支持基于 ARM* v5TE 的设备
支持软浮点运算(不支持硬件辅助的浮点计算)
支持所有 ARM* 设备
armeabi-v7a
支持基于 ARM* v7 的设备
支持硬件 FPU 指令
支持硬件浮点运算
不同手机由于cpu的不同,使用不同的驱动。
ABI:指应用基于哪种指令集来进行编译,ABI常用的总共有四种,分别是armeabi、armeabi-v7a、mips、x86,它们都是表示cpu的类型。
其次这4个编译选项的含义:
1.‘armeabi’ – 默认选项,将创建以基于 ARM* v5TE 的设备为目标的库。 具有这种目标的浮点运算使用软件浮点运算。 使用此 ABI 创建的二进制代码将可以在所有 ARM* 设备上运行。
2.‘armeabi-v7a’ – 创建支持基于 ARM* v7 的设备的库,并将使用硬件 FPU 指令。
3.‘x86’ – 生成的二进制代码可支持包含基于硬件的浮点运算的 IA-32 指令集.
4.mips — 支持应用二进制接口
APP_ABI目前能取得值包括:(1)、32位:armeabi、armeabi-v7a、x86、mips;(2)、64位:arm64-v8a,x86_64, mips64;
10、startActivityForResult的requestCode不能超过16位即65536,否则crash而且很难看出来。
11、百度定位出现经纬度一样,且为科学计数法值,因为so包缺失。
12、
try {
PackageManager packageManager=mContext.getPackageManager();
Drawable drawable=packageManager.getResourcesForApplication("com.tencent.qq").
getDrawable(0x7f020110);
mOnlineTv.setBackground(drawable);
}catch (Exception e){
showToast(e.getMessage());
}
上面可以获取其他应用的图片,只要知道id
13、
Intent intent = new Intent(Intent.ACTION_MAIN);
ComponentName cn = new ComponentName("com.tencent.qq", "com.tencent.qq.activity.LoginActivity");
intent.setComponent(cn);
startActivity(intent);
14、
为什么要关闭组件?
在用到组件时,有时候我们可能暂时性的不使用组件,但又不想把组件kill掉,比如创建了一个broadcastReceiver广播监听器,用来想监听第一次开机启动后获得系统的许多相关信息,并保存在文件中,这样以后每次开机启动就不需要再去启动该服务了,也就是说如果没有把receiver关闭掉,就算是不做数据处理,但程序却还一直在后台运行会消耗电量和内存,这时候就需要把这个receiver给关闭掉。
如何关闭组件?
关闭组件其实并不难,只要创建packageManager对象和ComponentName对象,并调用packageManager对象的setComponentEnabledSetting方法。
public void setComponentEnabledSetting (ComponentName componentName, int newState, int flags)
componentName:组件名称newState:组件新的状态,可以设置三个值,分别是如下:
不可用状态:COMPONENT_ENABLED_STATE_DISABLED
可用状态:COMPONENT_ENABLED_STATE_ENABLED
默认状态:COMPONENT_ENABLED_STATE_DEFAULT
flags:行为标签,值可以是DONT_KILL_APP或者0。 0说明杀死包含该组件的app
public int getComponentEnabledSetting(ComponentName componentName)
获取组件的状态
实例:
实例一:禁止开机启动的Receiver(可以是第三方的receiver)
final ComponentName receiver = new ComponentName(context,需要禁止的receiver);
final PackageManager pm = context.getPackageManager();
pm.setComponentEnabledSetting(receiver,PackageManager.COMPONENT_ENABLED_STATE_DISABLED,PackageManager.DONT_KILL_APP); }
实例二:隐藏应用图标
如果设置一个app的mainActivity为COMPONENT_ENABLED_STATE_DISABLED状态
则不会再launcher的程序图标中发现该app
PackageManager packageManager = getPackageManager();
ComponentName componentName = new ComponentName(this, StartActivity.class);
int res = packageManager.getComponentEnabledSetting(componentName);
if (res == PackageManager.COMPONENT_ENABLED_STATE_DEFAULT
|| res == PackageManager.COMPONENT_ENABLED_STATE_ENABLED) {
// 隐藏应用图标
packageManager.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);
} else {
// 显示应用图标
packageManager.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_DEFAULT,
PackageManager.DONT_KILL_APP);
}
上面代码可以打开其他app应用,只要你知道对方的路径
PS:技巧会慢慢补充,如果你想知道什么 ,请给我留言!