Android笔记
文章平均质量分 54
华都烟梦
这个作者很懒,什么都没留下…
展开
-
【kotlin基础】let apply with run also 函数的区别
import android.util.Logclass TestApplyLetWithAlso { val TAG = "TestApplyLetWithAlso" fun test() { var stu = Student() //let,可以配合可空性 “?”来使用,返回值是语句块的最后一行的返回类型,若最后一行语句无返回值,则整个let语句块也无返回值 stu.name?.let { Log.i(TAG.原创 2022-03-04 16:23:06 · 1924 阅读 · 0 评论 -
The exception was not handled due to missing onError handler in the subscribe() method call
浪费了两个小时,因为把()写成了{}原创 2021-12-30 14:36:22 · 2692 阅读 · 0 评论 -
AndroidStudio使用外部公共工具库
AndroidStudio使用外部公共工具库欢迎使用Markdown编辑器随着开发时间的积累,很多人都积累自己的公共开发库(比如lib_util、lib_permission、lib_network等),以便随着积累的增加,以后可以实现快速开发一个app工作,至少可以少写一些重复代码。我也有这种需求,今天来讨论怎么在Android Studio中实现依赖自己的公共开发库。一般分为2种实现方式,一种是使用git的submodule,另外一种使用本地文件系统的路径依赖。submodule实现参考:h原创 2021-07-31 12:41:59 · 537 阅读 · 0 评论 -
Android集成FFmpeg
Android集成FFmpeg参考:https://www.jianshu.com/p/2c9918546edc上一篇文章我们在mac下编译出了供Android平台使用的FFmpeg产物,这篇文章继续讲怎么在Android平台上集成FFmepg。本文是参考别的文章写的,出处已在文首和文末处说明。之所以说只参考,而不是转载,一是我对原文进行了精简,二是因为我在自己尝试时发现了两个问题,并解决了这两个问题,可以说是一种补充吧。实现步骤一、新建工程在Android Studio中选择新建Native原创 2021-07-22 18:11:28 · 831 阅读 · 4 评论 -
Mac下编译FFmpeg
编译FFmpeg转载整理自:https://www.jianshu.com/p/350f8e083e82完全按这个文章来,可以顺利编译出FFmpeg的SO文件。编译主要目录编译工具链目录:AndroidSDK/ndk/{ndk版本}/toolchains/llvm/prebuilt/darwin-x86_64/bin交叉编译环境目录:AndroidSDK/ndk/{ndk版本}/toolchains/llvm/prebuilt/darwin-x86_64/sysroot在 tool原创 2021-07-21 21:11:33 · 407 阅读 · 0 评论 -
Android图片遮罩模式PorterDuffXfermode的使用
工作中有时会用到图片遮罩的功能,如:自定义进度条、自定义图标形状等。这些可以通过使用PorterDuffXfermode来实现。具体过程: 一、自定义组件,重写onDraw方法 二、创建一个Bitmap 三、在Bitmap上绘制第一个图层 四、在Bitmap上绘制第二个图层 五、在Canvas上绘制Bitmap原创 2016-09-30 16:50:55 · 658 阅读 · 0 评论 -
Android_Property Animation
你可以给任意对象定义一个Animation并使之移动,不管这个对象是否绘制在屏幕上。可以通过指定希望发生动画的属性的改变值及持续时间来完成Animation。一个Property Animation可以指定这些属性: Duration:指定动画的持续时间,默认时间长度为300毫秒。 Time interpolation:指定插入函数,即属性和当前时间之间的函数。...原创 2015-12-17 17:15:43 · 374 阅读 · 0 评论 -
AndroidlaunchMode
launchMode是一条决定Activity如何载入的命令,有四种载入模式可以通过Intent的FLAG_ACTIVITY_*参数来决定一个Activity启动时的行为。他们分别是:standard,singleTop,singleTask和singleInstance。默认模式是standard。 四种模式可以分为两组,standard和singleTop为一组,s...原创 2015-12-16 16:52:47 · 544 阅读 · 0 评论 -
Android中NoClassDefFoundError异常解决记录
随着Android项目的不断增大,引用的类库不断增多,使用Android Studio编译Android项目时可能会遇到NoClassDefFoundError的错误提示,从而导致项目安装包的不完整,即有些界面能运行,有些用到类库的功能却会闪退,此时,需要考虑是否遇到了64k问题。即安装包中包含的方法超过了64K个,解决方案如下: 一、在主Module的build.gr原创 2016-08-30 10:37:05 · 2156 阅读 · 0 评论 -
Android中OKHttp保存Cookie并传入WebView
Cookie是服务器为客户端分配的一个键值对的表,和session不同的是cookie存储在客户端。服务器通过Response.addCookie()为客户端添加Cookie数据,再从Request.getCookie()中获取数据。 在Android开发中,有时我们需要调用http的接口登录帐号,然后使用cookie作为登录标记来进行网页浏览。此时就需要从http请求中取到cookie数据并保存起来,在使用webView进行页面访问时再将cookie数据设置到webview上。本文以OKH原创 2016-01-14 12:01:35 · 8018 阅读 · 6 评论 -
Android Studio多项目共享一个BaseLibrary
开发中可能会慢慢形成自己的基础类库,里面包含一些经常用到的方法,组件,甚至像城市列表选择页面这样的界面。我们希望能够把这些常用的代码领出来作为一个独立的库,新建一个项目是直接引用进来,可以节约不少时间。 事实上我有这样一个类库,只是每次新建一个项目时,需要手动import一次,这还好,问题时,这个基础类库在不断的变得更加丰富,有时会发现旧项目中引用的BaseModule并不是最新的,有些代码可能有更优化的解决方案。 所以需要有一个类库,是被多个项目同时“引用”的,而不是复制一原创 2016-10-26 17:58:10 · 2831 阅读 · 1 评论 -
读书笔记『Kotlin实战』
P18:在Kotlin中没有声明数组类型的特殊语法,数组就是类P19:在Kotlin中if是有结果的表达式fun mac(a:Int,b:Int):Int{ return if(a>b) a else b}P25:自定义访问器class Retangle(val height:Int, val width:Int) { val isSqual:Boolean gen()...原创 2019-04-09 15:57:23 · 407 阅读 · 0 评论 -
Android『消息传递』
Hanlder构造方法在创建Handler时,Handler在其构造方法中***尝试从当前线程(创建Hanlder实例对象的线程)的ThreadLocal中取到Looper对象***,并将该Looper对象赋值给当前Hanlder对象,同时还会将Looper对象的MessageQueue引用赋值给当前Handler。//Lopper.myLooperpublic static @Nullab...原创 2019-04-22 21:37:40 · 170 阅读 · 0 评论 -
Retrofit『使用』
Retrofit的优点可以配置不同HTTP client来实现网络请求,如okhttp、httpclient等将接口的定义与使用分离开来,实现结构。支持多种返回数据解析的Converter可以快速进行数据转换。和RxJava集成的很好因为容易和RxJava结合使用,所以对于异步请求,同步请求也不需要做额外的工作。Retrofit是基于OKHttp简单使用配置依赖在module...原创 2019-04-30 20:41:53 · 263 阅读 · 0 评论 -
AsyncTask,Handler,Looper,MessageQueue
一堆东西,AsyncTask、Handler、Looper、Thread Pool、Executor。容我一个一个看过来,该翻译的翻译,该写demo的写demo。当然可能不会写的太过深入,因为每个都展开来的话都可以写一篇博客了,这里以了解为主。 一、Handler Handler在程序中用的还是比较多的,通常会使用Handler在UI线程和后台线程之间传递消原创 2013-11-04 20:07:06 · 1259 阅读 · 0 评论 -
AndoidTips(个人总结,持续更新)
1.在代码中为组件设置背景色时,注意使用0xXXXXXXXX,而不是0xXXXXXX。2.在布局文件中可以使用<include/>和<merge/>标签来实现布局,其中<merge/>和<includ/>的不同之处在于,merge能够在嵌套时过滤调用用<merge>修饰的组件。详见:http://stackoverflow.com/questions/8834898/what-is-the-purpose-of-androids-merge-tag-in-xml-layoutshttp://write.原创 2013-12-27 10:14:14 · 1567 阅读 · 1 评论 -
Android代码混淆及项目发布步骤记录
本来整理了一份Android项目混淆与发布的文档,突然想到何不写篇博客,分享一下呢,如是便有了本文。原创 2014-07-08 11:24:41 · 2192 阅读 · 0 评论 -
Android中的OnMeasure及OnLayout
1、View中包含onLayout()、onMeasure()、layout()、measure()。查看源码可以在View的layout()中调用了onLayout(),而onLayout()本身是一个等待重写的空方法,同样的在measure()中调用了onMeasure()方法,和onLayout()不同的是onMeasure()并不是一个空方法,在其中调用了setMeasureDimensi原创 2013-10-15 11:11:03 · 1425 阅读 · 0 评论 -
调用TextView.setText后组件发生抖动问题及解决
项目需要做一个首页新闻图片自动无限循环的组件,上面配有标识的RadioGroup。这个简单。可是后来UI设计出来的效果,要求在图片的下方添加一个灰色颜色带,再在这个颜色带上显示关于图片的标题。我想,这个也简单,分分钟的事。起先,我将表示TextView的组件引用传递个自定义的Gallery,让Gallery自动滚动时也顺带把TextView的值改变过来。可是运行起来后,发现字是改变过来了。不过Ga原创 2013-10-15 11:11:08 · 1648 阅读 · 0 评论 -
Android 调用相机以及调用系统图片软件浏览图片
1、调用系统中的图片浏览软件,使用Intent实现: Intent i2 = new Intent(Intent.ACTION_GET_CONTENT); File file=new File("系统根目录"); i2.setAction(Intent.ACTION_PICK); startActivityForResult(i2, INI.REQ原创 2013-10-15 11:10:02 · 954 阅读 · 0 评论 -
关于使用ActivityGroup实现活动跳转带来的问题
需要使用ActivityGroup实现Tab下内嵌多组Activity的效果。这样的教程网上很多,这里就不做详细的介绍了,大致是这样的: Window w = ActivityGroup.getLocationActivityManager().startActivity(String FLAG,Intent i); ActivityGroup.setContentV原创 2013-10-15 11:10:48 · 811 阅读 · 0 评论 -
毕业设计_Android短信查询及加密系统_短信查询
上回介绍了系统的会话加密功能的实现,这回介绍一下短信查询功能。软件实现了根据联系人号码、短信内容、短信发生时间进行多条查询,支持查询条件的或运算和与运算。多条件查询指的是多个查询字段的联合查询,可以这样理解,用户可以查询所有发生在"下午5点"、号码包括"189"、内容包括"你好"的短信。而查询条件的或运算指的是,用户可以同时查询发生在"下午3点"和"晚上9点"的短信;与运算则可以这样理解,用户可以原创 2013-10-15 11:09:32 · 1486 阅读 · 0 评论 -
android中GC_FOR_MALLOC含义
GC_FOR_MALLOC means that the GC was triggered because there wasn't enough memory left on the heap to perform an allocation. Might be triggered when new objects are being created.在堆的内存不足以为一个新的对象分配空间时原创 2013-10-15 11:11:13 · 1053 阅读 · 0 评论 -
Android中的事件传递
前段时间项目中用到了一个九宫格按钮拖动效果的需求,当时写的比较乱,现在有看了一下onInterceptTouchEvent和onTouchEvent()的传递过程,这里做下记录,首先看api文档中对onInterceptTouchEvent()的描述 Events will be received in the following order:You will receive th原创 2013-10-15 11:09:52 · 874 阅读 · 0 评论 -
关于Android中windowleaked异常的理解
首先,这是今天遇到的一个问题,应该算是一个小问题吧,下面是我的代码: saveDiary.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //将新建的游记保存到数据库 ContentValues values =原创 2013-10-15 11:09:37 · 821 阅读 · 0 评论 -
毕业设计_Android短信查询及加密系统_会话加密
下面是我的毕业设计,是一个Android的短信查询系统,系统支持根据短信号码、短信内容、短信发生时间进行多条件的短信查询。支持检索条件的与运算和或运算。扩展了会话加密、转发/存短信、收/发短信等功能。需要强调的是本人菜鸟,东西做的不好,路过的大侠见了可不要喷我,谢谢!下面是程序的运行截图: 图1.程序欢迎动画原创 2013-10-15 11:09:26 · 1963 阅读 · 1 评论 -
Java Annotations详解
Java注释被用来为java代码提供元数据(meta data)。作为元数据,注释不会直接影响代码的执行结果,不过事实上有些注释就是为了影响代码的执行结果而定义的。 Java注释是从Java 5开始添加的。本文对于Java注释的讨论是基于java 6的,据我所知,到目前为止Java 7中关于注释的部分并没有发生改变,所以本文对java 7编程人员上来说应该也是可用的。翻译 2013-10-27 14:24:02 · 2114 阅读 · 1 评论 -
详解android中的任务(Task)和栈(Stack)
这两天做推送,下午看了一下午的文档,有写了一下demo,现在做下总结,以免下次又忘了。应该说推送本身是比较简单的,用的是jpush。问题在于接收到推送以后,单击通知栏中推送项目后的跳转问题。嗯,,需求是当浏览完广告页时,按back键要求返回程序栈,当然如果程序此时未启动,则需要启动程序。同样,如果程序正在前台运行则不做任何处理。这里的程序指的就是我们的项目。 这个看来的慢慢说了,应原创 2013-09-06 15:11:11 · 2950 阅读 · 1 评论 -
Android无限循环轮转广告页组件实现
新项目一个,不过又是首页广告栏组件,第三次写这个组件了。虽然也可以拷贝以前的代码整理一下完成任务,但还是打算封装一下,重构一下代码,也算是自己近段时间学习的一个检验吧。不错不错~~先上效果图吧:原创 2013-12-14 16:48:59 · 2795 阅读 · 0 评论 -
Android多屏幕适配技巧整理(持续更新)
整理了一些本人开发过程中遇到的屏幕适配问题及解决技巧1、切图标比如一个列表中每个列表项都有一个图标但是图标的大小可能不是完全一样的。此时,可以根据最大的那个图片来指定统一尺寸,即将其他一些小的图标居中然后在四周填充"透明像素",来使得图标的大小一致,以便于布局排版。2、复杂界面的屏幕适配最好的适配方法就是使用屏幕百分比为计算单位来动态添加生成组件。下面以一个笔者使用代码创建的界面为原创 2014-01-08 17:58:26 · 2605 阅读 · 0 评论 -
Android中多线程下载列表实现
实现了一下Android中的文件多线程下载模块,支持自定义线程数、断点续传、下载任务的删除,添加等功能,这里封装了一下,功能已全部实现。不过由于使用的是最简单的手动线程数组及消息通知实现,可能还存在某些小问题。笔者会在后面的使用过程中再进行优化完善。先看一下程序测试效果,这里指定了5个下载任务,以及2个下载线程,具体如下:原创 2014-01-03 13:49:59 · 3992 阅读 · 2 评论 -
Android_仿支付宝账单列表(头部停留及分页数据加载)
没有办法,米公设计的一个UI是stickyheaderlist(头部停留)和分页加载的整合,笔者原以为是米工自己拍着脑袋想出来的,还想进一步讨论一下,后来才发现淘宝也是这么做的,那好吧,做呗。 下面分别介绍一下StickyHeaderListView(这么长!后面都简写成StickyLV好了)和分页加载: 一、StickyLV(头部停留listview) 其实这个没什么好说的,因为是开源组件,github上都有介绍和demo,这里就简单的讲一下几个关键的地方吧原创 2014-03-18 22:17:13 · 6746 阅读 · 7 评论 -
Android的内存管理
相信一步步走过来的Android从业者,每个人都会遇到OOM的情况。如何避免和防范OOM的出现,对于每一个程序员来说确实是一门必不可少的能力。今天我们就谈谈在Android平台下内存的管理之道,开始今天的主题之前,先再次回顾两个概念。内存泄漏:对象在内存heap堆中中分配的空间,当不再使用或没有引用指向的情况下,仍不能被GC正常回收的情况。多数出现在不合理的编码情况下,比如在Act转载 2014-07-24 16:23:04 · 773 阅读 · 0 评论 -
使用ContentObserver监听事件变化并及时刷新列表效果
在开发中需要列表的及时刷新,刚开始每次都是重新查询数据再渲染列表,可以这样的话速度十分慢,后来查了一下,发现使用ContentObserver可以实现这种效果。以下是具体代码: class MyObserver extends ContentObserver { private Cursor cursor = null; public MyObserver(原创 2013-10-15 11:08:45 · 1350 阅读 · 0 评论