kotlin 的使用

1.跳转Activity

常规方式

var intent =  Intent(this@MainActivity,MainActivity::class.java)
        intent.putExtra("name","wang")
        intent.putExtra("age",20)
        startActivity(intent)

使用anko

导入依赖:

implementation "org.jetbrains.anko:anko-common:0.10.8"
startActivity<MainActivity>(
            "name" to "wang",
            "age" to 20,
            Pair("major","computer")
        )

2.类型序列化

使用 data class ,再加上@Parcelize注解 

@Parcelize
data class User(var name:String) {

}

在build.gradle里添加 

plugins {
    id 'com.android.application'
    id 'kotlin-android'
    id 'kotlin-android-extensions' 新添加
}
android {
    compileSdk 31

    defaultConfig {
        applicationId "com.example.kotlindemo"
        minSdk 29
        targetSdk 31
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = '1.8'
    }
    androidExtensions { 新添加
        experimental = true
    }
}

3.在输入完成后,自动隐藏输入法

//定义一个编辑框监听器,在输入文本达到指定长度时自动隐藏输入法
    private class HideTextWatcher implements TextWatcher {
        private EditText mView;
        private int mMaxLength;
        private CharSequence mStr;
 
        public HideTextWatcher(EditText v) {
            super();
            mView = v;
            //通过反射机制获取编辑框的最大长度
            mMaxLength = ViewUtil.getMaxLength(v);
        }
 
        //在编辑框的输入文本变化前触发
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
 
        }
 
        //在编辑框的输入文本变化时触发
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            mStr = s;
        }
 
        //在编辑框输入文本变化后触发
        @Override
        public void afterTextChanged(Editable s) {
            if (mStr == null || mStr.length() ==0) {
                return;
            }
            //输入文本达到11位(如手机号码)时关闭输入法
            if (mStr.length() == 11 && mMaxLength == 11) {
                ViewUtil.hideAllInputMethod(EditHideActivity.this);
            }
            //输入文本达到6位(如登录密码)时关闭输入法
            if (mStr.length() == 6 && mMaxLength ==6) {
                ViewUtil.hideOneInputMethod(EditHideActivity.this, mView);
            }
        }
    }
 public static void hideAllInputMethod(Activity act) {
        //从系统服务中获取输入法管理器
        InputMethodManager imm = (InputMethodManager) act.getSystemService(Context.INPUT_METHOD_SERVICE);
        if (imm.isActive()) {   //软键盘如果已经打开则关闭之
            imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
        }
    }
 
    public static void hideOneInputMethod(Activity act, View v) {
        //从系统服务中获取输入法管理器
        InputMethodManager imm = (InputMethodManager)act.getSystemService(Context.INPUT_METHOD_SERVICE);
        //关闭屏幕上的输入法软键盘
        imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
    }

猜你喜欢

转载自blog.csdn.net/xiaowang_lj/article/details/128889120