android框架

关于2019的一些面试实战小结

天大地大妈咪最大 提交于 2019-11-26 01:51:19
今日头条屏幕适配的原理? 1:首先计算出 density,计算公式:当前设备屏幕总宽度(单位为像素)/ 设计图总宽度(单位为 dp) = densitydensity 的意思就是 1 dp 占当前设备多少像素计算density 的原因:在布局文件中填写的是什么单位,最后都会被转化为 px,系统就是通过上面的方法,将你在项目中任何地方填写的单位都转换为 px 但是,今日头条适配方案默认项目中只能以高或宽中的一个作为基准,来进行适配 简述Android中的加固和使用平台? 加固:防止代码反编译,提高代码安全性 加固三方平台,梆梆安全,360加固,爱加密等 区别:梆梆安全,360加固看不到项目中的类,爱加密看的到Java类,单看不到里面的方法实现体,效果比前面差一点点 加固的底层原理:第三方加固的应用会生成一个Apk,然后把你的APK读取出来,在封装到这个第三方应用的APK里面. 如何对APK瘦身? 1)使用混淆, 2)开启shrinkResourse(shrink-收缩),会将没有用到的图片变成一个像素点 3)删除无用的语言资源(删除国际化文件) 4)对于非透明的大图,使用JPG(没有透明度信息),代替PNG格式 5)使用tinypng进行图片压缩 6)使用webp图片格式,进一步压缩图片资源 7)使用第三方包时把用到的代码加到项目中来,避免引用整一个第三方库

MVVM 架构与数据绑定库

血红的双手。 提交于 2019-11-26 00:10:36
Model-View-Presenter(MVP),即模型-视图-表示层,架构被广泛应用于 Android 应用程序,通过引入表示层将视图与表示逻辑和模型分离。Model-View-ViewModel(MVVM),即模型-视图-视图模型,与 MVP 非常相似,视图模型充当增强的表示层,使用数据绑定器保持视图模型和视图同步。通过将视图绑定到视图模型属性上,数据绑定程序可以处理视图更新而无需手动更改数据来设置视图(例如,不用再设置控件 TextView 的setTest() 或者 setVisibility() 属性)。与 MVP 中的表示层一样,视图模型可以很容易地进行单元测试。本文介绍了数据绑定库和 MVVM 架构模式,以及它们在 Android 上协同工作方式。 数据绑定 什么是数据绑定? 数据绑定是一种把数据绑定到用户界面元素(控件)的通用机制。通常,数据绑定会将数据从本地存储或者网络绑定到显示层,其特征是数据的改变会自动在数据源和用户界面之间同步。 数据绑定库的好处 TextView textView = (TextView) findViewById(R.id.label); EditText editText = (EditText) findViewById(R.id.userinput); ProgressBar progressBar = (ProgressBar)

Android自动化补记-浅谈Android Espresso自动化测试框架

纵饮孤独 提交于 2019-11-25 19:46:38
早在去年的时候,经过一阶段针对“浓缩咖啡”Espresso框架的仔细品尝,浅品深品,不得不说,毕竟是谷歌力推的测试框架,就连AndroidStudio默认创建工程后都自带编译的包,果然不出意外的这个框架十分的强大,强大到什么程度,比如只在UI线程静止的时候再进行操作,自动异步更新测试监听以及UI线程,意味着只要定位准,手机不卡等一些因素不需要担心超时等页面刷新不同步等问题,不过也是有缺点的,就是学习成本比较高,特别是针对不同自定义控件以及情况的适配,网上有的文档资源特别少;当然,整体来说依旧是白盒自动化测试的首选,最好结合一下UiAutoMation使用,效果不错; 起初这个框架最让我眼前一亮的是这个框架在编写自动化代码的方式,通过直接引用静态方法来直接调用测试Api,同时同时同时(来个三遍),做到了定位+操作+检验,三个测试操作,一行代码搞定的精妙语法,哇,很强,我怎么就想不到封装成这个样儿; 后来逐步的使用,才发现这个水有点儿深,适配控件自动化着实有点儿费劲,这里先不做这方面的讨论了,只是浅浅的分享一下; 回到正题,下面简单介绍一下如何使用这个框架来编写测试代码 首先,拿到我们测试的源码,为什么要拿源码来白盒测试而不是黑盒这点会面会详细的说明,然后将项目导入到Android Studio中,首先保证导入的App能正常运行,再进行下一步的写自动化代码; 这里我也没有用什么源码

Android 仿小米的全面屏手势-侧滑返回

落花浮王杯 提交于 2019-11-25 16:52:31
看测试图: 自己写是不存在的,这辈子都是不可能的。实现这个有两种方法; 1.修改系统代码, emmm,网上基本找不到方法,但这种思路是可以的,有大神搞定了,可以分享一波 2.在软件中适配 在逛了一圈github后找到一个比较好用的,其他的也有,但是不是包各种各样的错,就是比较麻烦,地址如下: https://github.com/ParfoisMeng/SlideBack 里面有引用说明,很简单,几分钟搞定 这是我的demo代码:使用了注解框架,不要在意 package cn.itcast.slideback; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.widget.Button; import android.widget.TextView; import com.parfoismeng.slidebacklib.SlideBack; import com.parfoismeng.slidebacklib.callback.SlideBackCallBack; import butterknife.BindView; import butterknife.ButterKnife;