这是实习第一周的几天所做的事情,主要内容包括:
- 切图
- 几种基本控件的使用
- 主要实现功能:修改密码,个人资料(头像选择,修改昵称,性别选择),关于我们
声明:所有代码基于kotlin和databinding。
首先是设置界面的跳转:
override fun onCreateOptionsMenu(menu: Menu): Boolean {
menuInflater.inflate(R.menu.menu_main, menu)
return true
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
if (item.itemId == R.id.menu_setting) {
SettingActivity.startActivity(this@EtripMainActivity)
return true
} else {
return super.onOptionsItemSelected(item)
}
}
重写上述两个方法,在主页面中增加菜单栏并设置跳转图标和逻辑,跳转到SettingActivity
中。
SettingActivity
的界面如下:
代码如下:
package com.radella.etrip.ui.setting
import android.content.Context
import android.content.Intent
import android.databinding.DataBindingUtil
import android.view.View
import android.widget.Button
import android.widget.LinearLayout
import android.widget.TextView
import com.radella.etrip.R
import com.radella.etrip.base.BaseNormalActivity
import com.radella.etrip.databinding.ActivitySetting1Binding
import com.radella.etrip.ui.main.EtripMainActivity
class SettingActivity : BaseNormalActivity(),View.OnClickListener {
override fun onClick(v: View?) {//各控件的点击事件,分别进入不同页面中
val text: TextView? = v?.findViewById(R.id.text) as TextView?
when(text?.text)
{
"个人资料" -> {
PersonalDataActivity.startActivity(this@SettingActivity)
}
"修改密码" -> {
ModifyPwdActivity.startActivity(this@SettingActivity)
}
"关于我们" ->
{
AboutUsActivity.startActivity(this@SettingActivity)
}
}
}
lateinit var settingBinding: ActivitySetting1Binding
var strings:Strings?=null
override fun daggerInject() {
}
override fun initialize() {//初始化界面的数据,通过databinding绑定到xml文件,然后注册点击事件
strings=Strings("个人资料","")
settingBinding.personalData=strings
strings=Strings("修改密码","")
settingBinding.changePwd=strings
strings=Strings("关于我们","")
settingBinding.aboutUs=strings
var item1:LinearLayout?= findViewById(R.id.item1) as LinearLayout?
item1?.setOnClickListener(this@SettingActivity)
var item2:LinearLayout?= findViewById(R.id.item2) as LinearLayout?
item2?.setOnClickListener(this@SettingActivity)
var item3:LinearLayout?= findViewById(R.id.item3) as LinearLayout?
item3?.setOnClickListener(this@SettingActivity)
var returnEtripMain:Button= findViewById(R.id.setting_return_EtripMain) as Button
returnEtripMain.setOnClickListener(View.OnClickListener {
EtripMainActivity.startActivity(this@SettingActivity)
finish() })
}
override fun loadViewLayout() {//databinding绑定到xml中
settingBinding = DataBindingUtil.inflate(layoutInflater, R.layout.activity_setting1,binding.llContainer,true) }
companion object{//在其他activity中调用该方法启动本activity
fun startActivity(context: Context){
val intent = Intent()
intent.setClass(context,SettingActivity::class.java)
context.startActivity(intent)
}
}
}
以及SettingActivity
的xml布局R.layout.activity_setting1
<?xml version="1.0" encoding="utf-8"?>
<layout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:bind="http://schemas.android.com/tools">
<data>
<variable
name="personal_data"
type="com.radella.etrip.ui.setting.Strings"/>
<variable
name="change_pwd"
type="com.radella.etrip.ui.setting.Strings"/>
<variable
name="about_us"
type="com.radella.etrip.ui.setting.Strings"/>
</data>
<LinearLayout
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginStart="20dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="设置"
android:layout_marginTop="102dp"
android:textSize="26sp"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginTop="20dp"
android:background="@color/black_alpha_10" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:id="@+id/item1">
<include
layout="@layout/line_with_text"
bind:viewModel="@{personal_data}" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:id="@+id/item2">
<include
layout="@layout/line_with_text"
bind:viewModel="@{change_pwd}" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:id="@+id/item3">
<include
layout="@