- 博客(46)
- 收藏
- 关注
原创 android编译错误AAPT: error: resource android:attr/lStar not found解决
最近flutter项目Android编译出现了错误,是突然之间编译不过,之前都是好的,错误信息如下:FAILURE: Build failed with an exception.* What went wrong:Execution failed for task ':app:processOfficialDebugResources'.> A failure occurred while executing com.android.build.gradle.internal.task
2021-09-03 13:01:00
34540
18
原创 Could not get unknown property ‘manifestOutputDirectory‘问题解决
今天早上更新Android Studio的gradle插件,后来编译的时候遇到了一个问题:Could not get unknown property 'manifestOutputDirectory' for task ':app:processDebugManifest' of type com.android.build.gradle.tasks.ProcessMultiApkApplicationManifest.后来解决了,是因为华为推送的一个插件引起的,classpath 'co
2021-06-28 17:16:17
4465
5
原创 30分钟学会Flutter动画开发
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数..
2021-06-07 20:33:44
1037
2
原创 flutter生成sha256用户签名的过程
class GenerateUserSign { static int sdkAppId = 123456; /* * 时间单位:秒 * 默认时间:7 x 24 x 60 x 60 = 604800 = 7 天 */ static int expireTime = 604800; static String secretKey = 'yourKey'; ///生成UserSig static genUserSign(String userId) {.
2021-06-07 14:44:19
1362
原创 Flutter系列之TextField限制数字输入
flutter的文本输入框TextField的设置项非常多,有时候会忘记怎么设置常用的输入限制项了,在这里罗列一下经常用到的一些设置项,免得大家去猜去记忆。
2021-06-04 14:36:12
8026
原创 Flutter系列之设置Dialog的宽度
Flutter中弹起对话框使用showDialog()函数,举个栗子:showDialog( context: context, builder: (context) { return Dialog( child: Container( color: Colors.white, width: 50, height: 300, child: Cent
2021-03-07 16:26:07
8198
2
原创 Flutter系列之设置Text文本的行高和间距
设置文本的行高和间距是很常见的操作,flutter中Text组件是通过设置TextStyle中的height来设置行高和间距的,让我们来看一下效果:class TextHeightTest extends StatefulWidget { @override _TextHeightTestState createState() => _TextHeightTestState();}class _TextHeightTestState extends State<TextHei
2021-03-06 22:04:21
26919
原创 Flutter系列之showDialog拦截返回键
Flutter中弹出对话框是使用showDialog函数,如果想拦截返回键,不想其点击返回键的时候消失,就要嵌套一层WillPopScope,示例代码如下:showDialog( context: context, barrierDismissible: false,//点击外部遮罩区域是否可以关闭dialog builder: (context) { return WillPopScope( onWillPop: () as
2021-03-06 20:56:18
3372
原创 flutter编译遇到unknown revision or path not in the working tree的错误
最近在Flutter的开发中,引入了几个第三方包,也就是插件,结果在iOS编译的时候,突然编译不过了,报错信息信息如下:Updating spec repo `cocoapods` $ /usr/local/bin/git -C /Users/zhouxp/.cocoapods/repos/cocoapods fetch origin --progress remote: Enumerating objects: 15, done. remote: Counting obje...
2021-03-03 23:12:30
7400
1
原创 Flutter系列之自定义实现圆角渐变进度条
flutter SDK提供的ProgressIndicator不支持圆角属性的设置,看起来不是很美观,系统自带的LinearProgressIndicator是这样的:这样的进度条显然无法满足UI设计师的要求,既然系统提供的进度条不支持圆角和渐变,那我们只能通过自定义view来实现了。先来看一下实现的效果:flutter是如何自定义view的呢,flutter提供两个类来实现自定义viewCustomPaint:在绘制阶段提供一个Canvas画布 CustomPainte...
2020-12-13 23:45:09
2826
2
原创 Flutter系列之设置TabBar的tab紧凑排列
我们在使用flutter的TabBar组件的时候会发现,TabBar当中的tab的是平分宽度的,因为TabBar中的tab是一个flex布局,如果你只有两三个tab,想让它紧凑排列,应该怎么办呢?要设置一个属性 isScrollable 为 trueTabBar( labelColor: Colors.black, labelStyle: TextStyle(color: Colors.black, fontSize: 14), unselectedLabelColor:
2020-12-01 22:39:07
9263
6
原创 Flutter系列之改变CupertinoSwitch的大小
在flutter中使用CupertinoSwitch,发现用Container无法改变它的大小,查看源码,发现它的宽高是有约束的。可以使用以下方式改变它的大小Transform.scale( scale: 0.8, child: CupertinoSwitch( value: _switchValue, activeColor: Colors.amberAccent, onChanged
2020-11-11 23:56:35
5601
1
原创 Flutter系列之自定义弹出dialog圆角
flutter自定义dialog是调用showDialog方法,return 一个Dialog或者Dialog的子类,如AlertDialog。默认Dialog是直角,如果要实现一个圆角的dialog如何做呢?看下图:实现方法:在Dialog下加一个shape属性,然后布局的Container加一个圆角DecorationshowDialog(context: context, builder: (context){ return Dialog( shape:
2020-09-13 21:28:11
3705
原创 flutter系列之自定义TabBar与PageView联动
TabBar + PageView可以说是flutter开发中的经典组合,所以谷歌也充分考虑了这一点,为开发者提供了非常轻松便捷的方式就可以实现TabBar和PageView的联动效果。说实话,原生开发TabBar + PageView还是比较麻烦的,但是flutter几行代码就可以搞定,而且还自带动画效果,还提供了很高的自定义方式。经典的TabBar是这样的:代码如下: TabBar( labelColor: Colors.blue,
2020-09-12 16:03:47
6236
1
原创 Flutter-pod repo update无法连接Failed to connect to GitHub to update the CocoaPods/Specs
flutter开发中的iOS版本是通过CocoaPods进行包管理的,类似于android的gradle。如果CocoaPods中的库太老了,编译运行的时候就会报错,提示你更新,报错信息如下:Error: CocoaPods's specs repository is too out-of-date to satisfy dependencies.To update the CocoaPods specs, run: pod repo updateError running pod ins.
2020-08-29 13:32:40
1072
原创 Flutter系列之Container宽度自适应
Container是flutter开发中最常用的组件,它有以下特点:1. 当Container没有child组件的时候,Container的宽高默认占满父控件,也就是全屏2.当Container有child组件的时候,宽高以child组件的宽高同等大小,也就是wrap_content当Container的child组件为Row或者Column的时候,要为主轴添加 MainAxisSize.min,否则Container在主轴上是铺满的。...
2020-08-02 22:33:12
46660
7
原创 Flutter系列之图片的声明和使用
图片或图标的展示和应用在app开发中是最基本的场景之一,今天讲一下Flutter图片的使用和加载方式。Flutter提供两个加载图片的组件,分别是AssetImage和NetworkImage,分别用于加载本地图片和网络图片。如果是加载本地资源图片,需要将图片的的名称加在pubspec.yaml文件中图片的声明:首先,在工程的根目录下面,创建一个images的目录,用于存放图片,图片的格式可以是png、jpg和webp,如图所示如果想不同屏幕分辨率使用不同的图,可以创建2x和3x的目
2020-08-02 12:56:17
1077
原创 EditText常见操作之监听键盘输入和搜索动作
EditText的常见操作,监听键盘输入和搜索动作EditText如果要在键盘上显示搜索按钮,需要在xml中加入这个属性: android:imeOptions="actionSearch"在代码中添加EditText的搜索按键响应:
2020-02-25 18:19:22
3031
原创 微信小程序页面返回会自动刷新数据丢失的问题
最近在开发微信小程序的过程中发现,当点击一个很深路径的页面时,再返回上一级页面的时候,上一级页面会刷新,数据丢失,原因是因为:微信小程序的页面层级最多五层,如果超过了五层,第五层的页面会被销毁,当页面回退的时候,上一级的页面需要重新创建,所以原来页面上的数据就会丢失。所以你可以使用redirectTo 来代替 navigateTo 关闭当前页面,跳转到应用内的某个页面。...
2019-12-10 19:46:52
5126
原创 微信小程序预览无法连接到服务器的几种情况总结
1、微信小程序发布线上要跟服务器进行通信,必须在微信开发者后台配置服务器域名,包括普通 HTTPS 请求(wx.request)、上传文件(wx.uploadFile)、下载文件(wx.downloadFile) 和 WebSocket 通信(wx.connectSocket)2、在开发调试阶段,可以在开发者工具中开启不校验请求域名、TLS版本及HTTPS证书选项3、小程序必须使用 HT...
2019-12-05 14:59:41
12766
2
原创 小程序开发常用正则表达式校验
在小程序开发中经常需要校验用户输入的身份证,手机号码是否合法有效,所以对JS常用的正则表达式做一个汇总,也欢迎大家评论补充,我会更新到博文中。身份证号码校验正则表达式:testIdCard(s) { var pattern = /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$|^[1-9]\d{5}[1-9]\d{3}(...
2019-12-03 10:38:21
2399
原创 Android打包出现Out of memory: Java heap space的问题解决
当android项目比较大的时候,打包时可能会出现Out of memory的错误,错误信息如下:Out of memory: Java heap space.Please assign more memory to Gradle in the project's gradle.properties file.For example, the following line, in the ...
2019-11-27 11:29:58
21905
2
原创 友盟推送自定义通知声音
友盟推送支持自定义通知声音,在Android8.0以下,就很简单:在您项目的res/raw/下放置命名为umeng_push_notification_default_sound。若无此文件,则默认使用系统的Notification声音在Android8.0以上机型,那就需要自定义通知了,因为android8.0以上的Notification引入了Channel的概念,声音是定义在Cha...
2019-11-21 15:47:37
3243
1
原创 Android NDK开发笔记四:Java和c/c++的相互调用
JNI的引入使java有了调用C/C++端代码的能力,然而在JNI中还有 一个非常重要的内容,那就是在C/C++本地代码中访问Java端的代码,一个常见的应用就是获取类的属性和调用类的方法,为了在C/C++中表示属性和方法,JNI在jni.h头文件中定义了jfieldId,jmethodID类型来分别代表Java端的属性和方法。 我们在访问,或者设置Java属性的时...
2019-11-21 00:00:24
622
原创 Android JNI开发笔记三:静态注册和动态注册
JNI的开发中,Java层的方法和C/C++层的函数之间的对应关系是通过注册来实现的,要不然它怎么知道java的方法到了c/c++去找哪个对应的方法呢?JNI的方法注册分为静态注册和动态注册。3.1 静态注册静态注册使用Java_PACKAGENAME_CLASSNAME_METHODNAME 来进行与java方法的匹配一般步骤如下: 1)编写java类,假如是JniTest.ja...
2019-11-11 00:19:57
421
原创 Android JNI开发笔记二:动态库和静态库
Android NDK种的动态库和静态库就是linux下的动态库和静态库,因为NDK的开发可以理解从基于Linux的开发。 在平时工作中我们经常把一些常用的函数或者功能封装为一个个库供给别人使用,java开发我们可以封装为jar包提供 给别人用,安卓平台后来可以打包成aar包,同样的,C/C++中我们封装的功能或者函数可以通过静态库或者动态库 的方式提供给别人使用。 Linux平台...
2019-10-26 15:12:08
1070
原创 Android JNI开发笔记一:JNI的基本概念和类型
JNI是Java Native Interface的缩写,通过使用 Java本地接口书写程序,可以调用C/C++代码,从Java1.1开始,JNI标准成为java平台的一部分。最简单的来说,JNI就是一套可以和C/C++相互调用的API,jvm就是通过大量的jni技术使得java能够在不同平台上运行。使用了JNI的一个标志就是native,如果一个方法被native修饰,那就说明这个方法是...
2019-10-26 14:58:26
385
原创 对微信小程序网络请求框架的再次封装
微信小程序的网络请求框架已经设计得很简单易用了,它是这样发起网络请求的:wx.request({ url: 'test.php', //仅为示例,并非真实的接口地址 data: { x: '', y: '' }, header: { 'content-type': 'application/json' // 默认值 }, success (re...
2019-10-24 10:06:13
812
原创 微信小程序腾讯地图坐标和百度地图坐标偏差纠正的解决方案
最近在做微信小程序的跟地图相关的项目,小程序使用的当然是腾讯自家的地图,而我们的后台使用的是百度地图的插件。结果发现,一座建筑物的坐标在后台用百度地图编辑好以后,传到小程序显示有很大的偏差。原来两个地图用的是两套坐标系,腾讯地图、高德地图用的是GCJ-02坐标,也就是国测局坐标系,而百度是自成一套,BD-09坐标系,所以相同地点在经纬度在两个坐标系是不一样的,或者说有偏移。解决方案如下:...
2019-10-21 22:29:11
8957
4
原创 Iteration can be replaced with bulk 'Collection.addAll' call 数组转成List的方法
字符串数组转换为List在我们开发中是一个很常见的操作,我们可能从SharedPreferences读出数据需要转换成list,很多时候可能是这样写的:public List<String> getHistory() { String historyStr = sharedPreferences.getString("history", null); if (histor...
2019-10-20 00:56:51
6077
1
原创 Android写一个通用的安全无内存泄漏的Handler
大家都知道,在很久之前,谷歌就发出警告This Handler class should be static or leaks might occur,不要在Activity中直接 new 一个Handler使用,因为这样创建Handler是一个内部类,会默认持有外部类的引用,就是Activity的引用,可能造成内存泄漏,类似于这样:什么情况下会造成内存泄漏呢?比如你在Activity中使...
2019-10-14 00:16:58
485
原创 Environment.getExternalStorageDirectory() is deprecated过时的替代方案
用新的Android SDK 29编译的时候,Studio提示Environment.getExternalStorageDirectory()过时了,要用Context#getExternalFilesDir代替,Android Q以后Environment.getExternalStorageDirectory()返回的路径可能无法直接访问,所以改成了Context#getExternalFi...
2019-09-20 20:00:47
32486
7
原创 Android图片压缩上传和解决上传服务器之后图片旋转的问题
Android图片上传是开发中最常见的应用场景,但是现在的手机摄像头像素都非常高,随便拍一张照片都在3~4M之间,分辨率也都在3000x4000左右,如此大的照片如果直接显示或者上传到服务器,体验都是非常差的,所以图片在上传之前,一般要做两次压缩,一次尺寸压缩,一次质量压缩。话不多说,直接上代码吧一、图片的压缩一般写一个工具类进行处理,我们起一个方法名就叫compress吧/** *...
2019-09-16 14:52:36
1665
原创 Android Studio升级3.5之后buildOutput.apkData must not be null的问题解决
其实每次Android Studio版本升级都有坑,抱着尝鲜的心态今天把AS升级到3.5之后,在使用Build => Generate Signed APK打包的时候,出现了一个错误:Caused by: java.lang.IllegalStateException: buildOutput.apkData must not be null at com.android.bui...
2019-08-28 10:54:29
5517
12
原创 友盟推送U-Push 6.0.1的集成和冲突问题解决
一、首先,在友盟后台申请应用对应的Appkey和Umeng Message Secret这两个在初始化友盟SDK的时候要用到,申请成功以后信息如下:二、在项目中集成友盟的SDK,在项目的gradle文件中写入友盟sdk的maven地址maven { url 'https://dl.bintray.com/umsdk/release' }在app模块下的gradle中添加友...
2019-07-24 15:12:16
3696
原创 Android史上最简单的沉浸式状态栏实现,不要再乱了
沉浸式状态栏,不用我说,大家都知道。就是让你的应用跟状态栏融为一体,视觉上体验更加完美。Android的沉浸式状态栏实现本来是挺简单的一件事情,但是大家有没有一种感觉,太乱了!本来还有一点思路的,看完网上一大堆的文章以后,更加的懵逼,感觉就是真TM的复杂。今天我就做一个最简单的总结,看完之后大家就知道怎么做了,不用那么复杂。沉浸式状态栏主要分三种版本情况(4.4以下版本不做考虑,保持原...
2019-07-14 18:07:36
3658
原创 运行程序报错instantRunSplitApkResourcesDebug\out\slice_1\resources_ap的问题解决
最近在开发项目中使用Android Studio运行项目,发现运行时报错,怎么clean代码和rebuild项目都没用,报错信息如下:Caused by: java.lang.RuntimeException: java.lang.RuntimeException: java.io.FileNotFoundException: E:\NewGit\testdemo\build\intermed...
2019-05-29 17:59:37
5736
3
原创 Android制作一个简洁的自定义ProgressDialog
ProgressDialog是安卓应用中常见的交互控件,在有网络请求的地方经常会使用到。如何自定义一个progress dialog是最基本的了,今天就制作一个简洁的ProgressDialog模板,以后可以直接拿过去修改成自己的风格,先看效果图:首先写一个dialog的布局文件<RelativeLayout xmlns:android="http://schemas.andr...
2019-04-28 10:35:24
1942
1
原创 小程序View点击响应传递多个参数
小程序开发中,view的点击事件是通过bindtap绑定的,比如: <view class='pay-button' bindtap='gotoDetail' id='{{item.id}}'>查看详情</view>在js文件中是这样获取参数id的:gotoDetail: function(e) { var id = e.currentTarget....
2019-04-13 15:27:37
4462
原创 TabLayout的使用和自定义红点消息提示
Tab+ViewPager可以说是Android开发中非常常见的布局了,以前实现tab布局一般使用LinearLayout或者HorizontalScrollView,还需要自己监听ViewPager的滑动。如果想实现比较顺滑的滑动效果,我们还需要自定义动画。在Android6.0之后,谷歌在design包中提供了一个widget叫TabLayout,TabLayout继承自HorizontalS...
2019-04-07 22:26:37
4128
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人