自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

乌龟赛跑

你在某件事上花费的时间都是值得的。

  • 博客(291)
  • 资源 (8)
  • 问答 (3)
  • 收藏
  • 关注

原创 MVVM学习

优势MVVM的目标和思想MVP类似,利用数据绑定(Data Binding)、依赖属性(Dependency Property)、命令(Command)、路由事件(Routed Event)等新特性,打造了一个更加灵活高效的架构。数据驱动在MVVM中,以前开发模式中必须先处理业务数据,然后根据的数据变化,去获取UI的引用然后更新UI,通过也是通过UI来获取用户输入,而在MVVM中,数据和业...

2019-01-14 17:29:54 566

原创 Kotlin笔记

一、类class1、构造器Koltin 中的类可以有一个 主构造器,以及一个或多个次构造器,主构造器是类头部的一部分,位于类名称之后:class Person constructor(firstName: String) {}如果主构造器没有任何注解,也没有任何可见度修饰符,那么constructor关键字可以省略。class Person(firstName: String) {}2、getter 和 setter属性声明的完整语法:var <propertyName>[

2021-03-19 16:37:17 282

原创 uni-app混合原生安卓开发

uni-app和原生App混合开发问题首先务必确认uni-app和原生代码,谁是主谁是从的问题。1、如果你的应用是uni-app开发的,需要扩展一些原生能力,那么首先去插件市场看看有没有现成的插件,如果没有,就自己开发,开发文档请参考原生插件开发教程https://nativesupport.dcloud.net.cn/NativePlugin/course/android。2、如果你的App是原生开发的,部分功能栏目想通过uni-app实现,有2种方式:在原生App里集成uni小程序sdk,参考

2021-01-28 17:17:58 11980 1

原创 小程序运营

字节跳动小程序小程序审核通过 ,抖音小程序中能搜索此小程序,但是发布小视频时,挂载小程序不能搜索到该小程序进入小程序管理–>功能管理–>抖音能力–>前往管理–>特殊权限–>查询小程序挂载权限(申请通过就可以)...

2021-01-28 11:02:25 271

原创 安卓市场上架调研

大部分应用商店会要求著作权证书。应用商店酷安市场Google Play豌豆荚安智vivo 应用商店是否需要软著xx√x (推广费5000元)广告商优量汇优量汇

2021-01-27 11:31:59 728 1

原创 uni-app广告总结

uni-app广告分类两大类:基础广告和增强广告。基础广告基础广告直接在uni-app后台勾选即可,不需要做配置,直接能够使用。弊端:基础广告只能在App中使用,不能显示在小程序中。收益较低。广告形式:开屏PUSH通知栏增强广告增强广告开通较麻烦,大部分需要在主流应用市场上架才能开通,一般上架都需要软件著作权证书。弊端:开通较麻烦,大部分需要软件著作权证书需要代码植入广告形式:...

2021-01-27 10:49:36 5697 3

原创 uni-app采坑记录

1、微信小程序,如果请求服务器接口,在体验版之后,都必须在小程序开发后台配置https域名才能正常访问。这个域名可以是任何域名,只需要配置即可,多个域名之间用";"符号分割。设置→开发设置→服务器设置...

2021-01-21 16:55:53 292

原创 uni-app学习

uniapp是采用vue.js语法,api风格接近微信小程序。<view>标签相当于html中的<div>

2021-01-06 10:40:39 168

原创 vue.js学习

<!DOCTYPE html><html> <head> <meta charset="utf-8" /> <title></title> <script src="js/vue.js" type="text/javascript" charset="utf-8"></script> </head> <body> <div id="app"> {{

2021-01-04 15:13:36 110 1

原创 跨平台框架选择

目标:找到一个快速上手的,能支持android、ios、H5、微信小程序、支付宝小程序、钉钉的开发框架。框架androidiosH5微信小程序支付宝小程序钉钉跨平台兼容性上手难度React Native√√××××一般Flutter√√××××一般较高PhoneGap√√××××一般较低Taro√√√√√√较好较高uni-app√√√√√√好较低从快速开发,跨平台

2020-12-30 09:55:06 218

原创 HashMap与TreeMap

1、HashMap使用HashMap做个测试:Map<Character, Integer> map = new HashMap<Character, Integer>();map.put('s', 1);map.put('a', 3);map.put('j', 2);map.put('d', 9);map.put('f', 3);for (Character in : map.keySet()) { Integer str = map.get(in);//得

2020-12-24 11:31:28 288

原创 算法-动态规划

在LeetCode上有一道题:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-with-transaction-fee/这个题的解决思路之一就是使用动态规划。那何为动态规划,知乎上这篇文章讲的比较透彻:https://www.zhihu.com/question/39948290/answer/883302989我总结了一下,什么样的问题适合用动态规划?问题的答案依赖于问题的规模​,也就是问题的所有答案构成了一个数列

2020-12-17 15:27:40 157

原创 微信小程序(十)全局数据变化监听

有这样一个需求,在一个页面点击“增加”按钮,另一个页面的数据要跟着变化,这里就需要全局数据变化监听。在全局app.js文件中://app.jsApp({ // ... globalData: { orderNum:0, // 订单数量 }, //app 全局属性监听 watch: function (method) { var obj = this.globalData; Object.defineProperty(this, "globalData

2020-12-09 15:05:33 4498

原创 微信小程序(九)布局

1、display:block 指定为块内容器模式,总是使用新行开始显示,微信小程序的视图容器(view,scroll-view和swiper)默认都是dispaly:block。display:flex:指定为行内容器模式,在一行内显示子元素,可以使用flex-wrap属性指定其是否换行,flex-wrap有三个值:nowrap(不换行),wrap(换行),wrap-reverse(换行第一行在下面)使用display:block(默认值)的代码:<view class="flex-row"

2020-12-07 14:56:31 604

原创 android bmob集成

1、项目中添加引用在项目下的build.gradle下,增加一行:allprojects { repositories { // ....省略 maven {url 'https://dl.bintray.com/chaozhouzhang/maven' } }}在module的build.gradle下添加: implementation 'cn.bmob.android:bmob-sdk:3.7.8' implementation

2020-11-25 21:12:38 505

原创 androidstudio run按钮灰色不可运行

1、app的build.gradle的compileSdkVersion没有2、在model下拉框中选择app.如果下拉框中没有app,(没有工程名),那么请先去设置:Android Studio 3.3.0 File->sync project with gradles files;(老版本的AS可能是tools ->Android->sync project with gradles files;)...

2020-11-24 22:04:08 1243

原创 startActivityForResult()替代方案Activity Result Api

startActivityForResult()在使用过程中,还需要与onActivityResult()配对使用,定义大量的requestCode,属实比较麻烦,而现在startActivityForResult()方法已经被谷歌标记为了Deprecated,方法不推荐使用了,谷歌推荐使用Activity Results API。首先引入: implementation 'androidx.activity:activity:1.2.0-beta01' implementation 'a

2020-11-10 17:09:03 17990 1

原创 网络调试常用命令

1、ping命令最常用的应该就是ping命令,可以快速查看当前ip与目标ip是否网络畅通。这里ping命令后即可以是ip地址,也可以是域名。但是现在很多服务器(比如运营商核心网)都是禁ping 的,那就要下面操作了。2、tracert命令tracert命令可以追踪路由3、telnet命令如果禁ping和tracert,可以使用telnet命令。要使用telnet命令,先要开启telnet客户端。telnet不是内部或者外部命令也不是可运行的程序telnet ip port到上面这个

2020-11-02 14:51:40 34199

原创 从0实现RxJava

参考:https://mp.weixin.qq.com/s/hiCO5_0Rc5sXeis13CZrYA先做一个最简单RxJava:/** * 观察者 */public interface MyObserver<T> { void onSubscribe(); void onNext(T t); void onError(Throwable e); void onComplete();}//真正的被观察者public interface MyO

2020-10-23 17:00:48 187

原创 Android studio修改项目名称

有时候我们从旧有项目代码复制过来新建一个项目,修改项目根目录的文件名之后,发现AS中的项目名称并没有改变,下面总结一下完整的过程。1、修改项目根目录的文件名2、打开.idea/.name文件里面内容只有一个,就是项目名称,修改为新项目名称即可3、重命名旧项目名称.iml,改成新项目名称.iml然后打开这个.iml文件把这个project.id改成新项目名称即可。...

2020-09-25 10:35:19 1961

原创 MPAndroidChart总结

1、在使用环形图表的时候,我遇到一个问题,环上显示不出百分号(%)?查看设置代码:mChart.setUsePercentValues(true); //使用百分比显示这里正确设置了,然后发现下面代码有猫腻:pieData.setValueFormatter(new PercentFormatter());查看PercentFormatter源代码:public class PercentFormatter extends ValueFormatter{ public Deci

2020-09-24 16:32:47 579

原创 Dagger2学习

官方GitHub:https://github.com/google/dagger示例代码(参考:https://blog.csdn.net/wusejiege6/article/details/102644782)public class MainActivity extends AppCompatActivity implements MainContract.View { private MainPresenter mainPresenter; ... @Override

2020-08-17 16:44:13 160

原创 git常用命令

1、查看远程分支git remote2、查看当前远程仓库地址根据上面命令,查看远程分支origin的仓库地址git remote get-url origin3、修改远程仓库地址gitlab服务器迁移,需要改变git的远程仓库地址。git remote set-url origin http://10.78.58.79/huangy185/reader.git4、设置提交者的名称和邮箱D:\workspace\reader>git config --global user.

2020-08-12 11:49:34 214

原创 微信小程序(八)遇到的一些坑

程序的坑比较多,原因在于小程序开发文档相当的不全,所以开发小程序是比较痛苦的,但也正是因为坑多,技术却一步一步的往上升了…不知道该笑还是该哭。1、wx.uploadFile的坑返回的数据格式不是JSON格式(需要自己用JSON.parse()转化格式);...

2020-08-07 09:49:59 166

原创 SpringBoot从零搭建一个项目(五)定义返回格式

如果我们直接返回对象的json格式,对于客户端来说,使用体验不是很好,一般还要返回code和错误信息,所以这里我们做一次封装。先定义返回的格式如下:{ data: {} code: 100 msg:“正常”}封装返回的类:public class JsonResult { public static String CODE_SUCCESS = "100"; public static String CODE_FAIL = "101"; private Stri

2020-08-05 11:30:17 233

原创 SpringBoot从零搭建一个项目(四)用户系统架构

一、数据库设计二、Java架构整体架构如下:主要分为:持久层、业务层和控制层。1、数据集合省略get和set方法public class User { private Integer id; private String nickName; private String avatarUrl; private String openid; private String unionid; private String createDate;}2、持久层@Repositoryp

2020-08-05 11:13:29 377

原创 微信小程序(七)本地调试

官方文档中对于网络请求有详细介绍:https://developers.weixin.qq.com/miniprogram/dev/framework/ability/network.html在小程序/小游戏中使用网络相关的 API 时,需要注意下列问题,请开发者提前了解。服务器域名配置每个微信小程序需要事先设置通讯域名,小程序只可以跟指定的域名进行网络通信。包括普通 HTTPS 请求(wx.request)、上传文件(wx.uploadFile)、下载文件(wx.downloadFile) 和 We

2020-08-04 15:45:34 3151

原创 百度AI语音SDK集成

异常1、报错[ERROR]asr error:{“sub_error”:4004,“error”:4,“origin_result”:{“sub_error”:4004,“error”:4,“sn”:“cuid=B2C0D5D67F92F66D050236F30A233EA3|O&sn=728dbbf5-afd4-40b9-aa38-a9f0d6371941&nettype=4”,“desc”:“App name unknown[(-3004)4: Open api request lim

2020-07-31 10:51:51 2100

原创 自定义view中使用selector

需求如下:整体是一个自定义view,该view中有一个图片,点击后切换状态,图片跟着切换。很自然的想到selector中的state切换,定义一个selector文件如下:<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/voice_ing" android:state_selected="true"/> &

2020-07-30 16:22:22 722

原创 SpringBoot从零搭建一个项目(三)第一个程序

按照下图新建三个包,在controller包下面新建HelloServlet.java文件,@RestControllerpublic class HelloServlet { @RequestMapping("/hello") public String hello() { return "hello spring boot!"; }}@RestController可用下面两个注解代替:@Controller@ResponseBody@Controller注解,表明了这

2020-07-14 15:14:25 180

原创 SpringBoot从零搭建一个项目(二)架构

新建一个springBoot项目结构如下:重要的三个文件我用红色框起来了。1、Application文件名是项目名称+Application,所以这里是XiaopuApplication。@SpringBootApplicationpublic class XiaopuApplication { public static void main(String[] args) { SpringApplication.run(XiaopuApplication.class, args); }

2020-07-14 14:55:17 181

原创 SpringBoot从零搭建一个项目(一)准备工作

1、Eclipse安装插件Eclipse->help->Eclipse Marketplace->search搜索“STS”,选择Spring Tools 3(或者更高版本),点击install,等待下载安装。

2020-07-13 14:28:47 279

原创 微信小程序(六)表格布局

小程序中表格布局和android开发中的gridview控件布局不一样,小程序中不是定义一个表格控件,而是通过flex布局自动换行的方式来达到目的。首先在wxml布局文件中:···商品{{item}}0</block>···这里block 并不是一个组件,它仅仅是一个包装元素,不会在页面中做任何渲染,只接受控制属性。其中在js文件中定义的数据:```Page({ /** * 页面的初始数据 */ data: { grids:

2020-07-12 22:51:30 2359

原创 微信小程序(五)首页架构

一般首页都采用tabBar的形式去展现,好在小程序帮我们实现了tabBar,很容易就可以实现。在app.json中增加:"tabBar": { "color": "#bfbfbf", "selectedColor": "#0aa4f5", "list": [ { "pagePath": "pages/shop/shop", "text": "小铺", "iconPath": "/image/shop.png", "selectedIco

2020-07-12 22:44:42 528

原创 微信小程序(四)屏幕适配

在WXSS中,引入了rpx(responsive pixel)尺寸单位。引用新尺寸单位的目的是,适配不同宽度的屏幕,开发起来更简单。如图所示,同一个元素,在不同宽度的屏幕下,如果使用px为尺寸单位,有可能造成页面留白过多。修改为rpx尺寸单位,效果如图所示。小程序编译后,rpx会做一次px换算。换算是以375个物理像素为基准,也就是在一个宽度为375物理像素的屏幕下,1rpx = 1px。举个例子:iPhone6屏幕宽度为375px,共750个物理像素,那么1rpx = 375 / 750 px

2020-07-03 17:01:23 2401

原创 微信小程序(三)微信开发者工具使用git

1、添加远程版本管理版本管理->设置->远程->添加把在远程建立的仓库地址添加进来。2、版本管理认证版本管理->设置->网络和认证->认证方式->使用用户名和密码填上用户名和密码即可。3、推送配置好之后就可以推送啦...

2020-07-03 16:40:01 5600

原创 微信小程序(二)原理

渲染层和逻辑层首先,我们来简单了解下小程序的运行环境。小程序的运行环境分成渲染层和逻辑层,其中 WXML 模板和 WXSS 样式工作在渲染层,JS 脚本工作在逻辑层。小程序的渲染层和逻辑层分别由2个线程管理:渲染层的界面使用了WebView 进行渲染;逻辑层采用JsCore线程运行JS脚本。一个小程序存在多个界面,所以渲染层存在多个WebView线程,这两个线程的通信会经由微信客户端(下文中也会采用Native来代指微信客户端)做中转,逻辑层发送网络请求也经由Native转发,小程序的通信模型下图所示。

2020-07-03 16:08:25 435

原创 微信小程序(一)建立新项目

其实按照微信的官方文档,很容易的就可以搭建起微信小程序的开发环境了。https://developers.weixin.qq.com/miniprogram/dev/framework/quickstart在申请账号的时候遇到小问题,由于微信开放平台和微信公众平台是独立的,所以账号不能互通,且邮箱在一个平台注册之后(不管是否成功注册),不能在另外一个平台使用,所以这里需要再去找一个邮箱来注册。...

2020-07-02 17:15:06 278

原创 AndroidStudio与gradle版本异常

1、AndroidStudio版本太低AndroidStudio版本太低,与下载的gradle版本不兼容,报错如下:java.lang.AbstractMethodError: org.jetbrains.plugins.gradle.tooling.util.ModuleComponentIdentifierImpl.getModuleIdentifier()Lorg/gradle/api/artifacts/ModuleIdentifier; at org.gradle.api.internal.

2020-06-03 17:09:31 2505

原创 MMKV学习(三)Android使用

MMKVMMKV 原理MMKV for Android 多进程设计与实现MMKV 是基于 mmap 内存映射的 key-value 组件,底层序列化/反序列化使用 protobuf 实现,性能高,稳定性强。从 2015 年中至今在微信上使用,其性能和稳定性经过了时间的验证。近期也已移植到 Android / macOS / Win32 / POSIX 平台,一并开源。Android 指南安装引入推荐使用 Maven:dependencies { implementation 'com.

2020-06-03 14:49:22 5747

github for windows离线包

github for windows离线包,下载后解压,直接运行GitHub.application即可。

2016-11-03

android可暂停的录制视频(修复秒拍闪退)

android前置竖屏摄像头录制视频保存到本地,Camera+MediaRecorder实现,并支持暂停和恢复录制功能,修复快速按暂停和恢复会闪退的异常

2016-10-21

android可暂停的录制视频

android前置竖屏摄像头录制视频保存到本地,Camera+MediaRecorder实现,并支持暂停和恢复录制功能

2016-10-20

android前置竖屏摄像头录制视频保存到本地

android前置竖屏摄像头录制视频保存到本地,Camera+MediaRecorder实现

2016-10-18

安卓emoji表情

安卓emoji表情

2016-09-14

自定义输入框--输入法与表情面板切换

自定义的输入框一般都有输入法与表情面板切换的功能,要做到美好的切换体验也是不容易的。切换时不要闪,闪的原因是输入法出现时,会把activity往上挤压,输入法隐藏时,activity又会复原,这个过程,我们的界面就会跳来跳去,给人感觉就是闪瞎眼睛。

2016-09-13

简易移动应用服务器

搭建一个简单的安卓应用的服务端。采用Struts2+hibernate的架构。IDE使用eclipse,数据库使用MySQL。

2016-07-26

VC的若干实用小技巧

VC的若干实用小技巧,借助于一些调试等的小技巧,可以让你轻松的完成VC的工作。

2013-10-06

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

TA关注的人

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