0
点赞
收藏
分享

微信扫一扫

Koltin26,kotlin数组与列表区别

沉浸在自己的世界里 2022-03-11 阅读 87
面试

<ImageView

android:id="@+id/iv_address_manager"

android:layout_width=“match_parent”

android:layout_height=“wrap_content”

android:scaleType=“fitXY”

android:src="@mipmap/user_center_orther" />

<LinearLayout

android:layout_width=“match_parent”

android:layout_height=“wrap_content”

android:background="#3090E6"

android:orientation=“vertical”>

<RelativeLayout

android:layout_width=“match_parent”

android:layout_height=“wrap_content”

android:layout_marginTop=“30dp”

android:gravity=“center_vertical”>

<TextView

android:layout_width=“wrap_content”

android:layout_height=“wrap_content”

android:layout_centerVertical=“true”

android:layout_marginLeft=“15dp”

android:text=“我的”

android:textColor="#FFF"

android:textSize=“18sp” />

<ImageView

android:id="@+id/tv_user_setting"

android:layout_width=“30dp”

android:layout_height=“30dp”

android:layout_alignParentRight=“true”

android:layout_marginRight=“15dp”

android:src="@mipmap/user_center_setting" />

<ImageView

android:id="@+id/iv_user_notice"

android:layout_width=“30dp”

android:layout_height=“30dp”

android:layout_marginRight=“40dp”

android:layout_toLeftOf="@+id/tv_user_setting"

android:src="@mipmap/user_center_notice" />

LoginActivity.kt登录界面的操作,首先包括监听验证码的操作动作,发送验证码和验证验证码,其中增加了验证码的倒计时操作功能

package com.example.takeout.ui.activity

import android.annotation.SuppressLint

import android.os.Bundle

import android.os.Handler

import android.os.Message

import android.os.SystemClock

import android.text.TextUtils

import android.util.Log

import androidx.appcompat.app.AppCompatActivity

import cn.smssdk.EventHandler

import cn.smssdk.SMSSDK

import com.example.takeout.R

import com.heima.takeout.utils.SMSUtil

import com.mob.MobSDK

import kotlinx.android.synthetic.main.activity_login.*

class LoginActivity : AppCompatActivity() {

//监听每一次提交验证码操作

val eh = object : EventHandler() {

override fun afterEvent(event: Int, result: Int, data: Any) {

if (result == SMSSDK.RESULT_COMPLETE) {

//回调完成

if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {

//提交验证码成功

Log.d(“LoginActivity”, “提交验证码成功”)

} else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE) {

//获取验证码成功

Log.d(“LoginActivity”, “获取验证码成功”)

} else if (event == SMSSDK.EVENT_GET_SUPPORTED_COUNTRIES) {

//返回支持发送验证码的国家列表

}

} else {

(data as Throwable).printStackTrace()

}

}

}

override fun onCreate(savedInstanceState: Bundle?) {

super.onCreate(savedInstanceState)

setContentView(R.layout.activity_login)

initListener()

MobSDK.submitPolicyGrantResult(true, null);

//注册短信回调

SMSSDK.registerEventHandler(eh)

}

private fun initListener() {

iv_user_back.setOnClickListener { finish() }

//获取验证码

tv_user_code.setOnClickListener {

val phone = et_user_phone.text.toString().trim()

//验证手机号码

if (SMSUtil.judgePhoneNums(this, phone)) {

// 请求验证码,其中country表示国家代码,如“86”;phone表示手机号码,如“13800138000”

SMSSDK.getVerificationCode(“86”, phone)

//开启倒计时

tv_user_code.isEnabled = false

Thread(CutDownTask()).start()

}

}

iv_login.setOnClickListener {

//提交验证码

val phone = et_user_phone.text.toString().trim()

val code = et_user_code.text.toString().trim()

if (SMSUtil.judgePhoneNums(this, phone) && !TextUtils.isEmpty(code)) {

// 提交验证码,其中的code表示验证码,如“1357”

SMSSDK.submitVerificationCode(“86”, phone, code)

}

//登录外卖服务器

// loginActivityPresenter.loginByPhone(phone)

}

}

companion object {

val TIME_MINUS = -1 //剩余时间的消息

val TIME_IS_OUT = 0 //60s超时

}

//创建一个handler来刷新UI

val handler = @SuppressLint(“HandlerLeak”)

object : Handler(){

override fun handleMessage(msg: Message?) {

super.handleMessage(msg)

when(msg!!.what){

TIME_MINUS -> tv_user_code.text = “剩余时间(${time})秒”

TIME_IS_OUT -> {

tv_user_code.isEnabled = true

tv_user_code.text = “点击重发”

time = 60

}

}

}

}

//倒计时的实现60s

var time = 60

inner class CutDownTask: Runnable {

override fun run() {

//倒计时循环

while (time>0){

//刷新剩余时间,当前子线程,使用handler

handler.sendEmptyMessage(TIME_MINUS)

SystemClock.sleep(999)

time –

}

handler.sendEmptyMessage(TIME_IS_OUT)

}

}

// 使用完EventHandler需注销,否则可能出现内存泄漏

override fun onDestroy() {

super.onDestroy()

SMSSDK.unregisterEventHandler(eh)

}

}

SMSUtil.kt验证码的合理性校验

package com.heima.takeout.utils

import android.Manifest

import android.app.Activity

import android.content.pm.PackageManager

import android.os.Build

import android.text.TextUtils

import android.widget.Toast

import java.util.*

object SMSUtil {

/**

  • 判断手机号码是否合理

  • y

*/

fun judgePhoneNums(activity: Activity, phoneNums: String): Boolean {

if (isMatchLength(phoneNums, 11) && isMobileNO(phoneNums)) {

return true

}

Toast.makeText(activity, “手机号码输入有误!”, Toast.LENGTH_SHORT).show()

return false

}

/**

  • 验证手机格式

*/

fun isMobileNO(mobileNums: String): Boolean {

/*

  • 移动:134、135、136、137、138、139、150、151、157(TD)、158、159、187、188

  • 联通:130、131、132、152、155、156、185、186 电信:133、153、180、189、(1349卫通)

  • 总结起来就是第一位必定为1,第二位必定为3或5或8,其他位置的可以为0-9

*/

val telRegex = “[1][358]\d{9}”// "[1]“代表第1位为数字1,”[358]“代表第二位可以为3、5、8中的一个,”\d{9}"代表后面是可以是0~9的数字,有9位。

if (TextUtils.isEmpty(mobileNums))

return false

else

return mobileNums.matches(telRegex.toRegex())

}

/**

  • 判断一个字符串的位数

  • @param str

  • @param length

  • @return

*/

fun isMatchLength(str: String, length: Int): Boolean {

if (str.isEmpty()) {

return false

} else {

return if (str.length == length) true else false

}

}

/**

  • 权限校验

  • @param activity

*/

fun checkPermission(activity: Activity) {

if (Build.VERSION.SDK_INT >= 23) {

val readPhone = activity.checkSelfPermission(Manifest.permission.READ_PHONE_STATE)

val receiveSms = activity.checkSelfPermission(Manifest.permission.RECEIVE_SMS)

val readSms = activity.checkSelfPermission(Manifest.permission.READ_SMS)

val readContacts = activity.checkSelfPermission(Manifest.permission.READ_CONTACTS)

val readSdcard = activity.checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE)

题外话

不管怎么样,不论是什么样的大小面试,要想不被面试官虐的不要不要的,只有刷爆面试题题做好全面的准备,当然除了这个还需要在平时把自己的基础打扎实,这样不论面试官怎么样一个知识点里往死里凿,你也能应付如流啊~

最后如果马化腾把腾讯给你一天,你会来做什么?欢迎评论区讨论。

L_STORAGE)

题外话

不管怎么样,不论是什么样的大小面试,要想不被面试官虐的不要不要的,只有刷爆面试题题做好全面的准备,当然除了这个还需要在平时把自己的基础打扎实,这样不论面试官怎么样一个知识点里往死里凿,你也能应付如流啊~

[外链图片转存中…(img-sgroFFTF-1646479217043)]

最后如果马化腾把腾讯给你一天,你会来做什么?欢迎评论区讨论。

举报

相关推荐

0 条评论