自定义控件的三大方法:onMeasure()、onLayout()、onDraw() 里面是绘制的操作,可以看下其他的文章,下面来了解 onMeasure()和onLayout()方法。 测量: onMeasure(): 测量自己的大小,为正式布局提供建议 布局: onLayout(): 使用layout()函数对所有子控件布局 绘制: onDraw(): 根据布局的位置绘图 一、onMeasure()、测量protected void onMeasure(int widthMeasureSpec, int h...
阅读全文
我有AppBarLayout中具有视差效果的MapFragment,我想在AppBarLayout上禁用滚动,因为不可能在地图上移动,因为地图上的触摸偶数总是作为滚动事件处理. 我想通过仅滚动RecyclerView(位于屏幕底部)来处理AppBarLayout的折叠。 xml代码<?xml version="1.0" encoding="utf-8"?><androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/ap...
阅读全文
这篇文章主要介绍了Android 中 MD5 的几种生成方式,文中通过示例代码介绍的非常详细,Java 提供了 MessageDigest 类用来处理消息摘要算法,如 MD5 , SHA-1 和 SHA-256 等。对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。 1. Java 的标准实现 使用位运算进行进制转换。import java.security.MessageDigest;import java.security.NoSuchAlgorithmException; public class Hash { pri...
阅读全文
我的 Android 项目采用的是 AndroidX,我首先使用的是butterknife 8.5.1版本,报错,提示我用butterknife 9.0 以上,我使用butterknife 9.0,继续报上面的错误;解决方法:使用butterknife 10.1.0 即可,报错信息如下:The given artifact contains a string literal with a package reference ´android.support.v4.content´ that cannot be safely rewritten...
阅读全文
Flutter 开发快,性能好,值得一用,但很多项目已然有成堆的 Native 代码了,如何才能在已有的基础上接入 Flutter 呢? 新建 Flutter 用于混编 这和情况是已经有 Native 项目或是 Native 项目单独开发,想接入一个全新的 Flutter 项目。 使用 flutter create -t module xxx 方法新建 Flutter 项目,当然这里也可以使用菜单的方式新建,File --> New --> New Module --> Flutter Module。$ cd some/path/$ flutt...
阅读全文
什么是Viewport 手机浏览器是把页面放在一个虚拟的“窗口”(viewport)中,通常这个虚拟的“窗口”(viewport)比屏幕宽,这样就不用把每个网页挤到很小的窗口中(这样会破坏没有针对手机浏览器优化的网页的布局),用户可以通过平移和缩放来看网页的不同部分。移动版的 Safari 浏览器最新引进了 viewport 这个 meta tag,让网页开发者来控制 viewport 的大小和缩放,其他手机浏览器也基本支持。 Viewport 基础 一个常用的针对移动网页优化过的页面的 viewport meta 标签大致如下:<meta name=”vi...
阅读全文
通过文档,查到TextView下有这么个方法setLayoutParams(ViewGroup.LayoutParams params),但是ViewGroup.LayoutParams这个东西,并没有setMargins方法,LinearLayout.LayoutParams才有,这可咋办? 手册上这样讲public void setLayoutParams (ViewGroup.LayoutParams params), 『该方法提供一些参数给父视图,指定了该view在父视图中的位置。 如果需要动态改变TextView(或者其它View)的margin属性(...
阅读全文
对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序依次是(静态变量、静态初始化块)>(变量、初始化块)>构造器。我们也可以通过下面的测试代码来验证这一点:public class InitialOrderTest { // 静态变量 public static String staticField = "静态变量"; // 变量 public String field = "变量"; // 静态初始化块 static { System.out.println(staticField); ...
阅读全文
今天小编就为大家分享一篇Android开发图片水平旋转90度方法,角度可以自定义,这里的90只是举例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧。Android两种 旋转Bitmap方法,方法1. 利用Bitmap.createBitmap和方法2. 利用Canvas.drawBitmap。 方法1:Bitmap adjustPhotoRotation(Bitmap bm, final int orientationDegree) { Matrix m = new Matrix(); m.setRotate(orientationD...
阅读全文
一、ApplicationContextAware的作用 1、ApplicationContext是什么? 很多人都知道,ApplicationContext是我们常用的IOC容器,而他的顶层接口便是BeanFactory,ApplicationContext对BeanFactory做了拓展,功能更加强大。 2、ApplicationContextAware作用 在Spring/SpringMVC中,我们拿到IOC容器无非有三种方式,那就是使用ApplicationContext接口下的三个实现类:ClassPathXmlApplicationContext、Fi...
阅读全文
简介: 在Android API21,新添加了一个属性:android:elevation,用以在xml定义View的深度(高度),也即z方向的值。除了elevation之外,类似于已有的translationX、translationY,也相对应地新增了一个translationZ,用以在属性动画中动态改变Z值(使用View.setTranslationZ())Z = elevation translationZ 在引入了这个属性之后,主要影响有两个:影响View的阴影影响View相互阻挡顺序 1. 影响View的阴影 Z值会对View的阴影外观造成影响,...
阅读全文
这篇文章主要介绍了Java 对HashMap进行排序的三种常见方法,帮助大家更好的理解和使用Java,感兴趣的朋友可以了解下,首先来看看Map集合获取元素的三种常见方法keySet()、values()、entrySet()。 1. values(): 返回map集合的所有value的Collection集合(于集合中无序存放)import java.util.*; public class Main{ public static void main(String[] args){ Map<String, String> map = ne...
阅读全文
今天我们来看下BaseRecyclerViewAdapterHelper是如何实现多布局的。首先我们要实现多类型布局,我们的adapter不再是继承自BaseQuickAdapter类,而是继承自其的子类,BaseMultiItemQuickAdapter。而且数据源类型需要继承自MultiItemEntity,MultiItemEntity是一个接口,代码很少:package com.chad.library.adapter.base.entity;/** * https://github.com/CymChad/BaseRecyclerViewAdapterHe...
阅读全文
在Android项目中,按照MVC的分层,Activity和Fragment应该属于View层,用于展示UI界面,以及接收用户的输入,此外还要承担一些生命周期的工作。所以开发的时候我们经常把一些业务逻辑直接写在Activity里面,这非常直观方便,代价就是Activity会越来越臃肿,而在Activity中,把View和Controller抽离开来,而这就是MVP模式的工作了。 MVP模式的核心思想 MVP把Activity中的UI逻辑抽象成View接口,把业务逻辑抽象成Presenter接口,Model类还是原来的Model。这就是MVP模式,现在这样的话,Ac...
阅读全文
所谓依赖注入,其实就是给对象里的属性赋值,因为对象里有其他对象,因此就形成了依赖。Spring有4种方式来给属性赋值: 1. 构造方法注入 2. set方法注入 3. 自动装配 4. 注解 1. 构造方法注入 构造方法注入是指在构造方法中注入属性或者对象来实现依赖注入,如下所示,在标签中定义一个id为userDaoImpl的Bean,并通过注入了name为username,value为admin的值,注入完成后直接通过this.username获取到值admin。其中引用类型使用ref属性,基本类型使用value属性。 public class UserDaoIm...
阅读全文
系统中常用到的批量导入功能,根据Excel内容批量插入,这里实现获取上传的Excel内容,由于offer2003前和2007后的版本所使用的API不一样,这里也做了兼容处理,兼容2003和2007 1.引入maven包<!-- poi office --><dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.9</version>&l...
阅读全文
实际项目中,对于WebApi的访问不一定都在同一域名下,所以进行跨域访问的时候,可能会出现如下提示:请求的资源不支持 http 方法“OPTIONS”。需要对WebApi进行设置。 1、修改Web.config文件,在system.webServer节点下,新增如下代码<!-- 跨域访问配置 --><httpProtocol> <customHeaders> <!--相应类型(值为逗号分隔的一个字符串,表明服务器支持的所有跨域请求的方法)--> <add name="Access-Control-...
阅读全文
在我们日常的开发中,Redis是很常用的,常用的语言都有Redis的API,现在就来分享一下Redis的.NET C#写法和用法,下面开始介绍Redis在C#中的使用。在使用之前一点要安装和添加NuGet包 StackExchange.Redis (.net framework的环境最少是4.5),否则会报错。 安装好后我们在项目中添加一个helper类using StackExchange.Redis;using System;using System.Collections.Generic;using System.IO;using System.Linq;u...
阅读全文阅读更多
从一张图片中切出人脸区域是App开发中常用的场景,譬如,现在很多App用户上传头像的时候,喜欢随手自拍。自拍的图片往往在尺寸、位置上并不完美。而App需要在各种千奇百怪的UI场景下显示用户的头像。所以从原始头像图片中切取出人脸区域看起来是个刚需。这里介绍如何应用Android提供的人脸识别接口完成简单的切取人脸区域。 简单起见,输入为一个可能人脸的Bitmap,并且假定目标是识别出一个人脸而已。输出为一个以人脸为中心的原图的部分切图。如果需要自定义长宽比例,或者只需要定位人脸位置,来半侧切图,可以稍加改动实现。 Android官方提供的人脸识别api在andro...
阅读全文阅读更多
我们在编写 JS 代码时,经常会遇到逻辑判断复杂的情况。一般情况下,可以用 if/else 或 switch 来实现多个条件判断,但会出现一个问题:随着逻辑复杂度的增加,代码中的 if/else 和 switch 会越来越臃肿。本文将带你尝试写出更优雅的判断逻辑。 比如说下面这样一段代码:const onButtonClick = (status) => { if (status == 1) { sendLog(´processing´) jumpTo(´IndexPage´) } else i...
阅读全文阅读更多
项目里需要App端不断地从服务器获取数据,实时生成图表。在线程一个线程中不断的从服务器获取数据,然后在Handler中更新界面,每获取一个数据发送一个Message,Handler收到Message之后更新折线图。图表控件使用的是MPAndroidChart。自己写了一个实时更新折线图的工具类。希望有需要的盆友可以直接拿走使用。 1、实时折线图工具类import android.graphics.Color;import com.github.mikephil.charting.charts.LineChart;import com.github.mikephil...
阅读全文阅读更多
很多时候我们想把小程序radio和checkbox改成标签的样式,有木有感觉自带的有点丑?研究了很久,终于搞定,最终效果如下,样式可以随意修改,如果不喜欢这个样式可以自己再调整一下,颜色都可以随便改的。 wxml代码<view class=´title´>radio单选标签</view><radio-group bindchange="radioChange"><view class=´label´> <label class="ui-radio {{ite...
阅读全文阅读更多
小程序支付很常用,其实都是走的微信统一下单接口,因为经常使用,所以这里把自己写的小程序后端支付controller记录下来,文档参考微信支付官方文档,地址:https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_10&index=1,大家尽量配合微信的官方文档一起看代码,其实很简单的,无非是一个下单接口和一个支付回调的接口,需要注意的是这里需要导微信商户品台配置Native支付回调的接口地址。
配置方法
登录商户平台 --> 产品中心 -->...
阅读全文阅读更多