实习笔记之个人设置界面

这篇博客分享了作者实习期间实现个人设置界面的过程,包括修改密码、选择头像、修改昵称和选择性别的功能。重点介绍了popupwindow、imageSelector的使用,以及权限申请的处理。在头像选择中,利用popwindow展示选择界面,imageSelector处理图片选取。修改昵称时,通过限制字符长度并使用ReplyCommand进行交互。选择性别则采用Dialog实现,记录用户的点击位置。
摘要由CSDN通过智能技术生成

这是实习第一周的几天所做的事情,主要内容包括:

  1. 切图
  2. 几种基本控件的使用
  3. 主要实现功能:修改密码,个人资料(头像选择,修改昵称,性别选择),关于我们

声明:所有代码基于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="@
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值