ui基础学习

TextView 的学习
 module 的 build.gradle 文件配置开启 ViewBinding

 viewBinding {      

  enabled = true 

   }

在activity_main.xm中
添加代码
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="This is TextView"/>
可以看见空白顶格有This is Textview的一行字
如果要放在中间只要在andriod:text上打出 android:gravity="center"就可
表⽰⽂字在垂直和⽔平⽅向都居中对⻬
文字颜色:
通过 android:textColor 属性可以指定⽂字的颜⾊,通过
android:textSize 属性可以指定⽂字的⼤⼩。
EditText
是程序⽤于和⽤户进⾏交互的另⼀个重要控件,它允许⽤户在控
件⾥输⼊和编辑内容,并可以在程序中对这些内容进⾏处理。
在activity_main.xm中
添加代码
<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
就可以打字了
android:hint="Type something here" 加一句,就可以提示用户打字
增加如下代码 可以将事先准备好的图片显现出来
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/img_1"
/>
AlertDialog
可以在当前界⾯弹出⼀个对话框,这个对话框是置顶于所有界
⾯元素之上的,能够屏蔽其他控件的交互能⼒
一般用来防⽌⽤户误删重要内
容,在删除前弹出⼀个确认对话框。
修改MainActivity中的代码
override fun onClick(v: View?) {
when (v?.id) {
R.id.button -> {
AlertDialog.Builder(this).apply {
setTitle("This is Dialog")
setMessage("Something important.")
setCancelable(false)
setPositiveButton("OK") { dialog, which ->
}
setNegativeButton("Cancel") { dialog, which ->
}
show()
}
}
}
android:orientation 属性指
定了排列⽅向是 vertical
如:垂直排列
android:orientation="vertical"

 

水平排列

android:orientation="horizontal"

 

如果 LinearLayout 的排列⽅向是 horizontal ,内部的控件就
绝对不能将宽度指定为 match_parent
如果 LinearLayout的排列⽅向是 vertical ,内部的控件就不能将⾼度指定为
match_parent
否则,单独⼀个控件就会将整个 ⽔平⽅向占满,其他的控件就没有可放置的位置了。
android:gravity ⽤于指定⽂字在控件中的对⻬⽅式,⽽android:layout_gravity ⽤于指定控件在布局中的对⻬⽅式。
LinearLayout 的排列⽅向是 horizontal 时,只有垂直⽅向上的对⻬⽅式才会⽣效。因为此时⽔平⽅向上的⻓度是不固定的,每添加⼀个控件,⽔平⽅向上的⻓度都会改变,因⽽⽆法指定该⽅向上的对⻬⽅式。同样的道理,当LinearLayout的排列⽅向是vertical时,只有⽔平⽅向上的对⻬⽅式才会⽣效。
android:layout_weight 。这个属性允许我们使⽤⽐例的⽅式来指定控件的⼤⼩,它在⼿机屏幕的适配性⽅⾯可以起到⾮常重要的作⽤。
android:layout_weight 属性的值同时指定为 1 就会平分屏幕宽度
RelativeLayout ⼜称作相对布局
android:layout_above 属性可以让⼀个控件位于另⼀个控件的上⽅, 需要为这个属性指定相对控件id的引⽤。其他的属性也是相似的, android:layout_below表⽰让⼀个控件位于另⼀个控件的下⽅,android:layout_toLeftOf表⽰让⼀个控件位于另⼀个控件的左侧,android:layout_toRightOf表⽰让⼀个控件位于另⼀个控件的右侧。注意,当⼀个控件去引⽤另⼀个控件的id 时,该控件⼀定要定义在引⽤控件的后⾯,不然会出现找不到id的情况。
引⼊标题栏布局
只需要添加
<include layout="@layout/title" />
如:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<include layout="@layout/title" />
</LinearLayout>

最常⽤和最难⽤的控件:ListView

ListView 允许⽤户通过⼿指上下滑动的⽅式将屏幕外的数据滚动到屏幕内,同时屏幕上原有的数据会滚动出屏幕。你其实每天都在使⽤这个控件,⽐如查看QQ 聊天记录,翻阅微博最新消息, 等等。
ListView 中的 标准写法
getView() ⽅法中,⾸先使⽤ LayoutInflater 来为这个⼦项加载我们 传⼊的布局。LayoutInflater inflate() ⽅法接收 3 个参数,前两个 参数我们已经知道是什么意思了,第三个参数指定成false ,表⽰只让我们在⽗布局中声明的layout 属性⽣效,但不会为这个 View 添加⽗布局。因为⼀旦View 有了⽗布局之后,它就不能再添加到 ListView 中了。
getView() ⽅法中还有⼀个 convertView 参数,这
个参数⽤于将之前加载好的布局进⾏缓存,以便之后进⾏重⽤,我们可以
借助这个参数来进⾏性能优化。
更强⼤的滚动控件: RecyclerView
如果我们想实现横向滚动的话, ListView 是做不到的。
为此, Android 提供了⼀个更强⼤的滚动控件 ——RecyclerView 。它可以 说是⼀个增强版的ListView ,不仅可以轻松实现和 ListView 同样的效果,还优化了ListView 存在的各种不⾜之处。⽬前 Android 官⽅更加推荐使⽤RecyclerView,未来也会有更多的程序逐渐从 ListView 转向 RecyclerView
RecyclerView 的基本⽤法
每当修改了任何 gradle ⽂件, Android Studio 都弹出⼀个
这个提⽰告诉我们, gradle ⽂件⾃上次同步之后⼜发⽣了变化,需要再次同步才能使项⽬正常⼯作。这⾥只需要点击“Sync Now” 就可以了,然后gradle会开始进⾏同步,把我们新添加的 RecyclerView 库引⼊项⽬当中。

 

RecyclerView尝试实现⼀下横向滚动的效果。 ⾸先要对fruit_item布局进⾏修改,因为⽬前这个布局⾥⾯的元素是⽔平排列的,适⽤于纵向滚动的场景,⽽如果我们要实现横向滚动的话,应该把fruit_item ⾥的元素改成垂直排列才⽐较合理。
制作9-Patch图⽚
Android Studio 中,我们可以将任何 png 类型的图⽚制作成 9-Patch 图⽚。⾸先对着message_left.png 图⽚右击→Create 9-Patch fifile然后保持默认⽂件名就可以了,其实就相当于创建了⼀张以9.png为后缀的同名图⽚,点击“Save”完成保存。
按住 Shift 键拖动可以进⾏擦除我们绘制的小黑点
延迟初始化和密封类
延迟初始化使⽤的是 lateinit 关键字,它可以告诉 Kotlin 编译器,我会在晚些时候对这个变量进⾏初始化,这样就不⽤在⼀开始的时候将它赋值为null了。                               
使⽤ lateinit 关键字也不是没有任何⻛险,如果我们在 adapter变量还没有初始化的情况下就直接使⽤它,那么程序就⼀定会崩溃,并且抛出⼀个UninitializedPropertyAccessException 异常。
所以,当你对⼀个全局变量使⽤了 lateinit 关键字时,请⼀定要确保它在被任何地⽅调⽤之前已经完成了初始化⼯作,否则Kotlin 将⽆法保证程序的安全性。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值