- 博客(312)
- 资源 (15)
- 收藏
- 关注
原创 Material Design 进阶(十一)——Chip,ChipGroup,ChipDrawable使用
Chip 可以被放置在 ChipGroup 中,以实现流式布局。该组件合 RadioGroup 很相似,都是用来管理多个子 View 的,可以控制内部子 View 的布局方式。Chip 没有像其他组件一样具有 4 个参数的构造函数,因为它扩展了不支持 4 参数构造函数的 AppCompatCheckbox。但是你可以使用不同的方式。通过xml添加比较简单就不再阐述。重点关注下动态添加,可以为以后做复杂的布局效果做铺垫;
2024-01-14 23:39:55
2031
1
原创 Materail Design 进阶(十一)——MaterialButton使用
距离上次写Material组件的文章已经过去了好多年😄,最近在写Flutter又接触到了Material,已经升级了许多,这次就用新的组件来试试吧~Button组件大家都非常熟悉了,如果画一个带圆角,边框的按钮,通常我们是画一个ShapeDrawable并把它设置到Button的属性中就可以了,写写文件有时还是烦的,这里首先推荐一个三方库BackgroundLibrary可以很方便的通过属性设置的方式实现圆角,边框以及各种状态效果的Background,使用非常简单,有兴趣的同学直接参考文档即可。,在原来
2024-01-05 23:57:09
1461
原创 Flutter——环境搭建(MAC版)
文件,比如,在 Linux 和 macOS Mojave 或 Mojave 之前的系统里,是默认使用 Bash 的,所以需要修改。下载完成后,新建一个你期望存放sdk的目录,然后将下载的压缩包直接解压得到fluter文件夹;请知晓,如果你使用不同的 shell,文件目录或文件名可能会有所不同。,如果使用zshrc步骤跟下面的一样,就把文件名换下就可以了)如果电脑上面存在这个文件,可以直接输入下面地址打开。(1) 启动终端(可以在任意目录下打开)(2)编辑:在文件中配置。(3)关闭即可保存修改。
2023-12-25 10:39:23
1499
原创 Vue——formcreate表单设计器自定义组件实现(二)
本次要实现的自定义组件是一个表格,表格在前端是个十分常见的组件,然而formcreate里面却没有内置,我翻了issues里面有大佬说可以直接用VxeTable来做,做不做内置都是一样的。于是沿着这个思路自己做了一番实践最终也实现了两个版本,一个是Element Table简易版,一个是VxeTable的高度定制。下面就具体说说实现方法,以及其中遇到的一些问题和解法。
2023-08-04 17:25:20
4444
4
原创 Vue——printjs打印el-table,echarts等打印不全,异常解决
这条同样可以解决echarts不能打印问题,算是万能之法了吧,相对前面几种方式赶紧这个方法最简单,打印效果也比较理想。
2023-03-31 15:44:35
11867
10
原创 Android Bugs——DialogFragment.showNow:Can not perform this action after onSaveInstanceState
那么DialogFragment的show方法是否也可以按照此思路去修改呢,答案是肯定的。在 Activity 被销毁之前被调用来保存每个实例的状态,这样就可以保证该状态能够从。activity的onSaveInstanceState方法中会调用。,所以报错原因就不言而喻了,那么下面说下解决方案。我们都知道Fragment的事务提交有两个方法。方法,来进行Fragment的状态保存,这两种情况都是在存储状态后调用了。,用来标识状态已被保存过。好,下面回到我们报错的地方。等方法,这些方法会调用。
2023-03-16 09:39:43
1064
原创 Threadtear反混淆工具的使用
开发过程中,我们已经会遇到一些三方库没有开源的情况,有时需要参考其中的一些代码,我们就需要对其进行反编译才能查看。有时还会遇到代码已混淆的情况。本文主要介绍如何使用Threadtear对已混淆的jar包进行反混淆。
2023-02-05 23:07:52
2811
转载 Android——Fragment 布局使用 fitsSystemWindows = true 无效解决方案
最近遇到一个奇葩问题,导航栏多个Fragment沉浸,fitsSystemWindows = true只在一个Fragment有效,其他Fragment都是无效的(即:toolbar和状态栏重叠)这种问题产生的原因:当第一个Fragment添加到Activity中的时候,Activity寻找出有fitsSystemWindows的子布局为其预留出状态栏的空间,其实就是设置一个padding,而其他Fragment添加到Activity中的时候,因为状态栏空间的适配已经被消费过一次了,Activity并不会
2022-05-24 15:08:10
2012
原创 Android——Gradle自动打包上传蒲公英并进行钉钉群提醒
开发测试阶段频繁打包未免太过枯燥,自动打包发布解放双手。上一节我们分析了fastlane打包发布的过程,嗯~总体来说有点繁琐,而且Android使用fast lane自动打包网上资料比较少,出错之后解决难度颇大。所以今天我们来用一种更简便的方式进行自动打包发布。1、Gradle自动打包发布蒲公英蒲公英上传Apk官方文档apply from: './dingding.gradle'//引用钉钉通知方法def apkFileName = "${buildTime()}_test_v${rootPr.
2022-05-13 16:08:53
2581
转载 Android——String.format()方法使用
format格式说明符语法: %[argument_index$][flags][width][.precision]conversion 语法解析:[argument_index$]: "1$" 第1个参数[flags]: "0" , "" 填充字符,数字用"0"或"",字符串用""[width]: "10","-10" 最后总宽度10,正数表示在前面添加,负数表示在后面添加。负数的情况一般只在字符串时才用[.precision] : ".3" 小数
2022-05-04 10:43:31
4775
原创 Android bugs——Caused by: android.support.v4.app.Fragment$InstantiationException
Error:Caused by: android.support.v4.app.Fragment$InstantiationException: Unable to instantiate fragment xxx: make sure class name exists, is public, and has an empty constructor that is public原因:当切换到其他应用时,会调用FragmentActivity的onSaveInstanceState方法,再次进入,A
2022-05-03 20:20:06
1391
原创 Android——横幅通知
横幅通知,也称为提醒式通知,效果如下图:这个效果在QQ,微信,钉钉等一些主流的App当中,大家一定很熟悉,今天就来说说如何实现。可能会触发提醒式通知的条件有如下3种:用户的Activiity处于全屏模式(应用使用fullScreenIntent)通知的优先级很高,且在搭载Android 7.1(API级别25)及更低版本的设备上使用铃声或震动。在搭载Android 8.0(API级别为26)及更高版本的设备上,通知渠道的重要程度比较高。但是现实往往是残酷的,当你按照要求照做之后发现8.0以
2021-06-25 18:00:39
8426
1
原创 Android——友盟自定义通知声音
最近接到一个需求,如题,给友盟推送添加定制化声音。描述很简洁,由上图可知,本次需求的重点工作是8.0以上版本的兼容问题。友盟给出的示例代码如下:由以上代码可知,其实就是设置一个自定义Notification,但是以上代码用在8.0以上系统中并不可行。原因大家应该都清楚了,8.0以上通知栏新增了一个NotificationChannel的特性,如果没有设置channel通知渠道的话,就会导致通知无法展示。设置本地声音现在再来回到我们本次需求的重点:定制声音。通过以上分析我们已经知道了友盟自定义声音
2021-05-19 17:51:10
1796
1
原创 Android Studio4.1采坑之行
最近升级了AS4.2版本,结果发现各种问题,折腾了一圈又回退了,特来记录下这次采坑之旅,升级要谨慎啊哈哈哈哈。前几天新写一个应用就准备AS升级了一起使用最新版本的库。结果发现GsonFormat插件和Butterknife插件都不能用了,而且,代码高亮也没有了。。。针对这些问题广大网友也给了一些建议,删除报错的插件。可是这让一个习惯了使用这两个插件的我怎么办,怎么想怎么难受。后来又看到有网友说可以直接安装AS4.2的Beta版,可以使用Butterknife插件,我尝试下载4.2版本之后发现并没有解决这
2020-12-09 21:52:39
1202
3
原创 Android——RecyclerView.scrollBy源码分析
最近有个需求是RecyclerView左右滚动时,如果焦点View超过屏幕中间就把焦点View滚到屏幕中间。实现思路为获取焦点View在屏幕上的坐标,并根据屏幕宽度/2来计算滚动距离。代码如下:FocusLinearLayoutManager layoutManager = (FocusLinearLayoutManager) provincesList.getLayoutManager();int firstVisiblePos = layoutManager.findFirstVisibleItem
2020-05-28 17:50:28
2294
转载 Android——按键事件KeyEvent的分发处理流程解析
前言这次打算来梳理一下 Android Tv 中的按键点击事件 KeyEvent 的分发处理流程。一谈到点击事件机制,网上资料已经非常齐全了,像什么分发、拦截、处理三大流程啊;或者dispatchTouchEvent、onInterceptTouchEvent、onTouchEvent 啊;再或者返回 true 表示消费,返回 false 不处理啊;还有说整个流程是个 U 型分发处理,什么总经理...
2020-01-03 18:39:29
8844
原创 Android bugs——RecyclerView scrollToPosition不会触发scrollListener?
首先说明下我遇到这个问题的背景吧。Android Tv开发中常常会遇到RecyclerView初始化时焦点位置不为0的情况,比如,推荐一个节目集,希望给用户展示上次观看的集数,这时我们的初始化焦点位置大于0,焦点view可能在当前屏幕内,也可能不在当前屏幕内,如果当焦点view不在当前屏幕内,主动获取焦点则会失败,我的解决方法是让焦点view滚动到屏幕可见范围内,滚动结束再获取焦点。这时就需要...
2019-12-27 11:44:22
6614
2
转载 Android——详解Paint的setPathEffect(PathEffect effect)
一、setPathEffect()这个方法一看就和path有关,顾名思义,它就是给path设置样式(效果)的。PathEffect这个路径效果类没有具体的实现,效果是由它的六个子类实现的:这六个子类分别可以实现不同的路径效果:下面,我们来用代码来具体实现一下。二、测试代码2.1 代码框架首先初始化paint和path,然后配置相关属性,最后作画。package com.kale.c...
2019-11-19 18:47:40
1801
转载 Android——TextView 富文本之 ClickableSpan
前言ClickableSpan可以让我们在点击TextView相应文字时响应点击事件,比如常用的URLSpan,会在点击时打开相应的链接。而为了让TextView能够响应ClickableSpan的点击,我们需要为它设置LinkMovementMethod,但是这个LinkMovementMethod又有着很大的坑,接下来就总结下这些坑和我的解决办法。LinkMovementMethod的坑...
2019-11-19 18:35:34
2247
原创 Android——TextView实现虚线下划线并支持点击
效果图如上图,大家可以看到今天要实现的功能主要有虚线下划线和点击文本。下面我们来分别分析下实现原理和知识点,最后给大家放上关键代码。虚线下划线给文本添加下划线相信大家都会,这不就是富文本的内容吗?提到富文本大家可能会想到SpannableStringBuilder。ClickableSpan的默认效果就是带下划线。但今天我们的目标是虚线下划线,所以我们可能要自己手动改造下了。这里我采用的是...
2019-11-18 18:36:10
3283
原创 Android——字母轨迹动画
今天我们要实现一个如下图的轨迹动画:首先我们来分析一下实现原理,大致就是做一个字母移动路径动画,但仔细观察会发现字母移动过程中字母大小跟要拼接的单词的大小相同;同时我们会发现我们不能直接移动字母列表中的字母这个view,移动之后这个字母项就没有了,显示为空白,所以我想我可以再画一个单独用来移动的字母的view,让这个单独的view来执行轨迹动画。这样就可以解决字母item被移走的问题了。好了,...
2019-11-14 11:23:19
948
原创 Android——仿钉钉,微信,QQ群头像
效果功能生成类似钉钉、微信 群聊组合头像Bitmap多图拼接展示(目前最多支持九张图)可图文混合展示可展示成圆角、方角、圆形可自定义分割线宽度、颜色、背景色、文字大小颜色等实现attr.xml <declare-styleable name="AvatarImageView"> <attr name="avatarType" format=...
2019-09-03 18:09:17
941
原创 Tomcat服务器一闪而过调试
正常情况下是启动完了是这样子的:但有时会出现启动服务器一闪而过的情况,也没有日志这导致我们束手无策。下面叫大家如何打开启动日志,方便快捷定位问题。1、先记事本打开startup.bat,找到最后一句话::end,我们知道end表示结束的意思,:end是一个标记,我们在后面加上一句pause (暂停等待的意思);2、再次执行startup.bat,就会看到如图,当我们按任意的键时cmd窗口...
2019-09-03 16:36:07
224
原创 Android——自定义环形音量调节控件
今天同样是练习自定义View的一天,今天实现环形音量调节控件,下滑增大音量值,上滑减小音量。然后里面还做了一点仪表盘绘制的扩展,代码在注释里面。attrs.xml <declare-styleable name="CircleVolumeView"> <attr name="choiceColor" format="color|reference" /&g...
2019-08-09 16:00:31
714
原创 Android——自定义音量调节控件
今天我们要实现一个上图中音量调节的效果。主要有两种实现方式自定义RatingBar和自定义View。自定义RatingBarvolume_rating.xml<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@android:id/ba...
2019-08-08 16:57:08
2811
3
转载 Java——双向map BiMap
BiMap是guava中一个有用的集合类型,很简单,它就是一个双向的映射。反向转换一个Map一个普通的map是一个key/value的集合,你可以使用key来查询value,例如,我来创建一个字段: ·Map<String,String> britishToAmerican = Maps.newHashMap(); britishToAmerican.put("auberg...
2019-08-08 10:27:16
13400
转载 Android——TextView的文字长度测量及各种padding解析
这篇博客会讲得比较杂:TextView里各种padding的含义?如何计算每行文字的长度?设置android:maxLines="1"和android:singleLine="true"有什么区别?为什么设置android:maxLines="1"时TextView的跑马灯效果就不能正常工作?TextView里各种padding的含义?虽然我们平时只用TextView显示纯文本数据...
2019-08-07 17:59:00
1930
原创 Android——SpannableString实现带圆角标签效果
本节是对以往章节的一个复习练习,用到的知识前面已经提到过,不知道的同学请参考前几篇文章。Android——SpannableString字体大小不一致垂直居中今天要实现的效果图如下:RadiusBackgroundSpanpublic class RadiusBackgroundSpan extends ReplacementSpan { private int fontSize...
2019-08-07 15:57:39
1582
原创 Android——SpannableString上标,下标垂直对齐
在上一节中我们已经了解,SuperscriptSpan和SubscriptSpan可以实现上标和下标效果,但是不可以改变大小,且显示位置固定。今天我们要实现的效果如下:TwoScriptTextSpan .javapublic class TwoScriptTextSpan extends ReplacementSpan { private int fontSize = -1; ...
2019-08-07 14:46:09
975
原创 Android——SpannableString实现顶部对齐(上标,下标)
上面两张图,大家应该很熟悉这就是上标和下标的效果,实现代码如下:上标:代码1:SpannableString ss = new SpannableString("RM123.456");SuperscriptSpan superScriptTextSpan = new SuperscriptSpan();ss.setSpan(superScriptTextSpan, 0, 2...
2019-08-06 18:58:38
4050
原创 Android——ImageSpan图片和文字实现垂直居中
默认情况,图片是底部对齐,如下图: 这里先抛出一个问题,怎么获取TextView最终显示的高度???由于上面那个问题我还没有找到答案,所以本节暂时以两个情况来分析,如何实现图片文字垂直居中。1、图片高度大于文字高度:这时,我们不需要处理图片,只需要处理文字显示的位置即可,可以使用上一节(Android——SpannableString字体大小不一致垂直居中)中的VerticalAlig...
2019-08-06 17:20:18
5347
1
原创 Android——SpannableString字体大小不一致垂直居中
用SpannableString来实现TextView的富文本效果(改变字体大小,设置颜色,设置图片,设置超链接效果等等),大家应该都已经用过很多次了。这里不再详述,今天我们主要讨论,当TextView中的文本字体大小不一致时如何垂直居中。首先,我们需要明确TextView绘制的基本度量标准,如下图:各个字段的具体解释可以参考这篇文章,写的非常详细。https://blog.csdn....
2019-08-06 15:48:58
8550
4
原创 Vue——自定义项目访问路径
默认情况下,Vue项目的访问路径以 /#/,但我们有时候可能需要给项目定义一个明确的访问路径,如 /my_vue/ 等,这时我们需要修改配置,自定义项目的访问路径,方法如下:1. 在index.html添加 <meta base=”/pay/”> (pay自定义的名称)<!DOCTYPE html><html> <head> &...
2019-08-02 15:55:49
28014
5
原创 iView——表单校验是否为空填坑
最近转岗去做了vue开发,然后使用的UI框架是iView,总体来说iView,elementUI都差不多,内容丰富使用方便,可是可是挖的坑也不少,尤其是有些功能的使用方法介绍不全,一笔带过,需要自己摸索,这不,最近遇到一个匪夷所思的问题。大家都知道表单校验中最基本的一条就是是否为空的校验。这个官网给出了例子,我们来看下:ruleValidate: { name: [ ...
2019-02-20 18:14:12
7875
2
转载 VUE-——vue-cli 搭建的项目处理不同环境下请求不同域名的问题
使用 vue-cli 开发项目过程中, 根据开发环境和正式环境不同, 我们往往需要请求不同域名下的后台接口, 这时候, 该怎么去设置, 达到同一种写法可以根据环境不同而自动切换请求域名呢? 本文将会介绍两种配置方式。本文中所有请求都是使用 axios一、设置多种开发环境域名修改 config/dev.env.js (开发环境的配置)'use strict'const merge = re...
2018-10-15 11:24:04
2824
转载 VUE——项目打包发布
打包大家都知道使用npm run build进行打包,这个时候你直接打开dist/下的index.html,会发现文件可以打开,但是所有的js,css,img等路径有问题是指向根目录的,此时需要修改config/index.js里的assetsPublicPath的字段,初始项目是/他是指向项目根目录的也是为什么会出现错误,这时改为././ 当前目录…/ 父级目录/ 根目录根目录:...
2018-10-15 11:17:23
1332
原创 JS——数组与对象的遍历方法大全
文中的范例基于以下数组和对象。var arrTmp = ["value1","value2","value3"];var objTmp = { aa:"value1", bb:"value2", cc:function(){ console.log("value3") }}javascript遍历的常用的遍历方法是for循环和for
2018-10-11 16:07:02
411
转载 Vue——插件的两种实现方式
为什么要使用Vue插件?随着项目编写的进行,代码量越来越多,重复的内容随之增加,比如每个页面可能都会有Toast提示,用户交互的每个操作都可能有提示框,同个项目中这些提示的样式都是统一的,那么我们没必要每个页面每个交互动作都写一个提示组件,我们可以创建一个通用的组件(全局组件),然后再每个需要的地方调用,减少代码量,简化代码结构,同时如果有新的UI需求需要修改也方便快捷,只需修改全局组件即可。...
2018-09-29 15:56:59
26394
适配高版本Android Studio的Lombok插件
2023-05-30
Android——SeekBar动态显示进度
2017-10-26
MaterialDesignExample
2017-07-20
基于Android的viewpager使用方式全解
2016-04-27
驾考app开发源码
2016-04-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人