自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(93)
  • 资源 (1)
  • 问答 (4)
  • 收藏
  • 关注

原创 Android面试之自定义View、requestLayout和invalidate、双缓冲机制

view的绘制流程从ViewRoot的performTraversals方法开始,经过measure、layout、draw三个过程后讲一个view绘制出来measure:用来测量view的宽高layout:用来确定在父容器中的位置draw:负责将view绘制在屏幕上performTraversals方法会依次调用performMeasure、performLayout、performDraw三个方法。在这三个方法中分别完成顶级view的measure、layout和draw流程。以perf

2020-08-13 16:28:55 591

原创 Android 8.0 通知、通知渠道

在Android8.0 引入通知渠道,通知渠道可以对通知信息进行区分,提高了应用的体验度,对于通知渠道来说,每条通知都有属于一个对应的渠道,用户可以在通知设置中自由选择这些通知渠道的重要程度,以便选择是否关闭 部分通知。创建通知渠道之后,程序无法修改通知行为,创建之后只有用户可以修改,程序只能修改渠道名称跟渠道描述。我们可以为一个应用程序创建多个通知渠道,不同的通知类型用不同的渠道。例如重要通知用一个渠道,可以为这个渠道重要性设置成最高,不怎么重要的通知用一个渠道,这个渠道重要性设置成最低。1、创建通知渠

2020-07-14 15:59:23 879

原创 Kotlin学习路(九):数据存储(二)

<本文学习郭神《第三行代码》总结>3.SQLite数据库存储SQLite是一种轻量级的关系型数据库,运算速度快,占用资源少,通常只需要几百KB。SQLite不仅支持标准的SQL语句,也遵循数据库的ACID事务。3.1创建数据库Android提供了一个SQLiteOpenHelper帮助类,通过它可以实现对数据库的创建和升级。SQLiteOpenHelper是一个抽象类,在使用时,需要自定义工具类去继承它。SQLiteOpenHelper两个抽象方法:onCreate、onUpgra

2020-07-01 13:06:03 465

原创 Kotlin学习路(八):数据存储(一)

<本文学习郭神《第三行代码》总结>数据存储一共分为五种方式:1、文件存储2、SharedPreferences3、SQLite数据库存储4、ContentProvider5、网络存储1. 文件存储文件存储不对存储的内容进行任何格式化处理,所有数据都是原封不动的保存到文件当中,适合存储一些简单的文本数据或二进制数据。如果需要保存一些复杂的数据,就需要自己定义格式,比如保存json数据、加密数据等。文件存储默认存储路径为:data/data//files/目录下。文件操作模式分为

2020-07-01 13:02:36 1002

原创 Kotlin学习路(七):高阶函数与内联函数关系

定义用法高阶函数:如果一个函数接收另一个函数作为参数,或者返回值的类型是另一个函数,那么该函数称为高阶函数。语法规则:(String, Int)-> Unit1、在->左边的部分就是用来声明该函数接收什么参数,多个参数之间用逗号隔开,如果不接收任何参数,则用空括号,比如: ()-> Unit。2、在右边则声明该函数返回的值类型,如果没有返回值就使用Unit,它相当于void。比如,将上述函数类型添加到某个函数的参数声明或者返回值声明上,那么这个函数就是一个高阶函数了:fun e

2020-06-19 15:52:14 271

原创 Kotlin学习路(五):变量延迟初始化

<本文学习郭神《第三行代码》总结>在项目开发过程中一般会写很多全局变量,这些全局变量在代码中会做很多判空保护,这样就会是代码编写很繁琐。比如var s : Second ?= nulloverride fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_login) s = Second()

2020-05-21 16:00:19 604

原创 Kotlin学习路(六):扩展函数

<本文学习郭神《第三行代码》总结>扩展函数:在不修改某个类源码的情况下,仍然可以打开这个类,向这个类添加新的函数。扩展函数可以让API更简洁,更加面向对象。定义扩展函数的语法结构:fun ClassName.methodName(param1:Int, param2:Int):Int {//结构体return 0}例如:一段字符串可能包含字母、数字、特殊字符等字符,现在需要统计字符串中字母的数量,如果按照一般写法:object StringUtil { fun let

2020-05-21 15:55:58 127

原创 Android中常用限定符的使用

Android中一些常见的限定符可以参考下表Android给res目录中的子目录加上“-限定符”,可以给不同设备提供不同的资源以及布局。比如在res目录下新建一个layout-large文件夹,在这个文件夹下新建一个布局activity_main,那么这里的large就是一个限定符,那些屏幕被认为是large的设备就会自动加载layout_large文件夹下的布局,而其他屏幕都会加载响应文件夹下的布局,如果没有想符合的限定文件,则加载layout文件夹下布局。但是,限定符到底指多大的屏幕,这里是不好

2020-05-21 10:58:53 589

原创 Kotlin学习路(四):静态方法

<本文学习郭神《第三行代码》总结>在Java中申明静态方法,只需要加入关键字static就可以了public class Util{ public static void funAction(){ print("静态方法") }}在上述代码中fun()就是一个静态方法,在调用该方法时,可以直接调用Util.funAction()。但是在Kotlin中极度弱化了静态方法这个概念,Kotlin中并没有直接定义静态方法的关键字,但是提供了一些其他的语法支持这种特性。1、单例模式

2020-05-11 11:15:16 324

原创 Kotlin学习路(三):标准函数with、run、apply

<本文学习郭神《第三行代码》总结>1、withwith函数接受两个参数:(1)第一个参数是任意类型对象(2)第二个参数是Lambda表达式with函数会在lambda表达式中提供第一个参数对象的上下文,并使用Lambda表达式中的最后一行代码作为返回值返回。val result = with(obj){ //obj上下文"value" //with函数返回值}它可以再连续调用同一个对象的多个方法时让代码更简洁。比如,打印一个集合中的数据,可以通过遍历集合,使用StringB

2020-05-11 11:11:32 229

原创 Java 实现窗口中点击按钮通过URL截取网页内容

写得很详细了,注释也详细,就不解释了import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.Malformed...

2020-04-16 17:12:27 369

原创 Kotlin学习路(二):空指针

<本文学习郭神《第三行代码》总结>1、可空类型Kotlin在编译时,会有自己的判空机制,可以几乎杜绝空指针异常首先,写一段代码:fun setDate(a: Test) { a.getText() a.getContent()}这段代码没有空指针风险,并且这段代码无法传入空参数。因为Kotlin默认所有参数不可为空,所以这里传入的参数也是不可空的。如果这...

2020-04-16 16:56:49 307

原创 Kotlin学习路(一):集合使用

<本文学习郭神《第三行代码》总结>集合主要就是List、Set、Map,它们在Java中都有接口可以实现,List --> ArrayList、LinkedListSet --> HashSetMap–> HashMap1、List集合初始化在Kotlin中初始化集合一般这样做:val list = ArrayList<String>()l...

2020-04-16 15:42:18 546

原创 RS232串口通信 基于ZE613_Android串口转接设备

在网上看到了很多RS232串口操作的讲解,发现基本都是root了,但是在实际开发应用中,这个还有有很多限制的,下面是在非root的情况下,使用基于ZE_613设备RS232串口通信的一些使用情况。(一)RS232标准接口 (这里是借鉴的https://www.cnblogs.com/leestar54/p/6604636.html#wiz_toc_1)也就是PC电脑上所说的COM口,RS232...

2019-04-24 16:31:58 1656 9

原创 基于fastble的蓝牙开发

FastBle的Github项目地址在这,大家可以看看:[FastBle - GitHub]https://github.com/Jasonchenlijian/FastBle它的文档也相对比较完整,大家可以查看官方文档来使用它:https://github.com/Jasonchenlijian/FastBle/wikiFastBle的使用1.1 声明权限<uses-permis...

2019-04-24 16:02:18 4500 5

原创 Ble蓝牙开发详解

蓝牙主要分为两种:经典蓝牙和低功耗蓝牙Ble简介低功耗蓝牙4.0只有android4.3或4.3以上才支持1、BLE蓝牙4.0核心profile,主要特点是快速搜索,快速连接,超低功耗保持连接和数据传输,缺点:数据传输速率低,BLE蓝牙一包数据最多为20字节,因此安卓系统下最好不要使用BLE蓝牙传输大量数据,由于其具有低功耗特点,所以经常用在可穿戴设备之中。2、Profile: 蓝牙规范,...

2019-04-24 15:44:56 4522

原创 Camera镜头缩放:双指滑动、seekBar拖动

Camera镜头缩放主要有两种:监听手势滑动放下控制镜头缩放、seekBar拖动进度条控制镜头缩放项目地址:https://github.com/LeeVanie/CameraDemo1、双指滑动实现镜头缩放:(备注:项目中双指滑动镜头缩放单独成类做了封装,不过原理和下面列出代码一样) /** * 向外放缩标志 */ private static final i...

2019-01-10 10:37:40 2981

原创 js导出数据到excel,兼容ie浏览器

建立Excle导出的js文件,在需要前台导出的页面中引用此js,调用methodExcel(tableid)方法,tableid为需要导出到excel的table表id。将页面上的table显示内容复制到excel中,只能导出本页数据,如果是分页数据的话,不能导出下一页的内容。此方法适用于复杂表头的简单内容导出,对google内核支持较好。测试发现IE9无法兼容,需要设置安全等级,已作出页面...

2019-01-09 15:16:45 5036 1

原创 百度导航5.0之后的坑

百度地图新旧版本里有很多冲突,特别是定位和导航就会报许多令人摸不着头脑的错误,比如下面这些常见的:mapsdkvi.com.gdi.bgl.android.java.EnvDrawText,Multiple dex files define Lcom/baidu/android/bbalbs/common/util/CommonParam,dlopen failed: library “/...

2018-09-28 15:50:37 975

转载 Oracle中TO_DATE TO_CHAR格式

在豆瓣发现一篇很不错的技术贴,分享给大家,这是原文链接:点击打开链接TO_CHAR 是把日期或数字转换为字符串TO_DATE 是把字符串转换为数据库中得日期类型转换函数TO_NUMBER 将字符转化为数字 TO_CHAR 使用TO_CHAR函数处理数字 TO_CHAR(number, '格式') TO_CHAR(salary,’$99,999.99’); 使用TO_CHAR函数处理日期 TO...

2018-09-05 16:49:51 1366

原创 TextView 仿WPS搜索关键字标红查看可显示当前位置

TextView 中文本内容过长,需要快速定位到某关键字时,类似于WPS全文查找搜索内容,并且可以进行定位到搜索内容进行显示,也可点击按钮,跳转到下一处搜索内容处。 TextView进行关键字匹配,需要找到该查找内容在文本中的下标 private List&amp;lt;Integer&amp;gt; position;//全文中查找内容的所有位置 private int subPos =...

2018-09-05 16:46:55 626

原创 Android 仿PC端QQ自由截图,可支持一次截多个区域

仿PC端QQ截图,可任意截图,这里只做了矩形这一种形状,可同时支持截取多个区域,支持撤销上次截图,重新截取。 实现原理: 自定义SurfaceView,在SurfaceView上绘制具有一个可拉伸,移动的矩形框,当点击截图按钮后,计算矩形框的坐标值及原图尺寸,通过比例将矩形框的坐标值转化到原图中相对应的坐标,然后进行裁剪。这里矩形框目前只设置了两个。**项目源码...

2018-07-27 15:37:32 368

原创 错误:Manifest merger failed with multiple errors, see logs

Android项目中,在有Module包的情况报错为:Error:Execution failed for task ‘:app:processDebugManifest’. &gt; Manifest merger failed with multiple errors, see logs属于sdk版本冲突1、将module中的build.gradle中的版本配置参数修改成和主工程目...

2018-05-30 11:24:16 900

原创 Android加密 JNI NDK 验证签名和包名

ndk的环境配置就不写了,网上很多首先新建一个项目,然后在包名下新建一个类,定义自己需要的native方法public class SingatureClass { //验证包名 public native String verificationPackage(Object context); //验证签名 public native String v...

2018-05-21 15:08:42 2925

原创 android zbar中文乱码

将zbar/qrcode/qrdectxt.c中代码修改: 1) 在MainActivity中将识别结果qrCodeString解码处理String encodeResust = new String(qrCodeString.getBytes(&quot;GB2312&quot;), &quot;utf-8&quot;);2) 将“ISO8859-1”替换成“GB18030”/*latin1_cd=iconv...

2018-05-04 15:35:14 759

原创 android zbar使用

一、配置ndk 这就不说了,网上一大堆,随便一搜就搞定了二、下载zbar源码 1、下载Zbar、libiconv源码 到ZBar的Github托管主页上下载 https://github.com/ZBar/ZBar 下载libiconv,http://www.gnu.org/software/libiconv/#downloading 2、编译libiconv 编译libiconv...

2018-05-04 15:30:23 3709

原创 FragmentTabHost的使用

现在市面上app的主流框架大体分为两种:一种是在主界面点击菜单按钮,之后会滑出侧滑菜单,之后进入到各个模块,还有一种是在主界面的下面放置若干个tab按钮,点击按钮,切换到不同的模块。今天要讲的就是第二种的实现方式之一的FragmentTabHost.(选项卡)一: 首先我们看看XML:1.activity_main.xml <FrameLayout android:id="@+id/layo

2018-04-28 14:57:34 344

原创 Android之DataBinding的使用

一、DataBinding介绍 2015年谷歌I/O大会上介绍了一个框架DataBinding,DataBinding是一个数据绑定框架,以前我们在Activity里写很多的findViewById,很多人不想写这个于是用了一些注解框架,可是注解框架无论性能多好,效率总是要低于findViewById的,现在如果我们使用DataBinding,就可以抛弃findViewById。DataBindi

2018-04-27 17:39:28 2876

原创 Json数据解析的一些常见问题

1、Json解析在对象中出现关键字问题可以通过注解关联解析对象的key来解决这个问题,具体如下:(1)fastjson使用者 @JSONField(name = “switch”) public String myswitch; (2)Gson @SerializedName(“abstract”) public String myabstract;以上如果命名为private则在

2018-04-27 17:29:59 1456

原创 Android WebView加载最基本的代码

public class WebViewActivity extends Activity { @BindView(R.id.webview) WebView mWebView; private String url; @Override public void onCreate(Bundle savedInstanceState) { sup

2018-02-08 17:07:27 309

原创 Android WebView加载H5音视频自动播放、关闭Activity停止播放

在Android加载H5,实现H5中的音视频自动播放 在Activity中添加代码:if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { mWebView.getSettings().setMediaPlaybackRequiresUserGesture(false); }关闭A

2018-02-08 17:01:57 3865

转载 Android H5适应屏幕

本文转载至http://blog.csdn.net/u012054869/article/details/52514053viewport 语法介绍:<!-- html document --> <meta name="viewport" content=" height = [pixel_value | device-height] , wi

2018-02-08 16:56:52 676

原创 Android长时间锁屏后界面出现黑屏或输入无反应情况处理

当Activity界面在加载了控件过多之后,容易出现卡顿现象,占用手机的系统内存,那么在长时间锁屏,在锁屏重启界面之后,如果不是并没有出现Crash崩溃,或者OOM情况的发生,那么应该就是Activity被回收了,如果手机内存减少就会导致系统回收不活跃的Activity的。 这是因为锁屏之后,activity将会在后台运行,由于手机内存不足,会被系统回收掉,当你解锁的时候,系统会尝试帮你重启a...

2018-02-08 16:04:46 3243

转载 file文件的搜索、内容替换

import osimport os.pathls = []def getAppointFile(path, ls, hz): fileList = os.listdir(path) try: for tmp in fileList: pathTmp = os.path.join(path, tmp) if True=

2018-01-04 15:33:58 709

原创 热修复Tinker的使用方法

1、项目的build.gradle中添加classpath ('com.tencent.tinker:tinker-patch-gradle-plugin:1.9.1')2、APP的build.gradle: (1)、添加依赖 (2)、添加签名信息配置 (3)、开启混淆 (4)、添加Tinker的相关配置apply plugin: 'com.android.application'andr

2017-12-20 10:03:38 226

原创 继承TextView实现自定义动态文字闪动效果

不会录制,所以看下图就行了, ———–ps:这里我继承的是TextView,其实和继承View的原理是一样的 这里实现了两个效果:1、背景分层,2、文字动态闪动 原理: 原生的TextView使用onDraw()方法绘制要显示的文字,当继承系统的TextView之后,那么如果不对onDraw()进行重写,将不会产生对TextView的任何修改。所以自定义中,通过重写onDraw()方法来

2017-11-24 17:15:37 605

原创 Java图案绘制

图案绘制主要是通过在JPanel类的子类中,重写paint()方法,并在该方法中使用Graphics2D类中的方法来实现的。 先上个效果图: —ps:其实很简单,真不知道该怎么描述了。。。在main方法中绘制一个显示图案的窗口:JFrame window = new DrawFrame();window.setTitle("绘制图形"); window.setDefaultC

2017-11-20 16:25:52 1314

原创 微信小程序开发(6)---列表渲染

在组件上使用 wx:for 控制属性绑定一个数组,即可使用数组中各项的数据重复渲染该组件。 默认数组的当前项的下标变量名默认为 index,数组当前项的变量名默认为 item<view wx:for="{{array}}"> {{index}}: {{item.message}}</view>Page({ data: { array: [{ message: 'foo

2017-10-10 16:44:58 243

原创 微信小程序开发(5)---数据绑定

数据绑定 WXML中的动态数据均来自对应Page的data。简单绑定数据绑定使用”Mustache”语法(双大括号)将变量包起来,可以作用于: 内容<view> {{ message }} </view>Page({ data: { message: 'Hello MINA!' }})组件属性(需要在双引号之内)<view id="item-{{id}}"> </view>

2017-10-10 16:42:11 288

原创 微信小程序开发(4)---页面切换

页面栈框架以栈的形式维护了当前的所有页面。当发生路由切换的时候,页面栈的表现如下:路由方式页面栈表现初始化新页面入栈打开新页面新页面入栈页面重定向当前页面出栈,新页面入栈页面返回页面不断出栈,直到目标返回页,新页面入栈Tab 切换页面全部出栈,只留下新的 Tab 页面重加载

2017-10-10 16:38:07 2183

带时间的自定义刷新

刷新

2017-05-17

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除