-
kotlin
-
在 Kotlin 中,所有东西都是对象,在这个意义上讲我们可以在任何变量上调用成员函数和属性。 一些类型可以有特殊的内部表示——例如,数字、字符和布尔值可以在运行时表示为原生类型值,但是对于用户来说,它们看起来就像普通的类。 在本节中,我们会描述 Kotlin 中使用的基本类型:数字、字符、布尔值、数组与字符串。一、数字Kotlin 处理数字在某种程度上接近 Java,但是并不完全相同。例如,对于
-
android00
-
为期三天的Google I/O 2019大会终于在上周落下了帷幕,每年的Google I/O大会都可以说是一场全球的开发者盛宴。不过可惜的是,由于和美国存在时差,I/O大会的直播时间正好是我们这边的深夜,因此对于大多数的人来说可能都只能通过回放的方式来观看I/O大会。另外由于会议全程都是使用的英文,因此对于一些英文不太好的朋友观看起来可能也会比较吃力。因此今天我特意写了这样一篇文章来覆盖Googl
-
android01
-
继续我们的源码解析,上一篇文章我们介绍了Activity的启动流程,一个典型的场景就是Activity a 启动了一个Activity b,他们的生命周期回调方法是:onPause(a) --> onCreate(b) --> onStart(b) --> onResume(b) --> onStop(a)而我们根据源码也验证了这样的生命周期调用序列,那么Activity的
-
cnbzlj
-
今天,简单讲讲android里如何使用removeRule去动态改变布局。最近在修改代码时,发现横竖屏切换时需要动态的设置控件的RelativeLayout.LayoutParams,之前自己是每次切换就new一个RelativeLayout.LayoutParams,但是这样在效率上比较低。所以自己想优化时直接获取控件的RelativeLayout.LayoutParams然后动态的改变属性,这
-
tinuv
-
对成员的访问访问字段通过反射获取到的字段使用Field类表示,Field类提供了一系列的方法来访问基础数据类型,如getInt(),getBoolean()Fieldfield=testClass.getField("intData");
inta=field.getInt(test);field.setInt(test,5);通过setInt()还可以修改一个对象的值,要注
-
android01
-
从这篇文章中我们开始分析android系统的事件分发流程,其实网上已经有了很多关于android系统的事件分发流程的文章,奈何看了很多但是印象还不是很深,所以这里总结一番。android系统的事件分发流程分为很多部分:Native层 --> ViewRootImpl层 --> DecorView层 --> Activity层 --> ViewGroup层 --> Vi
-
android
-
简单说一下学习okhttp的理由google在Android 6.0中删除了HttpClient的Api,采用的是则是okhttp高效的使用HTTP,使应用运行更快更省流量响应缓存数据避免重复网络请求无缝的支持GZIP来减少数据流量使用非常简单,请求和响应的Api具有流畅的建造和不变性,同时支持同步异步调用回调函数如果网络出现问题,它会从常见的连接问题中恢复如果服务器配置有多个IP地址,当第一个I
-
android00
-
1、首先说一下canvas类:Class OverviewThe Canvas class holds the "draw" calls. To draw something, you need 4 basic components: A Bitmap to hold the pixels, a Canvas to host the draw calls (writing into the bit
-
android00
-
昨天新弄了一个安卓项目,从老代码修改过来的,一顿修改打包测试版真机一安装居然出现了“解析软件包时出现问题”,真是太神奇了,从学安卓到现在也有一两年了,居然还能出现这样的情况,想想一直以来也遇到好多这样的情况了,写篇博客总结下吧。一般情一般来说出现这种问题,是安装的手机不能安装该软件导致的,即 minSdkVersion 版本不支持该手机解决办法就是提高 minSdkVersion 的版本号,兼容主
-
cnbzlj
-
今天,继续简单讲讲如何解决Error:This Gradle plugin requires Studio 3.0 minimum。之前讲过这个问题,有点不全面,所以再记录一下。原因:项目用的是3.0的版本自己电脑装的是2.2.2版本的,导入项目Gradle报错解决办法:方案一:build.gradle中改为'com.android.tools.build:gradle:2.3.3'方案二:gra
-
android01
-
今天讲讲应用进程Context的创建流程,相信大家平时在开发过程中经常会遇到对Context对象的使用,Application是Context,Activity是Context,Service也是Context,所以有一个经典的问题是一个App中一共有多少个Context?这个问题的答案是Application + N个Activity + N个Service。最后我们得出结论,应用进程的起始方法
-
android00
-
需求:如果应用中牵扯到第三方平台集成的话,调试是非常讨厌的一件事,因为很多第三方要求正式签名后生成的包才可以正常使用。所以,在debug模式下配置正式签名包,就可以解决问题。在主工程(一般都是app)下的build.gradle里,配置2个签名:signingConfigs{
release{
keyAlias'###'
keyPassword'******'
-
cnbzlj
-
不废话,需求:要求输入框输入字符数小于9,怎么做?不是et.getText().toString().length()<9.而是et.getText().toString().getBytes(Charset.defaultCharset()).length <= 9.根据输入字符串或者显示字符串的字节长度和字符串长度判断,因为汉字在android中一个字符占3个字节,EditText
-
cnbzlj
-
不废话,需求:必须调用腾讯地图的API将地址转经纬度,怎么办?
1、申请地图使用Key(必须)
访问腾讯地图服务 : http://lbs.qq.com/qqmap_wx_jssdk/index.html;申请自己的Key;
记得开启webServiceAPI,不要输入任何限制条件。
请求URL
该请求为GET请求
https://apis.map.qq.com/ws/geoc
-
bbsmax
-
引导语本文从一个递归栈溢出说起,像大家介绍一下如何使用尾调用解决这个问题,以及尾调用的原理,最后还提供一个解决方案的工具类,大家可以在工作中放心用起来。递归-发现栈溢出现在我们有个需求,需要计算任意值阶乘的结果,阶乘我们用 n!表示,它的计算公式是:n! = 123……(n-1)n,比如说 3 的阶乘就是 123。对于这个问题,我们首先想到的应该就是递归,我们立马写了一个简单的递归代码://阶乘计
-
android
-
今天,简单讲讲android studio导入工程时,出现报错Error:This Gradle plugin requires a newer IDE able to request IDE model level 3. For Andro。这个问题其实是由于android studio是2.x版本,而导入的工程是使用android studio 3.0创建的,所以会出问题。在网上找了解决的办法
-
bbsmax
-
HDFS 文件读取流程The client opens the file it wishes to read by calling open() on the FileSystem object, which for HDFS is an instance of DistributedFileSystem (step 1 in Figure 3-2).DistributedFileSystem c
-
android
-
android如何设置EditText控件中的文本最大长度我有一个编辑文本和一个文本视图,我想在我的编辑文本中设置一个最大长度,并在我的文本视图中显示,每当用户输入一个字符时,它将减去字符数。 例如,我将编辑文本的最大长度设置为150,如果用户输入150个字符,则他/她将无法再输入。方法一, 在您的XML文件中(推荐),使用属性android:maxLength="150"例如:<EditT
-
android01
-
平时开发过程中我们通过android studio编写完成android项目之后直接点击 Run 'app'就可以在build/outputs/apk生成可以在android设备中安装的apk文件了,那么整个android源码的构建过程是怎么样的呢?我们可以根据Google官方提供的流程图来具体了解构建的过程:通常的构建过程就是如上图所示,下面是具体描述:1.AAPT(Androi
-
android00
-
Android 获取屏幕宽度跟高度在android开发过程中,对于控件的高度,宽度,通过下面的函数调用,轻松实现编程中设置控件的相对宽度跟高度: // 获得屏幕的宽度
public static int getScreenWidth(Context ctx) {
// 从系统服务中获取窗口管理器
WindowManager wm = (Windo