240 发简信
IP属地:贵州
  • 把Open JDK换成Oracle JDK试试。

    Android studio CreateProcess error=206, 文件名或扩展名太长 解决方案

    今天项目切到master后,突然运行不起来了,一直报CreateProcess error=206, 文件名或扩展名太长的错误 网上查了下,发现这个是因为window下使用I...

  • CreateProcess error=206,这个问题我是使用OpenJDK出现的,找了很多方法没解决,后来吧Open JDK换成Oracle JDK就好了。

    Android studio CreateProcess error=206, 文件名或扩展名太长 解决方案

    今天项目切到master后,突然运行不起来了,一直报CreateProcess error=206, 文件名或扩展名太长的错误 网上查了下,发现这个是因为window下使用I...

  • 找到了这篇博客有类似的介绍:https://blog.csdn.net/weixin_39723441/article/details/113411077

    如何将你的服务优雅的暴露出去

    这里的服务指的是接口API,在代码解耦中,有一种非常重要的方法就是“面向接口编程”,面向接口编程使得协作的模块之间只需要关注接口API,而无需关注API的具体实现。一套好的面...

  • 看到了网易云信SDK的影子:com.netease.nimlib.sdk.NIMClient、com.netease.nimlib.SDKCache、com.netease.nimlib.sdk.SDKOptions、……

    如何将你的服务优雅的暴露出去

    这里的服务指的是接口API,在代码解耦中,有一种非常重要的方法就是“面向接口编程”,面向接口编程使得协作的模块之间只需要关注接口API,而无需关注API的具体实现。一套好的面...

  • 可以参考网易云信SDK的代码

    如何将你的服务优雅的暴露出去

    这里的服务指的是接口API,在代码解耦中,有一种非常重要的方法就是“面向接口编程”,面向接口编程使得协作的模块之间只需要关注接口API,而无需关注API的具体实现。一套好的面...

  • @space0o0 包两次host,第三层的ViewPager2滑动结束后无法继续滑动第二层的ViewPager2,第三层的ViewPager2不包host的话则第三层的ViewPager2无法滑动

    ViewPager2 嵌套 ViewPager2 解决方案

    最近新业务要求,在ViewPager2 的item中,再放一个ViewPager2用来展示Banner效果。发现两个嵌套之后,内部的ViewPager2无法滑动,首先考虑的就...

  • 的确,我也遇到了3层嵌套的问题

    ViewPager2 嵌套 ViewPager2 解决方案

    最近新业务要求,在ViewPager2 的item中,再放一个ViewPager2用来展示Banner效果。发现两个嵌套之后,内部的ViewPager2无法滑动,首先考虑的就...

  • 哎,官方没给出3层嵌套的解决方案。。。

  • 关于对【CC BY-SA 4.0 知识共享许可证】 的理解及整理

    ***看了CC官网的[中文](https://creativecommons.org/licenses/by-sa/4.0/deed.zh)及[華語](https://cre...

  • Android 10 的外部存储文件读写被谷歌搞的老残,还好Android 11 回归传统

    Android 11 外部存储权限适配指南及方案

    前言 首先 Android 的权限大致分为三种: 普通权限:只需要在清单文件中注册即可 危险权限:需要在代码中动态申请,以弹系统 Dialog 的形式进行请求 特殊权限:需要...

  • 120
    Android 11 外部存储权限适配指南及方案

    前言 首先 Android 的权限大致分为三种: 普通权限:只需要在清单文件中注册即可 危险权限:需要在代码中动态申请,以弹系统 Dialog 的形式进行请求 特殊权限:需要...

  • Android原生股票图-中各指标(MA ,BOLL ,RSI,KDJ ,MACD)的计算公式

    Android原生股票图-分时图讲解(一)[https://www.jianshu.com/p/55b8cd35f583]Android原生股票图-分时图讲解(二)[http...

  • ///增加滚动支持,默认为IOS蹦弹效果:
    class ScrollDrawer extends StatefulWidget {
    const ScrollDrawer({
    this.color,
    this.elevation = 16.0,
    this.widthPercent,
    this.callback,
    this.physics = const BouncingScrollPhysics(),
    @required this.child,
    }) : assert(widthPercent < 1.0 && widthPercent > 0.0);

    final Color color;
    final double elevation;
    final double widthPercent;
    final DrawerCallback callback;
    final ScrollPhysics physics;
    final Widget child;

    @override
    _ScrollDrawerState createState() => _ScrollDrawerState();
    }

    class _ScrollDrawerState extends State<ScrollDrawer> {
    @override
    void initState() {
    if (widget.callback != null) {
    widget.callback(true);
    }
    super.initState();
    }

    @override
    void dispose() {
    if (widget.callback != null) {
    widget.callback(false);
    }
    super.dispose();
    }

    @override
    Widget build(BuildContext context) {
    assert(debugCheckHasMaterialLocalizations(context));
    final double _width =
    MediaQuery.of(context).size.width * widget.widthPercent;
    return ConstrainedBox(
    constraints: BoxConstraints.expand(width: _width),
    child: Material(
    color: widget.color,
    elevation: widget.elevation,
    child: SingleChildScrollView(
    physics: widget.physics,
    child: widget.child,
    ),
    ),
    );
    }
    }

    Flutter之drawer详细分析(你要的操作都有)

    1. 简介 这篇文章主要讲解有关drawer的一切。另:接Flutter相关项目,需要的私信或通过QQ:708959817,联系我 2. 初探 我们先来看看简单的drawer...

  • 教程很详细,感谢!我改了个版本,精简了代码,增加背景设置:
    ```dart
    class CustomDrawer extends StatefulWidget {
    const CustomDrawer({
    this.backgroundColor,
    this.elevation = 16.0,
    @required this.child,
    this.widthPercent,
    this.callback,
    }) : assert(widthPercent < 1.0 && widthPercent > 0.0);

    final Color backgroundColor;
    final double elevation;
    final Widget child;
    final double widthPercent;
    final DrawerCallback callback;

    @override
    _CustomDrawerState createState() => _CustomDrawerState();
    }

    class _CustomDrawerState extends State<CustomDrawer> {
    @override
    void initState() {
    if (widget.callback != null) {
    widget.callback(true);
    }
    super.initState();
    }

    @override
    void dispose() {
    if (widget.callback != null) {
    widget.callback(false);
    }
    super.dispose();
    }

    @override
    Widget build(BuildContext context) {
    assert(debugCheckHasMaterialLocalizations(context));
    final double _width =
    MediaQuery.of(context).size.width * widget.widthPercent;
    return ConstrainedBox(
    constraints: BoxConstraints.expand(width: _width),
    child: Material(
    color: widget.backgroundColor,
    elevation: widget.elevation,
    child: widget.child,
    ),
    );
    }
    }
    ```

    Flutter之drawer详细分析(你要的操作都有)

    1. 简介 这篇文章主要讲解有关drawer的一切。另:接Flutter相关项目,需要的私信或通过QQ:708959817,联系我 2. 初探 我们先来看看简单的drawer...

  • 楼主,你代码里注释错了,不是4.0、5.0、6.0,而是6.0、8.0:

    //6.0以下
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
    imei = getImeiOrMeid(ctx);
    }
    //6.0-8.0
    else if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
    Map imeiMaps = getImeiAndMeid(ctx);
    imei = getTransform(imeiMaps);
    }
    //8.0以上
    else {
    Map imeiMaps = getIMEIforO(ctx);
    imei = getTransform(imeiMaps);
    }

    如何正确获取IMEI及MEID

    在项目支持的时候,由于后台需要记录日志,而记录日志就或多或少的需要获得手机的IMEI来做标示。在安卓系统版本的迭代情况下,获取IMEI方式会遇到很多问题。下面通过代码来演示如...

  • @coolstar1204 老铁,你是怎么实现的,是不是通过EventBus+JavaBean下沉到组件服务中心?

    App组件化与业务拆分那些事

    前言 最近事情比较多,2个月没写文章了。看笔者圣诞节还在写技术文章,就知道程序猿的生活有多惨淡。 上几篇单元测试的文章,笔者已经把大部分思路讲给大家听了,如果在开发中有新的思...