android r类的作用,Android开发中的R理解

一.R文件

当Android应用程序被编译,会自动生成一个R类,其中包含了所有的res/目录下资源的ID,如布局文件,资源文件,图片

res目录下保存的文件大多数都会被编译,并且被赋予资源ID,这些ID被保存在R.java文件中,这样我们就可以在程序中通过ID来访问res类的资源

资源文件只能以小写字母和下划线做首字母,随后的名字中只能出现【a-z0-9_.】这些字符,否则R.java不会自动更新

在写Java代码的过程中,你可以使用R类,通过子类+资源名或者直接使用资源ID来访问资源

二. R.java文件中资源RD的含义

Android中的资源使用几乎无处不在,layout,String、drawable、raw、style、theme等等都是,这些资源会在编译过程中被打包进APK中(res文件夹)或者被打包成独立的资源APK包(如framework-res.apk)

资源都会被赋予独一无二的ID,即资源索引来方便系统的访问

这些资源索引由Androi的,的工具AAPT(Android Asset Packing Tool)生成八位十六进制整数型

public static final int bar = 0x7F020003

7F:资源属于应用APK包资源

01资源属于系统资源包

后四位:资源在资源包该资源类型中的编号

02:drawable

03:layout

04:values

05:xml

06: raw

07: color

08: menu

//获取文字

getResources().getText(R.string.name)

//图片

getDrawable(R.drawable.icon)

//颜色

getResources().getColor(R.color.red)

//布局

setContentView(R.layout.main)

三、在XML文件中引用R资源ID

格式:@【package:】type/name

xml文件中,如main.xml以及AndroidMainfest.xml文件中通过"@drawable/icon"的方式获取,其中"@"代表的是R.java类,"drawable"代表的是R.java中的静态内部类"drawable","/icon"代表静态内部类"drawable"中的静态属性"icon"

凡是在R文件中定义的资源都可以通过"@Static_inner_classes_name/resource_name"的方式获取,如"@id/button","@string/app_name"

若是访问Android系统自带的文件,则需要添加"Android:"例如 android:textColor="@android:color:red"

四、在XML文件中向R类添加资源ID

在布局文件中当我们需要为一些组件添加ID属性作为识别,可以使用如下的表达式:"@+id/string_name",其中"+"表示在R.java的名为id的内部类中添加一条记录

例如"@+id/button"表示在R.java文件中的id这个静态内部类添加一条常量名为button,该常量就是该资源的标识符,若id这个静态内部类不存在,则会先生成它

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为你解答关于Android MVP模式和使用Kotlin模拟登录的问题。 首先,MVP模式是一种架构模式,它将应用程序分为三个部分:模型(Model),视图(View)和控制器(Presenter)。MVP模式的主要目的是将业务逻辑和用户界面分离,从而实现更好的代码可读性和可维护性。 在Android开发,MVP模式通常用于处理复杂的UI和业务逻辑。下面是一个使用Kotlin模拟登录的Android MVP模式示例: 1. 创建一个包含登录逻辑的模型 ```kotlin interface LoginModel { fun login(username: String, password: String, callback: LoginCallback) } interface LoginCallback { fun onSuccess() fun onFailure(error: String) } class LoginModelImpl : LoginModel { override fun login(username: String, password: String, callback: LoginCallback) { // 模拟登录 if (username == "admin" && password == "123456") { callback.onSuccess() } else { callback.onFailure("用户名或密码错误") } } } ``` 2. 创建一个视图接口和一个实现视图接口的Activity ```kotlin interface LoginView { fun showLoading() fun hideLoading() fun showToast(msg: String) } class LoginActivity : AppCompatActivity(), LoginView { private lateinit var presenter: LoginPresenter override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_login) presenter = LoginPresenterImpl(this, LoginModelImpl()) btn_login.setOnClickListener { presenter.login(et_username.text.toString(), et_password.text.toString()) } } override fun showLoading() { // 显示加载 } override fun hideLoading() { // 隐藏加载 } override fun showToast(msg: String) { // 显示Toast } } ``` 3. 创建一个控制器(Presenter)来连接模型和视图 ```kotlin interface LoginPresenter { fun login(username: String, password: String) } class LoginPresenterImpl(private val view: LoginView, private val model: LoginModel) : LoginPresenter { override fun login(username: String, password: String) { view.showLoading() model.login(username, password, object : LoginCallback { override fun onSuccess() { view.hideLoading() view.showToast("登录成功") } override fun onFailure(error: String) { view.hideLoading() view.showToast(error) } }) } } ``` 在此示例,LoginActivity是视图,LoginPresenterImpl是控制器(Presenter),LoginModelImpl是模型。当用户单击“登录”按钮时,LoginActivity将调用LoginPresenterImpl的login方法,该方法将调用LoginModelImpl的login方法进行模拟登录。如果登录成功,LoginPresenterImpl将通知LoginActivity以显示“登录成功”消息;否则,它将通知LoginActivity显示错误消息。 希望这个示例可以帮助你理解Android MVP模式和使用Kotlin模拟登录的实现。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值