安卓 精品收藏

Android项目实战总结

2016-10-14  本文已影响176人  小张呵呵

app是一项工程,需要事无巨细的精益求精,把每个细节优化到极致就是完美!

一.开源框架及其他

1.retrofit

简介:A type-safe REST client for Android and Java

2.rxjava

简介:异步链式调用,多个语言支持
案例(RxJava2):https://github.com/amitshekhariitbhu/RxJava2-Android-Samples

3.glidle

简介:谷歌推荐的图片加载

4.realm

简介:通吃ios,android平台。
官网一些咨讯(有大神哟):https://realm.io/cn/news/

5.databinding

简介:谷歌的mvvm的实现
优点:官方推荐,秒杀ButterKnife
教程:慕课网大帅-MarkZhai

6.自定义view
7.webview
8.RecyclerView
9 .fresco

优点:FaceBook大量使用
中文翻译:https://www.fresco-cn.org/

10.JPush
BasicPushNotificationBuilder builder = new BasicPushNotificationBuilder(this);
boolean isAboveLollipop = Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP;
//修改状态栏的图标,很关键
builder.statusBarDrawable = isAboveLollipop ? R.mipmap.logo_jpush_white : R.mipmap.logo_jpush_normal;
//设置为自动消失和呼吸灯闪烁
builder.notificationFlags = Notification.FLAG_AUTO_CANCEL;
// 设置为铃声、震动、呼吸灯闪烁都要
builder.notificationDefaults = Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE;
//这样做只会修改状态栏的图标,不会修改notification的
smallIconJPushInterface.setDefaultPushNotificationBuilder(builder);

11.微信分享
public static byte[] WeChatBitmapToByteArray(Bitmap bmp, boolean needRecycle) {

        // 首先进行一次大范围的压缩
        ByteArrayOutputStream output = new ByteArrayOutputStream();
        bmp.compress(Bitmap.CompressFormat.JPEG, 100, output);
        float zoom = (float)Math.sqrt(32 * 1024 / (float)output.toByteArray().length); //获取缩放比例

        // 设置矩阵数据
        Matrix matrix = new Matrix();
        matrix.setScale(zoom, zoom);

        // 根据矩阵数据进行新bitmap的创建
        Bitmap resultBitmap = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(), matrix, true);

        output.reset();

        resultBitmap.compress(Bitmap.CompressFormat.JPEG, 100, output);

        // 如果进行了上面的压缩后,依旧大于32K,就进行小范围的微调压缩
        while(output.toByteArray().length > 32 * 1024){
            matrix.setScale(0.9f, 0.9f);//每次缩小 1/10

            resultBitmap = Bitmap.createBitmap(
                    resultBitmap, 0, 0,
                    resultBitmap.getWidth(), resultBitmap.getHeight(), matrix,true);

            output.reset();
            resultBitmap.compress(Bitmap.CompressFormat.JPEG, 100, output);
        }

        return output.toByteArray();
    }
12.状态栏的颜色
13.EditText
14.消息通知机制
15.二维码
16.优化App

二.打包Apk

三.测试Apk

四.上传市场

上一篇 下一篇

猜你喜欢

热点阅读