添加依赖:
由于我更新了最新版的AndoridStudio3.6.3因此只需添加
dataBinding {
enabled = true
}
vandroid {
compileSdkVersion 29
buildToolsVersion "29.0.2"
defaultConfig {
applicationId "com.example.jetpack"
minSdkVersion 21
targetSdkVersion 29
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
dataBinding {
enabled = true
}
}
android设置横竖屏模式:
可在布局文件中配置,也可在代码配置:
“unspecified”:默认值 由系统来推断显示方向.判定的策略是和设备相关的,所以不同的设备会有不同的显示方向.
“landscape”:横屏显示(宽比高要长)
“portrait”:竖屏显示(高比宽要长)
“user”:用户当前首选的方向
“behind”:和该Activity以下的那个Activity的方向一致(在Activity堆栈中的)
“sensor”:有物理的感应器来决定。假设用户旋转设备这屏幕会横竖屏切换。
“nosensor”:忽略物理感应器。这样就不会随着用户旋转设备而更改了("unspecified"设置除外)
ViewModle:
class MyModel(countReserved:Int): ViewModel() {
val counter = MutableLiveData<Int>()
init {
counter.value = countReserved
}
fun plusOne(){
val count = counter.value?:0;
counter.value = count+1;
}
fun clear(){
counter.value = 0
}
}
MyViewModelFactory:
class MyViewModelFactory: ViewModelProvider.Factory {
override fun <T : ViewModel?> create(modelClass: Class<T>): T {
return MyModel(5) as T
}
}
MainActivity:
class MainActivity : AppCompatActivity() {
lateinit var myViewModel: MyModel;
lateinit var binding:ActivityMainBinding;
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView(this,R.layout.activity_main)
myViewModel = ViewModelProvider(this, MyViewModelFactory()).get(MyModel::class.java)
binding.data = myViewModel
binding.lifecycleOwner = this
}
}
布局文件:
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
<variable
name="data"
type="com.example.jetpack.MyModel" />
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<Button
android:id="@+id/login"
android:layout_width="209dp"
android:layout_height="48dp"
android:onClick="@{()->data.plusOne()}"
android:text="@{String.valueOf(data.counter)}"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>