avatar
文章
272
标签
106
分类
17
标签
分类
小贺同学的blog
搜索
标签
分类

小贺同学的blog

kotlin数组初始化
发表于2023-07-07|kotlin
Array今天在leetcode刷题时,突然发现,自己不会使用最基础的数组以及他的初始化。所以在这里说明一下 使用arrayOf()这是官方推荐的一种写法,他接受的时可变长参数,也就是可以接受任意的参数,直接生成一个数组。 使用arrayOfNull<>(n),初始化一个数组全为空,接受参数为数组的大小。 直接使用Array()生成数组。他又两种构造器 直接传递一个int,这个就是他的size。 除了传递一个int外,还可以传递一个lambda函数,作为数组的初始值。
Kotlin延迟初始化和密封类,内部类
发表于2023-07-07|kotlin
延迟初始类 这个应用的前提:很多情况下,我们会先初始化一个类,但是因为没有给他赋值,就给他赋值为null。如: 1private var adapter: MsgAdapter? = null 而在kotlin中,对于可能为空的变量,需要进行很多次非空判断,非空保护,即便你知道他不可能为空。以满足他的语法规则。 延迟初始化然后这里提供一种方法: 1private lateinit var adapter: MsgAdapter lateinit这个关键字表明当前这个变量不会立刻初始化,而是会在后面的步骤中赋值。但是他也有一个问题,如果你在使用这个变量时,没有赋值,他会抛出没有初始化的异常UninitializedPropertyAccessException。解决这个问题的方法就是在给他初始化的时候加一个判断是否初始化。 123if (!::adapter.isInitialized) { adapter = MsgAdapter(msgList) } 这是一个固定的语法规则,能判断是否完成初始化。 密封类密封类的关键字是sealed class,使用它...
Android入门(RecyclerView控件)
发表于2023-07-05|Android入门
RecyclerView控件首先,他并不是系统自带的控件,而是在androidx中的,也就是还需要从外部导入。不过好在IDEA已经帮我们导入过了,在build.gralde中 12345678910dependencies { implementation 'androidx.core:core-ktx:1.7.0' implementation 'androidx.appcompat:appcompat:1.4.1' implementation 'com.google.android.material:material:1.5.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.3' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test....
Android入门(listview控件)
发表于2023-07-05|Android入门
很烦,,,写了好久然后浏览器闪退了。。。然后写的全无了。所以再写一遍就随便写点了。使用listview的关键。 基本使用 直接在布局引入一个listview控件 然后因为listview的数据不能直接传入。需要通过adapter适配器来实现的,其中最常用的就是arrayAdapter 因此在activity中,初始化一个arrayAdapter。 他的初始化一共需要三个参数。 activity:也就是需要把本类传进去。 resourceid: 需要传入子项布局(也就是listview中每一项内容的样式布局)(可以使用系统默认的,也可以自己定义一个布局。这里不展示) data:传入数据源,一般都是列表。 然后使lisview的adapter属性赋值为你初始的内容1listview.adapter = arrayAdapter<String>() 然后即完成了基本使用。 进阶使用主要就是修改第二个参数,resourceid,也就是你自己定义的布局和样式。但是你不止需要样式,还需要设置逻辑。因此这里选择再写一个适配器FruitAdapter去继承ArrayAdapte...
Android自定义控件(详解)
发表于2023-07-04|Android入门
在本质上,所有的控件和布局都是View类的子类。也就是说明,在理论上,你可以自己手搓一个控件,也就是自定义控件。而且定义自己的方法和图形,界面等。而这都是可行的。 三种自定义控件自绘控件自绘控件的意思就是,这个View上所展现的内容全部都是我们自己绘制出来的。这是一个完完全全由自己设计的控件 组合控件组合控件的意思就是,我们并不需要自己去绘制视图上显示的内容,而只是用系统原生的控件就好了,但我们可以将几个系统原生的控件组合到一起,这样创建出的控件就被称为组合控件。 继承控件继承控件的意思就是,我们并不需要自己重头去实现一个控件,只需要去继承一个现有的控件,然后在这个控件上增加一些新的功能,就可以形成一个自定义的控件了。这种自定义控件的特点就是不仅能够按照我们的需求加入相应的功能,还可以保留原生控件的所有功能,比如 Android PowerImageView实现,可以播放动画的强大ImageView 这篇文章中介绍的PowerImageView就是一个典型的继承控件。 布局文件转化成view类(三种方式)1.//context:上下文, resource:要转...
Android自定义控件
发表于2023-07-04|Android入门
布局和控件的继承关系 引入布局我们可以自定义一个布局,然后把这个布局当作一个控件通过<include layout="布局文件">标签实现引入。比如自己设计的标签栏设计为一个布局文件,然后把这个布局文件当作一个控件,然后去引入他。但是,这样子的控件没有统一设定的逻辑,只有样式,没有逻辑程序设计,如果每个调用该布局的都重写一遍逻辑结构,就会有很多的冗杂代码。因此 创建自定义控件实现控件的逻辑自洽。不用再去花更多的代码去重复操作。 新建TitleLayout继承自LinearLayout,让它成为我们自定义的标题栏控件,代码如下所示: 12345class TitleLayout(context: Context, attrs: AttributeSet) : LinearLayout(context, attrs) { init { LayoutInflater.from(context).inflate(R.layout.title, this) }} 这里我们在TitleLayout的主构造函数中声明了Co...
Android常用布局
发表于2023-07-04|Android入门
布局和控件的关系 LinearLayout 属性 释义 样例 orientation 指定了排列方向 vertical,horizontal layout_gravity 控制控件的对齐方式 layout_weight 指定控件的大小 一般会将layout_width指定为0dp,这是一种标准的写法 layout_weight的计算方式系统会先把LinearLayout下所有控件指定的layout_weight值相加,得到一个总值,然后每个控件所占大小的比例就是用该控件的layout_weight值除以刚才算出的总值。因此如果想让EditText占据屏幕宽度的3/5,Button占据屏幕宽度的2/5,只需要将EditText的layout_ weight改成3,Button的layout_weight改成2就可以了。 RelativeLayout相对布局 1234567<Button android:id="@+id/button5" android:layout_width="wrap_con...
Android常用控件
发表于2023-07-04|Android入门
常用控件TextView显示文本 属性 释义 样例 gravity 来指定文字的对齐方式 top,bottom,start等 textColor 指定文字颜色 red,green textSize 指定文字大小 sp为单位,这样当用户在系统中修改了文字显示尺寸时,应用 程序中的文字大小也会跟着变化。重新运行程序 text 指定文字内容 Button放置按钮 属性 释义 样例 textAllCaps 指定文字是否大小写 false,true 注册Button点击事件的方式 函数式API123button.setOnClickListener { // 在此处添加逻辑 } 2.用实现接口的方式来进行注册 12345678910111213141516 class MainActivity : AppCompatActivity(),View.OnClickListener { override fun onCreate(savedInstanceState: Bundle?) { ...
Kotlin标准方法with,run,apply AND 静态方法
发表于2023-06-30|kotlin
标准函数with,run,apply123456789101112131415161718192021222324252627282930313233343536373839404142fun main() { //常用写法 val list = listOf("apple", "banana", "orange", "pear", "grape") val builder = StringBuilder() builder.append("Start eat fruits\n") for (fruit in list) { builder.append(fruit + "\n") } builder.append("Ate all fruits\n") println(builder) //使用with作为标准函数来写 ...
Activity最佳实践
发表于2023-06-30|Android入门
知晓当前时哪一个activity直接创建一个kotlin的类,,他与Activity的创建方法不一样。创建BaseActivity类 12345678open class BaseActivity:AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) Log.d("BaseActivity",javaClass.simpleName) //javaClass表示获取当前实例的class对象,相当于在java中调用getClass方法 //::class.java表示获取BaseActivity类的Class对象。相当于在Java中调用BaseActivity.class反射 ActivityCollector.addActivity(this) } 然后在把其他的类从继承AppCompa...
1…141516…28
avatar
小贺同学
分享知识,勤做笔记
文章
272
标签
106
分类
17
Follow Me
公告
靡不有初,鲜克有终
最新文章
ddnsgo忘记密码2025-09-04
Gitea实现Docker镜像打包上传全流程
Gitea实现Docker镜像打包上传全流程2025-09-04
acme快速配置证书
acme快速配置证书2025-06-02
解决ubuntu下定时任务不执行的问题
解决ubuntu下定时任务不执行的问题2025-04-10
d2l深度学习问题汇总
d2l深度学习问题汇总2025-04-10
分类
  • Android入门42
  • Echarts1
  • Linux基础14
  • RabbitMQ1
  • clash3
  • kali1
  • kotlin65
  • nvm2
标签
androidadb调试vueJSMediaPlayerAPK打包android Studiobee框架四大组件目录结构Android MediacameraXjetpack compose轻nas杂言fetchpromiseES6C语言长连接和短链接gradleidea激活JAVAjar包giteadocker镜像gitea action数据通信JWTk8sjavaktorlinuxcompose代理mihomo服务器LombokMVI架构
归档
  • 九月 2025 2
  • 六月 2025 1
  • 四月 2025 3
  • 一月 2025 2
  • 十二月 2024 9
  • 十一月 2024 3
  • 九月 2024 1
  • 七月 2024 9
网站信息
文章数目 :
272
运行时间 :
本站访客数 :
最后更新时间 :
© 2023 - 2025 By 小贺同学框架 Hexo 7.3.0|主题 Butterfly 5.5.0
本网站由 提供CDN加速/云存储服务
湘ICP备2023014266号-1
湘公网安备 43030302000164号
搜索
数据加载中