05
2017
10

android开发笔记汇总(一)

1、long类型转换为int类型:
一、强制类型转换

long ll = 300000;

int ii = (int)ll;

二、调用intValue()方法

long ll = 300000;

int ii= new Long(ll).intValue();

三、先把long转换成字符串String,然后在转行成Integer

long ll = 300000;

int ii = Integer.parseInt(String.valueOf(ll));

推荐第二种。

2、EditText文字显示不下水平滚动方式
在XML定义中设置如下,应该就可以了。
  android:scrollHorizontally=”true”
  android:singleLine=”false”
  结果无论如何,都无法成功。搜遍网络才知道,这是Android的一个Bug!而且直到版本4.1以上还没有修复!
  解决方案:
  在JAVA代码中设置一次即可!
  .setHorizontallyScrolling(true);
3、动态申请权限的坑
ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)
== PackageManager.PERMISSION_GRANTED)
我这边出现的问题是,断点调试一直默认是授权的,但是我确实禁用了这个权限的,后面发现是由于设置了targetsdkversion为22,导致了默认所有权限都是开启的,无法动态获取。看了一篇博客,明白了,这也是不用适配6.0以上机型的一种方式。
这里写图片描述
问题关键这里写图片描述

所以最好还是使用23以上的api,毕竟是新版本,还是要支持一下,动态获取权限的方式已经很成熟,而且用户体验也更好一些。

4、图片质量压缩的问题。今天使用bitmap.compress的压缩方法传递给后台不至于太大,打断点调试怎么都压缩不了,后面索性只能压缩图片的宽高。。。很郁闷 啊,最后发现是掉到了一个深坑,用了format是png….两者对比如下
二者对比:
1、png有透明通道,而jpg没有
2、png是无损压缩的,而jpg是有损压缩,因此png中存储的信息会很多,体积自然就大了
3、手机对png情有独钟,会对其进行硬件加速,所以同样一张背景图,png虽然体积大,但是加载速度更快

综述:1、对于app包中的图片,我们都使用png格式的,而对于要从网络上加载的图片,考虑到流量以及下载上速度,则使用jpg格式的,因为它有较高的压缩率,体积更小。
2、对于背景图、引导页,这种大尺寸的图片,我们还是倾向于jpg格式的,虽然加载慢一些吗,但是体积小,减少了包的体积
3、Google后来发布了一种新的图片格式,WebP,它的压缩率比jpg更好,已经在慢慢普及

压缩后的图片上传只有30多k,后台返回的缩略图只有5-10k,比较符合标准。
1、等比例缩放宽高

//缩放比例
// 获得图片的宽高
int width = snapshot.getWidth();   
int height = snapshot.getHeight();                     
// 计算缩放比例
float scaleWidth = 0.3f;
float scaleHeight = 0.3f; 
// 取得想要缩放的matrix参数 
Matrix matrix = new Matrix();                       matrix.postScale(scaleWidth, scaleHeight);                     // 得到新的图片
snapshot = Bitmap.createBitmap(snapshot, 0, 0, width, height, matrix, true);
 FileOutputStream out;
 if (snapshot.compress(Bitmap.CompressFormat.JPEG, 10, bos)) {
                bos.flush();
                bos.close();
JLog.e("----------压缩后------------"+snapshot.getByteCount()+"");
                            }
上一篇:RecylerView的使用 下一篇:TextView两端对齐