您的位置:首页 > 移动开发 > Android开发

安卓零碎知识点

2017-04-19 14:53 190 查看
零碎知识点

创建项目前,window-》performance-》workSpace 将编码改成UTF_8
安卓系统提供了一个SparseArray,它本质是一个map,但是存储的key只能是int类型,它相比普通的map效率更高,所以当我们需要存储int类型的map的时候,可以使用SparseArray
isOrderedBroadcastReceiver()判断是有序广播还是无序广播

BigDecimal是一个提供了精确的计算的类,如果在跟数值计算打交道的时候遇到问题可以考虑这个类
图片的scaleType设置为fitXTY则自动拉伸铺满容器,设置为centerCrop则等比例放大直到最小的边满足后切割。
RatingBar 有一个属性是Android:isIndicator = “true”,如果设置为TRUE则只是一个显示的不能进行点击修改。
安卓系统占用物理内存大小的格式化

Formatter.fromatFileSize(context, size);


强引用,任何时候都不会被;垃圾回收器回收,如果内存不足,宁愿抛出OutOfMemoryError

软引用,只有在内存将满的时候才会被垃圾回收器回收,如果还有可用内存,垃圾回收器不会回收

弱引用,只要垃圾回收器运行,就肯定会被回收,不管还有没有可用内存。

虚引用,虚引用等于没有引用,任何时候都有可能被垃圾回收。

获取图片真实高度大小:图片的drawable对象 drawable.getIntrinsicHeight();

LruCache使用

 

bitmap.compress(arg0, arg1, arg2);压缩图片,第一个参数是压缩后图片的类型png,jpg等,第二个是压缩比例,100的话表示不压缩,第三个参数是输出流

canvas绘制文字起点是文字左下角。paint.setTextAlign( )可以修改绘制文字的起点

两个viewpager嵌套的时候里层的viewpager默认是不能滑动的,因为父类默认会拦截子类控件的透彻事件

所以需要在父类中重写onInterceptTouchEvent()方法,返回false表示不拦截子类的touch事件,或者在子类中 重写dispatchTouchEvent()方法,在方法中加上一句getParent().requestDisallowInterceptTouchEvent(true);这句话的意思是将父类不允许拦截子类touch事件的属性设置为true,(事件的分发机制:dispatchTouchEvent->onInterceptTouchEvent->onTouchEvent)

viewHolder之所以要声明成静态的是因为,非静态的内部类拥有外部类的强引用,是防止内存泄露的一种方式
popupwindow需要设置上背景(view上有的话可以设置透明背景),点击返回才会有响应

baseActivity中一般用context = getApplicationContext()取得上下文环境,不用this的原因是防止内存泄漏
Target SDK,一般设置为目前市场占有率最高的版本,兼容性问题小
compile with:一般选择较高的版本,因为随着安卓的发展,会添加很多新的API,编译版本高可以通过,如果设置的较低的话,则编译无法通过。
如何限制一个方法并发访问的线程数

static Semaphore semaphore = new Semaphore(6);


然后在一个线程开始的时候调用

semaphore.acquire();


在线程结束的时候调用

semaphore.release();


版本号1.0.0:最后一位表示修复上一版本的bug,第二位表示更新了部分功能,第一位表示项目重大更新(代码重构,界面整体修改,很多功能添加)
文字阴影效果:shadowX=“1”  设置颜色 shadowColor=“#FF0000” 最后要设置shadowradius="1"控制阴影范围
手机模拟器访问10.0.2.2就是模拟器所在电脑的ip地址。是安卓工程师故意留给我们的固定ip地址
直接使用系统自带的theme去掉页面的title的话会导致其他UI很丑,所以我们一般不用系统自带的theme而是在默认的theme中添加<item name="android:windowNoTitle">true</item>
activity的切换动画(100%p:就是整个屏幕宽度)

跑马灯效果

gridview的布局文件

 开发过程中可以在values文件夹下面新建一个color.xml设定所有的颜色值。

下载完成后自动安装APP

protected void installApk(File file) {

//系统应用界面,源码,安装apk入口

Intent intent = new Intent("android.intent.action.VIEW");

intent.addCategory("android.intent.category.DEFAULT");

/*//文件作为数据源

intent.setData(Uri.fromFile(file));

//设置安装的类型

intent.setType("application/vnd.android.package-archive");*/

intent.setDataAndType(Uri.fromFile(file),"application/vnd.android.package-archive");

startActivity(intent);



获取APP版本名称

PackageManager packageManager = getPackageManager();

try {

//0代表基本信息

PackageInfo packageInfo = packageManager.getPackageInfo(this.getPackageName(), 0);

String versionName = packageInfo.versionName;

         String versionCode = packageInfo.versionCode;  

}

catch (NameNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息