移动开发
Heynchy
这个作者很懒,什么都没留下…
展开
-
TabLayout 控件在app:tabMode=“scrollable“下,tabItem控件没有充满屏幕,却出现了点击滑动的现象
今天在设置TabLayout相关属性的时候,设置 app:tabMode="scrollable", 三个tabItem排列至屏幕的左半部,但是点击切换的时候,却出现了滑动的现象。经过仔细的测试,发现是因为在TabLayout中设置了android:padding="10dp";导致出现点击item会滑动的现象。处理方式: 移除padding设置,可以使用margin代替...原创 2021-09-01 20:53:57 · 812 阅读 · 0 评论 -
Parcelable进行序列化时为什么有集合定义的时候一定要初始化?
使用Parcelable 时 遇到有集合定义的时候,为什么一定要进行初始化呢?如图所示:解析: 因为如果不进行初始化,直接定义private List<Score> scores; 会出现如下错误信息:应该是反序列化过程中集合部分的读取出现了异常导致;导致使用intent进行数据传递时,数据传递失败;所以对于集合定义时一定要进行初始化;...原创 2021-01-28 15:28:05 · 178 阅读 · 0 评论 -
uni-app 初学常见踩坑问题
1. 项目运行至微信小程序,控制台提示渲染层错误,微信控制台提示websocket链接失败? 解决方式:先要扫码登录微信开发者工具。原创 2020-06-10 10:47:25 · 1316 阅读 · 0 评论 -
算法学习-给定数字n, 在{1,2,3...n}中任意组合成n位数(数字不重复),求第key小的位置上的组合数
题目:给定数字n, 在{1,2,3...n}中任意组合成n位数(数字不重复),求第key小的位置上的组合数字是多少? 例如:给定数字n =3,可以得到所有的数字组合为{123,132,213,231,312,321}, 那么第key=4位置上的数就是===》231代码实现与理解: 1. 根据key得出各个位置上的数字----在剩余数字--中的位置(从小到大) 例如...原创 2020-05-22 10:42:27 · 643 阅读 · 0 评论 -
基础算法-快速排序的理解与实现-Android版
快速排序:冒泡的进化版,根据某一值key, 将大于key 的往后放,将小于key的往前放;通俗结果就是最后key值左边的比key都小,key值右边的比key都大;在对两侧的序列单独进行key值比较交换,依次类推...代码的实现与理解: int a[] = {5, 3, 4, 8, 9, 1, 7, 0, 2, 6}; sort(a, 0, a.length - 1); for (int h = 0; h < a.length; h++) {原创 2020-05-14 16:28:38 · 224 阅读 · 0 评论 -
基础算法-归并排序的理解与实现-Android版
归并排序:采用分治法排序,先分后治; 将数组分成两个数列,再将左子数列分成两个数列,再将右子数列分成两个数列...直到每一个子数列只有一个数字; 然后就是治,也称为merge;将两个有序数列合并成一个有序数列的过程;代码实现与理解: int a[] = {2, 3, 5, 6, 9, 0, 4, 7, 8}; // 归并排序 sort(a, 0, a.length-1); for (int h=0;h < a.length;h +原创 2020-05-11 14:09:11 · 172 阅读 · 0 评论 -
基础算法-希尔排序的理解与实现-Android版
希尔排序:直接插入排序的进化版,又称为“缩小增量排序”; 根据key值,将待排序数列分成若干个子序列,针对每一个子序列进行直接插入排序;然后逐步缩小key值,直到key=1,此时即为直接插入排序;例如: a[] = {5, 3, 9, 6, 2, 1, 4, 0, 8, 7};假如key=5, 可知{5, 1}===>...原创 2020-05-08 15:02:18 · 233 阅读 · 0 评论 -
基础算法-插入排序的理解与实现-Android版
插入排序:从未排序的数组中选择一个数,插入一个有序的数组中;代码实现的重点就是找到该数字在有序数组中的位置,并插入代码理解与实现 1: int a[] = {5, 3, 9, 6, 2}; for (int i = 0; i < a.length; i++) { Log.i("ch...原创 2020-05-07 15:08:57 · 146 阅读 · 0 评论 -
基础算法-选择排序的理解与实现-Android版
选择排序: 通俗理解(从小到大排序),从需要排序的数组中找出最小值的角标,跟首位交换位置;依次类推,完成相关排序代码实现与理解: int a[] = {5, 3, 9, 6, 2}; for (int i = 0; i < a.length; i++) { Log.i("chy选择...原创 2020-05-07 11:11:33 · 164 阅读 · 0 评论 -
基础算法-冒泡排序的理解与实现-Android版
背景:冒泡算法是一个十分基础的算法,奈何自己脑子不好使,总也记不住,故做此文章,以便记忆。理解:冒泡算法的官方说明就不写了,通俗的理解就是每一轮进行--相邻两两比较--并把---最大的那个数----找出来放在最后;因为每一轮循环都会得到一个最大的数冒出来,所以称之为冒泡算法;写代码前有两点要理解: 1. 整个数组完成排序需要进行n-1轮比较:例如 int a[] = {...原创 2020-04-28 09:46:45 · 254 阅读 · 0 评论 -
某音短视频无水印下载APP的Android端实现
近日对于某音的短视频下载有个需求,借鉴网上大神的相关经验,写了个简单的无水印下载视频的APP。抖音视频无水印下载的Android端APP实现操作步骤1. 点击抖音视频的分享按钮,在下面的菜单栏中选择“复制链接”2. 打开该APP,将链接赋值到文本框中,然后点击下载即可,有简单的进度提示页面截图GitHub: https://github.com/heynchy/...原创 2019-12-18 11:08:31 · 2044 阅读 · 0 评论 -
面试题 9.1 用两个队列实现一个栈(Android版)
相关题目: 用两个队列实现一个栈思路分析: 整体的思想跟用两个栈实现一个队列,大同小异直接源码:/** * Author: Heynchy * Date: 2019/11/21 * <p> * Introduce: 用两个队列实现栈的操作 */public class StackUtil { private static LinkedLis...原创 2019-11-21 18:10:49 · 201 阅读 · 0 评论 -
面试题 9: 用两个栈实现队列(Android版)
题目: 用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail和deleteHead, 分别完成在队列尾部插入节点和在队列头部删除节点的功能。分析思路:1. 用栈完成队列形式的“先进先出”的逻辑。栈本身是“先进后出”的, 类似于将3包垃圾,放入垃圾桶,最先放入的就被压在最底下了,这就是栈。2. 而队列是先放入的要能先拿出来,类似于要将放入垃圾...原创 2019-11-18 16:36:16 · 181 阅读 · 0 评论 -
简单学习weex 的代码的三部分组成
weex 在开发过程中采用的是Vue 2.0 的单文件组件语法来编写代码的weex 代码的三部分构成:<template> <style> <script> No.1 template 1. vue 2.0的每个组件必须只有一个根元素 2. template只支持一个根节点,多个根节点无法被weex 正确识别和处理 3. 目...原创 2018-11-08 16:27:14 · 282 阅读 · 0 评论 -
面试题 5: 替换空格
题目:请实现一个函数,把字符串中的每个空格替换成“%20”。例如,输入“We are happy.”, 则输出“We%20are%20happy.”。整个字符串的替换在Java中有很多简便的方法,例如正则表达式。这里我们还是按照书上的方法来进行实现。将字符串看成是字符数组来进行相关处理。代码实现以及相关理解: /** * 替换空格 * * 方法...原创 2019-02-20 13:55:29 · 94 阅读 · 0 评论 -
链表初识(一): 在链表的末尾插入一个数据
链表是一种动态的数据结构,在创建链表时无须知道链表的长度。代码实现:/** * 链表的实体类型 */ public class ListNode{ int value; // 节点的值 ListNode listNode; // 类似于指针 public int getValue() { ...原创 2019-02-21 10:38:11 · 3478 阅读 · 0 评论 -
Eros 框架的问题分析——Android端下拉刷新的问题
问题描述: 当第一次进入界面并进行下拉刷新时,下拉或者上滑===》下拉刷新框会根据手指触屏的位置产生一段比较大的位移原因分析:Scroll 的 子项中(item中)的相关点击事件的ACTION_DOWN处于消费状态,即scrollView 中的触屏事件action_down不会被触发,造成y轴的初始化距离为0,导致计算过程中产生了距离误差源码部分: @Override...原创 2019-03-12 16:21:30 · 174 阅读 · 0 评论 -
Eros 框架的问题分析—— Android端输入框无法清空字符的问题分析与解决
问题: JS端Input 框再输入一段字符后,进行删除操作,表面上输入框中数据已经被清空,但是输入框的value中仍然保留最后一个字符,无法移除解决方案:---- 亲测有效 可以修改nexus/sdk 中AbstractEditComponent.java文件,包名:"package com.taobao.weex.ui.component"在该文件的addEvent()方法中...原创 2019-03-21 16:54:29 · 415 阅读 · 0 评论 -
基于Eros框架下Android端——网络请求个数原因导致闪退问题分析
问题:错误类型:java.lang.OutOfMemoryErrorLOG 日志:java.lang.OutOfMemoryError: pthread_create (1040KB stack) failed: Out of memory at java.lang.Thread.nativeCreate(Native Method) at java...原创 2019-03-25 10:29:02 · 408 阅读 · 0 评论 -
面试题6: 从尾到头打印链表---Android端实现
题目:输入一个链表的头节点,从尾到头反过来打印出每个节点的值。链表的定义: /** * 链表的实体类型 */ public class ListNode { int value; // 节点的值 ListNode listNode; // 类似于指针 public int getV...原创 2019-03-25 17:01:54 · 111 阅读 · 0 评论 -
面试题7: 二叉树基础知识 - 前序遍历(DLR), 中序遍历(LDR), 后续遍历(LRD) - Android 端递归实现
二叉树定义:/** * Author: Heynchy * Date: 2019/6/24 * <p> * Introduce: 二叉树的定义 */public class TreeNode implements Serializable { private TreeNode left; // 左子树 private TreeNode ri...原创 2019-06-28 14:04:19 · 1043 阅读 · 0 评论 -
面试题 7 :二叉树遍历-前序遍历(DLR),中序遍历(LDR),后序遍历(LRD)-Android端非递归实现
二叉树实体定义:/** * Author: Heynchy * Date: 2019/6/24 * <p> * Introduce: 二叉树的定义 */public class TreeNode implements Serializable { private TreeNode left; // 左子树 private TreeNode r...原创 2019-07-09 19:08:28 · 590 阅读 · 0 评论 -
面试题 8:二叉树的下一个节点----Android端的实现方式
题目:给定一颗二叉树和其中的一个节点,如何找出中序遍历的下一个节点?树中的节点除了有两个分别指向左,右子节点的指针,还有一个指向父节点的指针。(二叉树如下图所示) 中序遍历:{d,b,h,e,i,a,f,c,g}分析: 考虑中序遍历的特点以及下一个节点可能出现的情况1. 节点的左子树不可能有下一节点(中序遍历)2. 节点的右子树存在时,其右子树的最左子节点就是下一节...原创 2019-07-18 11:32:51 · 121 阅读 · 0 评论 -
面试题7: 重建二叉树---Android端实现方式
题目:题目:输入某二叉树的前序和中序遍历结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4, 7, 2,1,5,3,8,6},则重建如下图所示的二叉树并输出它的头结点。...原创 2019-07-16 14:58:04 · 223 阅读 · 0 评论 -
链表初识(二):找到链表中第一个含有某值的节点并删除该节点
由于链表的内存不是一次性分配的,因而无法保证链表的内存和数组一样是连续的。如果想查找某一个节点,则只有从头节点开始遍历,其时间效率为O(n);在数组中可根据下标来找到目标的元素,其时间效率为O(1); 如果想要找到某一节点的值或者某个数组位置存储的值,则时间效率都为O(n);代码以及相关说明如下: /** * 删除链表中的某一节点 * * @param...原创 2019-02-28 15:30:42 · 1102 阅读 · 0 评论 -
面试题 4:二维数组中的查找
题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。测试数组: 1 2 8 9 2 4 9 12 4 ...原创 2019-02-12 14:45:47 · 107 阅读 · 0 评论 -
面试题 3: 数组中重复的数字(三)
题目二:不修改数组找出重复的数字 在一个长度为n+1的数组里的所有数字都在 1~n 的范围内,所以数组中至少有一个数字是重复的。请找出数组中任意一个重复的数字,但不能修改输入的数组。例如,如果输入长度为 8 的数组{2,3,5,4,3,2,6,7},那么对应的输出是重复的数组 2或者 3。分析理解: 例如:{2,3,5,4,3,2,6,7} ===> 8 个数, 二...原创 2019-01-23 11:32:04 · 193 阅读 · 0 评论 -
Android开发学习:setDescendantFocusability(int i)的参数解析
问题:处理父布局与子控件之间的焦点获取关系举例: listView 中的item, 当有editText存在时会抢占item的焦点,使得点击item的事件不能够执行解决: 1. xml 布局中:设置descendantFocusability属性 2. 代码中:setDescendantFocusability(int focusability) 分析: 1....原创 2018-11-22 15:09:20 · 2274 阅读 · 0 评论 -
Eros框架学习------$event(发布订阅)
1. 事件的注册 this.$event.on(String type, JSCallback callback) 或 this.$event.once(String type, JSCallback callback) /** * 注册一个事件(hello),并设置其回调函数(result) * 当在其他页面触发该事件时,会执行回调函数的内容 ...原创 2018-11-16 15:23:49 · 394 阅读 · 0 评论 -
传说中的“睡眠算法”的输出分析
最近微博上的一个被大家称之为“睡眠算法”的排序方式,让人感到非常好奇。仔细一看才发现,写代码的人也是人才呀。 虽然说这种写代码的方式不能应用到实际开发中,但是身为程序员可以探索一下: 两个弊端: 1. 针对数字相差较小的,该算法不能正确输出,比如(3,1),依然会输出3,1 2. 针对数字较大的,时间有点长(蛮符合睡眠算法的基本思想)为了可以正确...原创 2018-11-14 18:31:06 · 3424 阅读 · 0 评论 -
查看APK包的versionCode和VersionName时遇到 bash: aapt: command not found 问题如何解决?
有时候我们需要查看已经打好包的apk的versionCode 和versionName, 可以通过aapt工具来进行操作: 1. 找到自己的Android sdk 的安装目录并进入某一SDK的版本(例如:28.0.0-rc1)中: 例如: D:\Android_studio\android-sdk-windows\build-tools\28.0.0-...原创 2018-11-12 16:19:31 · 4248 阅读 · 0 评论 -
Eros框架下页面跳转的实现
Eros 框架中提供了两种实现跳转的方式:一. 通过路由的固定接口实现跳转--------$router.open:跳转到一个页面 代码实现以及相关参数的的介绍: this.$router.open({ /** * params: Object 类型,需要传递的参数 */ params: { test: '...原创 2018-11-15 15:57:11 · 609 阅读 · 0 评论 -
基于Eros框架下的Android端的阿里云推送的集成库
eros-plugin-alicloud-push支持wxframework版本 <= 1.0.9版本如果您的wxframework版本 >1.0.9, 可前往:Eros-plugin-alicloud-push2基于Eros框架下的阿里云移动推送Android端的集成 1. 可以将接受到的消息或通知内容传递至JS端以便后续的处理 2. 可以指定某一消息的内...原创 2018-11-05 17:04:02 · 378 阅读 · 0 评论 -
基于Eros框架下的Android端友盟分享的集成库
eros-plugin-umeng-share基于Eros框架下的友盟分享集成(Weex与Android的交互): 1. 支持友盟带有分享面板的分享(包括微信,微信朋友圈,微信收藏,QQ,QQ空间,新浪微博,钉钉) 2. 可以选择分享的条目,例如选择分享至微信(微信, 朋友圈, 微信收藏) 3. 支持单一平台的分享,不带有分享面板,例如(分享至微信或分享至微信朋友圈)1....原创 2018-11-05 16:51:32 · 413 阅读 · 0 评论 -
基于Eros的Android端功能增强的工具类库
当前工具类支持--基础依赖包wxframework <= 1.0.9 的版本如果您的基础依赖包wxframework的版本 > 1.0.9 , 为了使该工具类继续可以使用, 可前往: Eros-plugin-android-extend基于Eros框架下的相关功能(weex 与 Android 的交互):Android端文件的查看,下载,预览基本功能 本地缓存大小的获取,...原创 2018-11-05 16:30:02 · 530 阅读 · 0 评论 -
Android TextView设置一个或多个关键字的颜色
TextViewUtil 的工具类:import android.text.SpannableString;import android.text.Spanned;import android.text.TextPaint;import android.text.style.ClickableSpan;import android.view.View;import java.u...原创 2018-06-12 11:39:27 · 801 阅读 · 0 评论 -
Android CompressImage图片压缩工具类介绍
CompressImage是集成图片的质量压缩,像素压缩以及基于Luban算法的图片压缩三种压缩方式的工具功能如下: 1. 质量压缩:从质量层面进行相关压缩(原图片可通过该工具压缩至小于期望大小的图片) 2. 像素压缩:设定固定的长和宽,然后进行压缩 3. 基于Luban算法的压缩: 类比微信将图片压缩至不失真的图片大小效果图: 1. 像素压缩:从质量层面进行...原创 2018-06-13 12:00:49 · 3461 阅读 · 0 评论 -
Android TabLayout宽度在平板上未铺满解决方案
具体的参数设置如下:1. 宽度一定要设置成 match_parent, 即 android:layout_width="match_parent"2. tabGravity设置成fill, 即 app:tabGravity="fill"3. tabMaxWidth设置成 0dp, 即 app:tabMaxWidth="0dp"4. tabMode设置成fixed, 即 app:tab...原创 2018-11-22 15:13:37 · 2329 阅读 · 2 评论 -
Android ImageView加载大图片工具类-------防止发生OOM
为了应对Android加载大图或者设置布局背景时,加载大图容易出现OOM的现象;具体的方法使用,代码的方法中有详细的注释import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.drawabl...原创 2018-11-22 15:25:35 · 485 阅读 · 0 评论 -
Android 百度OCR文字识别功能的简单集成
Github 链接:https://github.com/heynchy/BaiduOCR简单的了解一下百度OCR文字识别SDK的集成,环境的配置和相关接口的使用百度OCR通用文字识别功能介绍: 1. 通用文字识别功能(调用百度自带的UI方案)-----通用识别 2. 高精度通用文字识别功能(调用百度自带的UI方案)-----高精度识别 3. 对本地的图片进行识别Usage...原创 2019-01-22 15:04:44 · 1825 阅读 · 0 评论