- 博客(65)
- 收藏
- 关注
原创 手把手教你实现:将后端SpringBoot项目部署到华为云服务器上
前提:有一个后端项目,项目能够运行在本地,可以通过本地访问(localhost)一个基于SpringBoot的后端项目最后就是你正常访问你的后端项目API了。接口域名:http://124.71.83.237:8080接口路径:/register请求方式:POST请求体参数:返回结构:"message": "操作成功","data": []
2023-09-26 17:24:01 3669 2
原创 Android 应用内下载 APK Demo(Kotlin语言)
downloadLink就是APK下载地址,apkProgess通过回调方式返回。权限检测、通知栏生成进度、实时进度反馈、下载完成自动安装、通知栏点击安装。
2024-07-26 16:43:12 531
原创 Can not add resource (com.android.aaptcompiler.ParsedResource@a980fbb) to table
就是res目录下面的values目录下的文件。以及!以及!你所引入的其他依赖(第三方库)的values.xml文件。
2024-05-14 09:43:43 1074
原创 应用开发技术巩固指南
起初毕业前夕,个人已经开始自学Android开发,由于没有指导,所以起步很难,写的代码也规范,逻辑不清,技术止步于皮毛,很多东西都不理解。后来步入工作,逐渐熟悉了这个方向,在成都做了一年半的Android开发。在这一年半里,理解了基本的开发技术,掌握了应用前端的开发能力,综合收获的话就是了解了Google 的 Jet Pack库, compose等。后来由于种种原因,离开成都,去了深圳。深圳前半年,在一家借贷公司做马甲,毫无技术突破可言,所以我跑路了。
2024-03-13 11:05:53 433
原创 Android APK包反编译为java文件教程
流程: test.apk -> smali文件 -> dex文件 -> jar文件 ->java 文件。这些就是反编译后的java文件,如果没有混淆的话,可以较好阅读,如果混淆了,那么阅读起来将会十分困难。下载 smali工具 2.1.2版本,用。因为高版本会解压失败。
2024-03-01 16:08:16 2081 1
原创 手把手教你实现:Android注册登录功能,通过本地服务器保存用户账号密码到数据库
新建一个RegisterController.java, 在这里定义用户Call 注册API时的处理逻辑。
2023-07-21 18:15:41 2199
原创 Weex开发中,实现Vue组件导入Android原生控件,实现Android控件与vue组件的相互通信,以及通信回调
我们在一个Vue文件中定义了一个组件,组件自己会管理自己的状态,但有时候我们希望子组件的一些交互操作事件能否往上抛,告知父组件,这时需要使用$emit(事件名, 数据)。开发中我们可能需要调用原生的一些方法,比如调用相机,请求权限,存储数据到sharepreferences等,这些不是View的UI界面,那么我们需要通过定义。当Vue使用原生组件时,很多逻辑都在原生组件中处理,如果我们希望原生组件主动发送事件通知给Vue组件,// result就是原生传过来的maper。// 调用原生组件的方法。
2023-05-31 16:41:33 1190
原创 Weex中,关于组件的水平排列竖直排列居中对齐居左对齐居右对齐低部对齐顶部对齐布局对齐说明
父组件一定要有足够的宽高才能看到效果,要是宽高不够,那怎么样对齐都是一个样子的。flex属性就是子组件在父组件中排列的所占权值。影响 子组件 排列方向的。影响 子组件排列方向。
2023-05-25 17:32:59 1073
原创 Kotlin,Room插入数据时,id使用自动生成,如何进行数据model对象的实例化?
我们使用Room库,往表中插入数据Model时,我们已经添加注解设置了Model的属性xxId作为自动生成的id。那么也就是说,我们需要手动实例化一个Model对象出来,而xxId本身就是作为这个Model的属性,所以我们不得不实例化时,传入一个xxId进去,这也就失去了自动生成的效果。两种方法的实现可能都不是很妥, 因为xxId唯一的,不可为空的。但你可能会说,“虽然我们声明定义的xxxId是可空的,但是插入表时,room会自动生成一个增加1的Id,也就不会有空的情况了。”
2022-11-02 18:36:53 2003
原创 Map和FlatMap的相同点和区别
首先,我们看一下map, map是集合接口Iterable的一个扩展函数,它有两个泛型 T和R, T是集合接口容器包裹的元素数据类型,以上面的例子就是List, R 是lambda表达式的返回类型,也是map操作后所得到的集合容器装载元素的数据类型,以上面的例子。flatMap也是一样的,是集合接口Iterable的一个扩展函数,操作符需要传入一个lambda表达式,不同的是这个lambda表达式的返回值是一个 集合接口类型(list, set等)。
2022-09-23 15:35:01 3713
原创 Android, 关于ViewModel的一些使用小技巧。
情景app使用了navigation组件,用一个Activity装载了多个Fragment,通过Fragment间的跳转来实现页面间的切换。当 界面有A fragment 跳转到 B fragment时, 会将部分参数字段传递给Fragment, 同时Fragment会将拿到的字段告知 viewModel, 让viewmodel 拿着参数字段去请求调用下一层…等等,用于获取到界面所需要的数据,比如是服务器remote数据,或者是本地Local数据。当数据获取成功后,会回调通知viewmodel, vi
2022-05-09 17:48:51 1299
原创 Android控件底部边框一条固定长度的线绘制
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:state_selected="false"> <shape> <solid android:color.
2022-03-26 16:50:12 4562
原创 Android父布局上方上边框阴影实现。
设置父布局背景阴影本质上就是灰色的渐变,其中包括了颜色渐变和透明度渐变的组合。<?xml version="1.0" encoding="utf-8"?><layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape android:shape="rectangle"> <padding
2022-01-12 15:36:37 2529
原创 Android, RecyclerView可展开Item,可折叠Item,地址选择。
懒得写文章了看效果:关键代码(利用recyclerview插入以及移除item的方式实现): override fun openState(areaParent: AreaItemView, position: Int) { if (areaParent.child != null && areaParent.child.size > 0) { mListData.addAll(position + 1, areaParent.child
2022-01-09 16:11:06 1766
原创 有个小问题
插入一个与主题无关,近期遇到的问题app启动外部浏览器,打开某个URL时,触发【link启动app】的效果。具体操作在AndroidMainifest.xml文件中注册一个活动TargetActivity,允许带有指定 scheme、host的链接启动app。比如这个:...
2022-01-06 14:41:03 860
原创 应用内评价
前言目前Android应用的用户评价方式一直是让人困扰。一般来说,app用户基数庞大,但app评价数量却难以有一个好的转化。app评价量少,容易造成app的质量与评价方向不对等的情况。一般App评价功能的实现自定义一个界面美观的弹框。询问用户评价意愿。同意则跳转到谷歌商店中,该应用所在的下载位置。用户是否评价就随缘了。video here.<< 关键代码public void jumpToGoogle(){ final String GOOGLE_PLAY =
2022-01-06 14:33:38 2992 1
原创 android防止快速点击
防止按钮多次点击,可以增加一个点击时,判断间隔时间是否达到一定时间,否则点击事件不做处理。open class OnThrottledClickListener : View.OnClickListener { companion object { const val MIN_CLICK_DELAY_TIME = 800 } private var lastClickTime = 0L override fun onClick(v: View?) {
2021-11-16 14:10:06 2377
原创 Android开发,app多种语言包
前言 有时候开发的app希望能够支持多种语言,不同国家的用户使用时都能够自动变换成自己熟悉的语言。这个功能看似高大上,其实简单的一批。多个values文件夹 在res中新建多个values文件夹,文件夹命名为:values-zh 中文values-en 英语values-ja 日语values-it 意大利语values-ar 阿拉伯语。。。。。具体可看下面罗列的Arabic, Israel (ar_IL) ----------------
2021-10-19 17:20:02 2176
原创 DeepLink的使用及任务栈问题
前言项目求人前段时间有个需求,希望提高应用的用户日活量,在用户使用Google或者Chrome浏览器检索“求人”相关关键字后,点击检索的网页,如果网页链接的前缀是项目的官网(https://www.xxxx.xx.com/…),那么需要启动App, 并在合适的地方解析出获取到的链接,跳转到指定的检索内容页面。项目采用了谷歌官方提供的API-- DeepLink,也就是深度链接(https://developer.android.com/training/app-links/deep-linking)来实
2021-09-29 18:05:53 1612
原创 动态注册广播监听发送通知
先看效果图 1.注册和发送广播活动BroadActivity.javapublic class BroadActivity extends AppCompatActivity { private Button btnSendBroad; MyBroadCast broadCast; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(saved
2021-09-10 14:18:26 147
原创 Android,实现渐变色状态栏
先看效果实现方式很简单设置themes.xml文件中,style name="Theme.项目名"中的colorPrimaryVariant为**#00000000**也就是透明,然后添加一个属性, “android:windowBackground”= @drawable/渐变布局然后在渐变布局中写上以下代码:这样你的状态栏,以及app应用中所有默认的背景都会是渐变色。你问我,我能单独只设置这个一个界面的渐变色吗?我只能说目前我还没有办法,可以需要修改statusBar或者使用其他的第
2021-08-17 10:58:12 365
原创 flutter开发, 当StatefulWidget的子widget的类相同时,页面无法切换的问题
先上代码main.dart文件然后就是往main.dart文件的 body填充的widgetfragment_page.dart就两个文件,文字描述难知其意,见如下图,Demo有两个页面,一个是main.dart,它的body能够根据下方的按钮选择填充的布局。当点击消息,则body会加载消息界面,点击联系人则加载联系人界面,非常简单。由于在代码中,我们把填充的布局放在了一个数组中,并且三个的布局是相同的我们首先在消息界面点击16下,然后我们再点击联系人!!!理论上,由于点击了bo
2021-07-30 15:48:50 293
原创 Mac电脑 Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
问题产生背景今天在公司的电脑上配置Tomcat,从官网上下载tomcat后结果使用命令cd /Library/Tomcat/binsudo sh ./startup.sh输入密码后就出现了未安装上面的问题。明明我已经配置好了JAVA_HOME,Tomcat就跟个大s比一样识别不出。所以我们需要在tomcat验证Java_home的地方进行一些修改。1。如果你的电脑是Windows,那么你需要找到Tomcat解压目录中的Tomcat/bin/setclasspath.bat。2. 如果你的
2021-07-26 16:00:16 1175 4
转载 Android存储分类,内部存储、外部存储的区别
前言 本文大量借鉴一位大佬的博客解析Android内部存储、外部存储的区别 本文仅作为个人学习记录,如有错误,欢迎指正,非常感谢。 Android项目开发必定使用到本地存储一些应用相关的数据,以及访问其他应用或者系统自带的公有共享文件(比如手机相册的图片)。所以对于内部存储和外部存储需要格外熟悉。Android物理存储上目录的划分 Android系统采用的Linux内核,所以数据存储的目录也和Linux系统相似,一般文件目录如下图所示:1.内部存储: /data/data/ (黄线
2021-07-16 16:16:25 1581
原创 Lambda在Java以及Kotlin、高阶函数中使用
1. Lambda一般用于代替匿名类,让代码逻辑看起来更加清晰,方法开发以及代码的阅读2. Lambda一般代替匿名类时,相当于匿名类本身,基本结果为 ()->{ },如果参数或者方法体语句只有一个可以省略括号。3. Lambda使用条件:实例化一个类,其内部有匿名类,或者需要实现接口,并且需要重写的方法只有一个。 那么就以方法为根据和参考基准,方法的参数对应小括号,方法体对应大括号。Lambda 表达式应用示例:Lambda 表达式应用示例:4. Lambda在Kotlin中的使用
2021-07-16 12:18:43 409
原创 RxJava中,map和flatmap的区别
1.map可以将一类型A转化为另外一任意类型B,而flatmap只能转化为发送事件序列的Observable对象。使用flatmap报错了:2.map直接将数据类型A转为数据类型B,而flatmap转换为Observable对象后会发送相应的事件,所以map在下游中接收到的就是数据类型B,而flatmap在下游中 接收到的是转化后的Observable对象发送的事件序列。map结果为:而flatmap结果为:...
2021-07-14 18:18:19 1292
原创 警告: 从发行版 10 开始,‘var‘ 是受限制的本地变量类型,无法用于类型声明,也无法
问题产生背景今天拉了一下公司的项目代码,在build时爆了 “警告: 从发行版 10 开始,‘var’ 是受限制的本地变量类型,无法用于类型声明,也无法”的错误,网上各种方法都试过了,没有作用,头要炸了。问题产生原因从爆出来的错误显示,这个问题是由于Java的JDK版本过高导致不允许var的使用。那太简单了,我不用不就好了,于是我把用了va r 的地方都改成实际的数据类型。运行,嘿嘿!结果又爆出其他的错误,比如lamda参数推倒错误,一些语法糖错误等等。所以我就意识到改是不可能改的成功的,要改的话
2021-07-02 12:23:59 5920 3
原创 DataBinding找不到符号,import xxx.xxx.ActivityxxxBindingImpl
出现这个问题多半是因为你的XML布局文件写错了,这个错误是不爆红色的,也就比较难以查到具体在哪个位置。这个一般是在Databind绑定属性项出现的问题,如text=“@{x x x.xx}”问题描述:解决方法:点击一下build中 Found data binding error(s):右侧就是具体报错的原因,我的问题出现原因就是双向绑定带有逻辑判定。...
2021-06-07 10:05:16 2647
原创 RxJava在Kotlin语言中的使用(二)创建操作符
Justjust快速建立 被观察者,同时将参数内每个数据调用onNext方法将事件发送出去其他创建操作符此外还有 Observable.fromArray(数组),从一个数组中获取数据Observable.fromIterable()从迭代器中获取。众所周知,迭代器是指Java中实现了Collection接口才会有迭代器,也就是 List列表和Set集合。此外还有一些特殊的被观察者创建方法,Observable.empty()只发送OnComplete()方法,Obserable.error(
2021-05-27 10:43:01 474
原创 MVVM+DataBing+LiveData+RxJava架构的初步认识(一)
本博客仅为小白个人学习记录,不作为任何教学指导,读者所见内容仅供参考,如有错误,欢迎指正,非常感谢。MVVM+DataBing+LiveData+RxJava架构先看Demo的架构图示:首先在model中,也就是数据来源,通过RxJava+Retrofit的方式(单例类Rretrofit对象,Json解析,网络接口等),获得从APi的网络数据。获得数据后,需要调用viewmodel类中相应的属性,这个属性类型是MutableLiveData,将数据赋值给livedata。由于在Activity
2021-05-24 17:44:53 817 1
原创 Android,EditText第一次点击事件无法触发的解决方案
1。 Edi tText第一次点击时,获取的是啥?是焦点 focus2.第二次点击才能触发点击事件,那么怎样才能第一次点击就触发点击事件呢?两种方法:在XML中设置:Android:clickable = “true”Android:focusInTouchMode = “false"这样第一次点击就会触发点击事件了,上述设置的意思就是 允许单击并且触碰edittext不会获取焦点。缺点:edittext将无法获取焦点,有时候你的edittext希望通过焦点的变化来更改背景框的颜色,
2021-05-14 17:32:22 2845
原创 RxJava在Kotlin语言中的使用(一)RxJava初步了解
注:本博客仅为作者个人学习记录,不作为任何教程,仅供参考RxJava是一个 基于事件流、实现异步操作的库,由于其实现基于事件流的链式调用,逻辑清晰,使用简单,在Android开发中广为使用,可以替代 Android中的5种异步操作实现方式,如Handler,AsnycTask等。RxJava将事件发送,传递,处理各分为3个角色,也就是设计模式中的观察者模式,它们分别是 被观察者(Observable)、订阅(Subcrible)、观察者(Observer)。它们分别又是什么?需要干什么呢?Obser
2021-05-12 16:18:09 2462 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人