自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 重签名踩坑(批处理命令空格问题)

今晚莫名起来没办法重签名了,踩坑就是文件是接收自qq群的,而qq群下载文件的保存路径是有空格的,批处理命令在识别空格的时候会当做其他语言,所以报错,报错如下。平时重签名apk都是用dalao做好的傻瓜式.bat批处理命令,然后从飞书接收apk、aab文件进行删除原来签名证书,对齐,重签即可。就是这个可恶的Tencent Files中间有个空格,解决办法是将apk或aab包拖拽自无空格地方即可。反思:在考虑问题时,可以增加路径上的空格以及路径上中文字符这两个思考方向。以下是qq保存路径上的空格问题。

2022-09-01 20:33:16 220 1

原创 Android关于接入SDK所用jdk版本比项目高的报错问题

在Android Studio中,选择菜单栏设置 File->Settings->Build,Excutiong, -> Build Tools ->Gradle -> Gradle JDK 为JDK11。

2022-08-31 14:25:05 5063

原创 APK与AAB签名问题

apk、aab签名

2022-08-19 10:52:40 1305

原创 AndroidStudio如何降低Gradle版本兼容老项目

AndroidStudio降低Gradle兼容老项目

2022-08-18 20:14:35 7273 5

原创 对Java接口回调的简单理解(形象生动版)

java接口回调生动形容版

2022-08-16 10:16:33 137

原创 关于NavigationView使用出现的问题(控件绑定时应该先绑菜单视图而不是子项)

开源项目CircleImageView轻松实现图片圆形化的功能implementation 'de.hdodenhof:circleimageview:3.0.1'创建menu文件夹,创建nav_menu.xml文件,编写菜单子项<?xml version="1.0" encoding="utf-8"?><menu xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:android="http://schem

2022-04-06 11:06:23 219

原创 Kotlin协程相关(未整理) 主要用于简化回调

package com.example.oroutinesimport kotlinx.coroutines.*import retrofit2.Callimport retrofit2.Responseimport java.lang.Exceptionimport java.lang.RuntimeExceptionimport javax.security.auth.callback.Callbackimport kotlin.coroutines.resumeimport kotl

2022-04-05 14:54:21 2325

原创 Android通知的简单使用、摄像头和相册

Android 8.0 引入了通知渠道的概念 * 首先需要一个NotificationManager对通知进行管理,调用context的getSystemService()获取 * 此方法接收一个字符串参数用于确定获取系统的哪个服务,这里传入Context.NOTIFICATION_SERVICE * 所以获取NotificationManager实例可以写成 * val manager = getSystemService(Context.NOTIFICATION_SERVICE) as Not.

2022-04-02 17:06:11 3262

原创 kotlin中的泛型与委托(类委托与属性委托)

package com.example.providertestimport androidx.appcompat.app.ActionBarDrawerToggleimport kotlin.reflect.KProperty** * Kotlin中的泛型与委托 * 一般编程模式下,需要给任何一个变量指定一个具体的类型,而泛型允许在不指定具体类型的情况下进行编程,这样的程序拥有更加良好的扩展性 * 泛型主要有两种定义方式①定义泛型类②定义泛型方法 * * 委托是一种设计模式,基本理念为

2022-04-02 14:45:00 2311

原创 ContentProvider简单使用(读取系统联系人并展示到简单的ListView控件上),读取以及创建属于自己的内容提供器

ContentProvider一般用法有两种:一种是使用现有的ContentProvider读取和操作相应程序中的数据: * 另一种是创建自己的ContentProvider,给程序的数据提供外部访问接口 * * 如果想要访问ContentProvider中共享的数据,就要借助ContentResolver类 * 可以通过Context中的getContentResolver()获取该类的实例 * ContentResolver中提供了update() delete() query() inser

2022-04-02 14:42:42 509

原创 android运行时权限申请示例(实现一键拨打10086)

布局只有一个按键需要在AndroidManifest.xml中进行声明 在Android6.0以下的所有权限只需要在AndroidManifest.xml中声明即可 * 而在Android6.0以上加入了运行时权限,使用危险权限时必须声明和进行权限申请两样都要做到<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.runtimepermissiontest"

2022-04-01 15:15:49 689

原创 数据持久化技术:文件存储、SharedPreferences存储以及数据库存储

文件存储这里实现了一个存储EditText中输入内容与恢复package com.example.filepersistencetestimport android.content.Contextimport androidx.appcompat.app.AppCompatActivityimport android.os.Bundleimport android.widget.EditTextimport android.widget.Toastimport java.io.*impo

2022-04-01 10:10:10 498

原创 Git命令

打开Git Bash(其实更加想看看图形化的操作,而不是命令式的)首先配置身份,提交代码的时候git就知道是谁提交的了git config --global user.name “Tony”git config --global user.email “tony@gmail.com”配置完成后可以用相同的命令查看配置是否成功git config --global user.namegit config --global user.email创建代码仓库git init仓库创建完成后,会在本

2022-04-01 07:06:16 450

原创 6.5 kotlin高阶函数inline、noinline、crossinline

定义高阶函数/ * 高阶函数的定义:如果一个函数接收另一个函数作为参数,或者返回值类型为另一个函数,那么该函数就称为高阶函数 * * 高阶函数允许让函数类型的参数来决定函数的执行逻辑。即使是同一个高阶函数,只要传入不同的函数参数类型, * 那么它的执行逻辑和返回结果就可能是完全不同的。 * * 如果每次调用高阶函数还要定义一个与其函数类型相同参数相匹配的函数,是不是太复杂了? * 因此kotlin还支持其他多种方式来调用高阶函数,比如Lambda表达式、匿名函数、成员引用。 */使用示

2022-04-01 06:51:07 232

原创 广播接收器

BroadcastReceiver注册方式一般有两种,在代码中注册或者在AndroidManifest.xml中注册,也称为动态注册和静态注册 * 动态注册的BroadcastReceiver一定要取消注册才行 * 静态注册的BroadcastReceiver一定要在AndroidManifest.xml中注册,使用便捷方式创建的话AS会自动完成 * * 如何创建BroadcastReceiver? 新建一个类继承自BroadcastReceiver并重写父类的onReceiver()方法即可,.

2022-04-01 01:45:03 126

原创 kotlin.NotImplementedError: An operation is not implemented

报错如下BootC小黄字不删广播中onReceiver()方法无法执行报错,删了就好了删掉小黄字即可正常运行广播逻辑

2022-04-01 00:10:15 607

原创 Fragment简单使用

Fragment可以理解为小型的Activity,可以嵌入其中使用首先创建Fragment布局<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android

2022-03-31 21:17:17 110

原创 5.6 扩展函数和运算符重载

扩展函数扩展函数可以在不修改某个类源码的情况下,仍然可以打开这个类,向该类添加新的函数。扩展函数的语法结构fun ClassName.methodName(param1:Int,param2:Int) : Int{ return 0}假设需求:我们想统计字符串中字母的数量,如果采用java中的实现思想我们可能会这样写object StringUtil{ fun lettersCount(str:String) : Int{ var count = 0

2022-03-31 20:35:50 313

原创 9-Patch图片

任何的一张png类型图片都能制作为9-Patch图片Picture.png右击,create 9-patch file在上边框和左边框的部分表示可以拉伸的区域在下边框和右边框表示内容被允许放置的范围做好后要记得删除原来的图片因为Android中不允许同一文件夹下有两张相同名称的图片(即使后缀名不同也不行)...

2022-03-29 13:29:58 535

原创 RecyclerView的基本用法,瀑布流布局,RecyclerView中外层view的点击事件和内侧ImageView点击事件

创建子项布局对应的实体类class Fruit(val fruitPicetureId :Int,val fruitName:String) {}在主界面main.xml中加入RecyclerView控件<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/

2022-03-29 11:25:40 152

原创 引入布局、自定义控件(绑定响应事件)

** * 2022年3月28日10:23:53 * * 4.4 创建自定义控件 * 所有控件都是直接或间接继承自View,所有布局都是直接或者间接继承自ViewGroup * * 4.4.1 引入布局 * 引入布局解决重复代码的问题(代码复用) * 创建控件布局 在activity_main.xml中include控件布局 * 在MainActivity中隐藏原始控件(比如隐藏标题栏supportActionBar?.hide())* 4.4.2 创建自定义控件 * 引入布局解决了

2022-03-28 11:17:27 247

原创 Activity生命周期,启动模式,临时数据恢复Bundle,一键关闭以及启动技巧,标准函数let with run apply 和静态方法的实现,注解,顶层

/** * onCreate 加载布局 绑定事件 * onStart 不可见变为可见的时候调用 * onResume 准备好和用户交互时调用 * onPause 启动或者恢复另一个Activity时调用,通常进行资源释放,保存关键数据,但要快,否则影响栈顶Activity * onStop 完全不可见时调用,如果新的Activity是对话框则仅调用onPause不onStop * onDestroy 在Activity销毁之前调用 * onRestart 由停止变为运行状态之前调用 * 完整

2022-03-26 16:26:52 94

原创 Kotlin语法基础一

/** * 2.3.1变量 * kotlin中只有可变var和不可变val * kotlin中拥有出色的类型推导机制 *如果对一个变量延迟赋值,kotlin就无法自动推导它的类型了,这时候就需要显式地声明变量类型 val a : Int = 10 * kotlin完全抛弃了java中的基本数据类型,全部使用了对象数据类型,int在java中是关键字,Int在kotlin中为一个类 * 应该习惯用val声明,如果确实无法使用再用var * * 2.3.3函数 * kotlin中的函数其实就是

2022-03-23 23:33:42 1459

原创 Intent在Activity间传递数据

传递简单数据给下一个Activity在本Activity中构建intent//send data to activity2 R.id.item_sendData -> { val intent = Intent(this,MainActivity2::class.java) intent.putExtra("name","张三") intent.putExtra("number"

2022-03-23 22:24:59 546

原创 菜单的简单使用示例

Android菜单的简单使用示例

2022-03-23 21:50:30 282

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除