- 博客(69)
- 收藏
- 关注
原创 利用android-serialport-api进行串口读写操作
谷歌开源的项目android-serialport-api让我们更方便的对串口进行读写操作,它的下载地址是https://github.com/cepr/android-serialport-api下载好开源库后,我们打开AndroidStudio,将库导入到项目里首先我们要将android_serialport_api包下面的类包括文件夹本身都原封不动的复制到项目的main/java路径下,跟我们项目本身自己创建的包名同级,切记不要更改任何名字。然后我们找到开源库下面的libs文件夹,
2021-03-25 15:42:27
2613
原创 AndroidStudio 配置NDK
获取NDK方式1.网站上下载NDK安装包地址:https://developer.android.google.cn/ndk/downloads/2.利用AndroidStudio下载按步骤选择NDK包,然后进行下载配置NDK的环境变量桌面 - 我的电脑 右键 - 属性,然后按照下面步骤,添加系统变量这里新创建的系统变量是变量名:NDK-ROOT变量值:即NDK下载安装后的路径点击确定后,在系统变量中找到Path,选择编辑选择新建,然后添加内容 .
2021-03-25 14:56:31
3192
原创 Kotlin中的Lambda
最近在网站上看了看Lambda表达式在Kotlin中的使用,借鉴了大牛一些讲解的内容,这里简单记录了下重点内容,先看下目录1.Lambda介绍Lambda表达式属于函数式编程语言,区别于Java面向对象编程语言。它本质是`匿名函数,因为底层就是匿名函数实现的。2.Lambda的使用2.1Lambda表达式的特点Lambda表达式总是被大括号包裹着,箭头前面是参数(可有可无),参数类型可以省略,箭头后面是函数体。2.2Lambda的语法无参:var noParamM.
2020-09-16 17:38:23
1601
原创 Android样式 - 主题叠加(theme overlay)
参看文章:https://medium.com/androiddevelopers/android-styling-themes-overlay-1ffd57745207Android如何使用主题,如何将主题应用到你的应用程序以及如何构建主题?范围Theme作为一个Context的属性被访问,它可以从任何拥有Context的Object中获得,例如Activity,View或 ViewGroup。这些对象存在于一棵树中,Activity包含ViewGroup,ViewGroup包含View等.
2020-09-12 18:13:24
2039
原创 MaterialDesign相关内容
Material Design指南地址https://material.io/designMaterial Design Components (MDC) - MD组件1.用到的相关网址建议用MDChttps://medium.com/androiddevelopers/we-recommend-material-design-components-81e6d165c2dd MDC库https://github.com/material-components/material-c...
2020-09-11 21:12:42
186
原创 Comparator 和 Comparable 的区别
Comparator 和 Comparable都是集合框架的一部分,都有对象之间进行比较的作用,但是他们也有不同之处,如下代码首先创建一个Person类public class Person{ private String name; //姓名 private int age; //年龄 private int weight; //体重 ...
2019-09-11 17:57:03
152
原创 利用ViewFlipper实现跑马灯效果,OutAnimation不起作用的根源
ViewFlipper可以达到视图的切换功能,因此利用它也能实现跑马灯的效果,但是本人用的时候遇到一个问题就是,进场动画执行结束后不会执行出场动画,再翻看ViewFlipper源码之后有了头绪ViewFlipper重点的源码如下 //ViewFlipper内部的方法,根据mVisible 和 mRunning的状态来决定开始或者停止切换 private void updat...
2019-08-24 16:18:34
697
原创 刷机之后用tcpdump抓包出现的问题
最近由于工作需要将三星T700平板从5.0升级到了6.0,打算用tcpdump抓包的时候,每次输入adb命令都会出现adb server is out of date. killing...* daemon started successfully *解决方案:使用 where adb 命令C:\Windows\adb.exeD:\SoftWare\ProgramS...
2019-08-16 16:11:25
393
原创 2018 Android 框架汇总(转)
///////////////////////////网络请求框架///////////////////////////1.Retrofit一句话介绍:Retrofit是一款类型安全的网络框架,基于HTTP协议,服务于Android和java语言上榜理由:Retrofit以21.8k的stars量雄踞github中android子标题榜首,第一当之无愧。官网地址http://square.g...
2019-04-08 17:33:34
2262
原创 RecycleBin缓存机制
用处:AbsListView的用来缓存重用的View,而缓存是通过RecycleBin来实现的。RecycleBin有两个等级的存储:ActiveViews and ScrapViews。ActiveViews是开始出现在屏幕上的view,这些view会显示当前的内容。在布局将要滑出屏幕的时候,ActiveViews将要变成ScrapViews。ScrapViews存储用过的view,这些旧v...
2019-01-11 00:21:10
688
原创 解决利用Okhttp+Retrofit 发送网络请求得到json是unicode
我们在用Okhttp和Retrofit发送网络请求时,得到的json中汉子是unicode编码,如图此时我们需要在Okhttp初始化的时候设置它的网络编辑器,同时将返回值的编码改成UTF-8.之前设置的OKhttp HttpLoggingInterceptor logging = new HttpLoggingInterceptor(); loggi...
2018-09-07 16:39:07
1761
原创 Fragment的状态保存和恢复
Fragment的状态保存与恢复了解Fragment的状态保存与恢复首先会想到二个问题:1.Fragment什么时候进行状态保存,什么时候进行状态恢复2.保存恢复什么状态,Fragment状态还是View状态。什么时候状态保存?什么时候状态恢复?当Fragment有很大可能被销毁的时候,系统会调用Fragment的 onSaveInstanceState 方法例如:用户按HOM...
2018-09-07 16:38:18
3293
原创 简单介绍Fragment如何依附于Activity
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 大概了解下Fragment如何依赖于FragmentActivity我们一般在FragmentActivity做有关Fragment事务处理的时候都会用到Fr...
2018-09-07 16:37:49
1153
原创 Fragment的状态保存startActivityForResult是哪个类的方法,在什么情况下使用?
Fragment调用startActivityForResult ---> HostCallbacks . onStartActivityFromFragment ---> FragmentActivity . startActivityFromFragment FragmentActivity的startActivityFromFragment方法 public v...
2018-09-07 16:37:03
2300
原创 简析Scroller
起初认识Srcoller还是在ViewPager的源码中,当看到ViewPager源码了解它是如何滑动的时候,发现了Scroller的作用。Scroller是一个辅助类,根据x、y坐标,还有滑动的时间,得到滑动到某个时间的坐标,这样可以使滑动的过程显的更加平滑,而不会出现一段段位移的效果。如何使用,源码中也列出了几句话举例 下面是开始一个滑动的代码private Scroller mS...
2018-09-07 16:36:03
266
原创 浅析Activity状态保存与恢复
接触Activity的时候有一个知识总是感觉用的地方不是特别多,但它也是Activity生命周期的一部分,那就是Activity的状态保存与恢复了,在生命周期中回调的方法是onSaveInstanceState和onRestoreInstanceState。那么什么时候我们需要用到它呢?从字面意义上可判断场景如下:1.关闭Activity(例如按下back键)2.转向后台运行时(例如有电话打来、按...
2018-06-20 18:32:24
758
原创 Activity四种启动模式对比
1.Standard(标准模式-默认)例:我们从StandardActivity跳转到A_Activity,再次跳转到B_Activity,再次跳转到StandardActivity,再次跳转到A_Activity打印的logI/BaseActivity: *****************start*********************I/BaseActivity: onCreateI/Ba...
2018-06-19 18:33:11
2037
1
原创 两个Activity之间跳转时必然会调用的方法
Activity1启动的时候 Activity1(onCreate)--->Activity1(onStart)--->Activity1(onResume)Activity1跳转到Activity2的时候(2完全覆盖了1) Activity1 (onPause)---> Activity1(onStop) Activity2(onCreate)--->Activity2(...
2018-06-04 16:57:04
819
原创 Activity与Fragment之间生命周期的简单比较
Fragment生命周期onAttachonCreateonCreateViewonActivityCreate ______以上相当于Activity的onCreate方法onStart ______相当于Activity的onStart方法onResume ___...
2018-06-04 16:17:36
3134
原创 浅析Activity横竖屏切换时的生命周期
1.AndroidManifest没有设置configChanges属性竖屏启动:onCreate -->onStart-->onResume切换横屏:onPause -->onSaveInstanceState -->onStop -->onDestroy -->onCreate-->onStart -->onRestoreInstanceStat...
2018-06-01 15:48:34
12149
原创 结合getTextBounds方法简析绘制文字时需要注意的地方
我们在自定义View的时候时常会重写onDraw方法,那么在onDraw方法中,绘制文字有时候就用到了paint 的getTextBounds方法来确定文字的位置。而这个方法需要注意两点:1.绘制文字的时候即drawText时源码: /** * Draw the text, with origin at (x,y), using the specified paint. The
2018-01-19 13:25:31
2251
原创 Git命令经验总结
1.git clone + ssh地址 报权限不够在github中设置远程仓库URL为SSH时 即用git@github.com ....如果用git clone 下载远程仓库 报没有权限的时候,如图:那么我们该想想是否更改了HOST,例如这里我之前已经更改了~/.ssh/config 中的HOST如图:
2017-12-15 13:15:43
207
原创 利用Soap2调用webService接口用AS打包后出错小结
项目中用到了xStream将对象封装成xml进行通讯的功能,这里用到了测试一切都正常,将项目用AndroidStudio打包后发现app中总是包连不上网
2017-12-05 17:27:48
853
原创 项目上线之前的注意事项
1.注意查看新版本添加的所有url是否区分正式环境和测试环境,包括接入第三方的SDK和自己项目用到的接口2.上线新版本要修改项目的VersionName和VersionCode3.查看新写的接口是否仍旧用着测试数据
2017-11-21 15:54:04
1861
原创 AndroidStudio通用混淆配置文件
#default#指定压缩级别-optimizationpasses 5-dontusemixedcaseclassnames#不跳过非公共的库的类成员-dontskipnonpubliclibraryclassmembers#混淆时采用的算法-optimizations !code/simplification/arithmetic,!field/*,!cla
2017-09-22 11:07:42
898
原创 使用本地gradle和gradlew相关配置
gradle是Android Studio新引入的Android App编译工具,用来代替以前基于Ant的编译系统。gradle一些命令如 ./gradlew -v ./gradlew clean ./gradlew build,这里注意是./gradlew, ./代表当前目录,gradlew代表 gradle wrapper,意思是gradle的一层包装,大家可以理解为在这个项目本地就
2017-09-12 13:16:24
972
原创 较完整的配置AS项目的build.gradle文件
apply plugin: 'com.android.application'apply plugin: 'com.jakewharton.butterknife'//java8 支持apply plugin: 'me.tatarka.retrolambda'apply plugin: 'android-apt'//定义打包时间函数def packageTime() { r
2017-09-05 14:22:31
1669
原创 AndroidStudio 命令行小结
gradlew build clean --info --> jzl.log 或者 gradlew build clean --info : 查看gradle启动信息adb shell dumpsys actvity : 用来查看Launcher启动MainActivity信息adb shell dumpsys activity activities :用来查看当前栈中的Activity...
2017-08-17 15:02:11
633
原创 AndroidStudio 利用Git 将修改内容移动其他Changeist中
1.项目名称右键选择Git --> CommitDirectory2.选择红色框内的按钮,弹出Move to Another Changelist 弹框,即可修改。
2017-08-17 14:31:23
659
原创 通过Uri获取手机通讯录的某个联系人
private String[] getPhoneContacts(Uri uri) { String[] contact = new String[2]; ContentResolver cr = getContentResolver(); Cursor cursor = cr.query(uri, null, null, null, null);
2017-08-17 11:48:25
1599
1
原创 Andriod 出现SIGILL 异常
我们项目中导入了第三方的library时,有的手机会报SIGILL(ILL_ILLOPC)异常,这时候我们需要警觉是否匹配部分手机的cpu架构。例如导入faceId的类库IDCardLib可见他的lib里是支持arm64-v8a架构的,因此在项目的config.gradle文件的abiFilters中加入'arm64-v8a'这样运行时,就不会出现异常了。
2017-08-17 10:41:56
12825
原创 AndroidStudio通过设置Soft Wrap 实现换行
AndroidStudio设置换行有一个很简单的方法,就是在编写代码区域左侧的显示行数地方右键鼠标,选中Soft-Wrap Current File或者Soft-Wrap All Files即可。最终当代码超过编写区域的宽度时会自动换行。设置:设置后:
2017-08-14 16:37:36
6812
原创 利用PermissionsDispatcher解决运行时权限异常
安卓6.0以后申请部分权限需要在应用程序中提醒用户去开通,这些需要运行时申请的权限都是影响到用户信息安全的,6.0之前只要在AndroidManifest注册即可,6.0以后必须先申请,因此增加了安全性,但是给开发人员带来了麻烦。因此从网上找到了一个第三方库PermissionsDispatcher很容易处理运行时的异常。PermissionsDispatchergithub地址:htt...
2017-08-14 11:32:35
2821
原创 点击view两次才触发onclick事件总结
当一个界面中出现两个可以点击的View时,出现两种异常情况:1.连续点击同一个View两次才触发onClick事件。2.点击一个View没有反应,再点击另一个View也没反应,当连续点击同一个View两次才能触发onClick。这是因为在布局xml中设置了View的focusableInTouchMode属性为true,将该属性设置为false点击就正常了。
2017-08-11 17:44:05
6534
原创 简单实现Android倒计时功能
这里列举了一个简单实现倒计时的例子Timer+Handler。首先创建一个Timer对象,并设立一个倒计时开始时间recLen Timer timer = new Timer(); private int recLen = 120;一个Timer是可以开启很多任务的,每个任务都用一个TimerTask表示。因此需要创建一个自定义的TimerTask用来实现自己
2017-08-04 16:15:07
1577
原创 AndroiStudio Error:Execution failed for task ':app:process_360DebugManifest 报错
当我们项目需要加入一个或多个Module作为library时,会报如下异常:Error:Execution failed for task ':app:process_360DebugManifest'.> Manifest merger failed with multiple errors, see logs这说明在合并所有的Manfest文件时冲突了,几率最大的两个原因是1.b
2017-08-03 12:17:37
12999
3
原创 Js 调用 android 本地方法 并传入参数
项目中为了更加灵活,且多变的布局,往往会在Activity中加入h5页面,h5页面离不开android WebView控件,有WebView难免也会与Js进行交互,下面简单介绍与js交互经常出现的问题。首先初始化一个WebView: webView.setVerticalScrollbarOverlay(true); //是否开启本地DOM存储
2017-07-31 14:15:18
2903
原创 制作无白色栏、无白色背景框的加载等待dialog
当我们项目需要一个自定义的dialog来表示加载等待的效果,我们可以如下定义:设置无白色边框无白色背景的style @null true false true @android:color/black @color/transparent true
2017-07-20 09:46:43
301
原创 AndriodStudio 中使用.9图片报错
最近项目中用到了.9图片,于是自己制作了一张.9图片,放到项目的drawable文件夹下,运行,过后会出现错误,如下:> Error: Some file crunching failed, see logs for detailsError:Execution failed for task ':app:merge_360DebugResources'.明显告知是资源文件的问题,
2017-07-13 14:50:10
501
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人