kotlin语言常用功能代码总结篇

    技术2022-07-21  68

    创建自定义弹框

    val view = LayoutInflater.from(context).inflate(R.layout.dialog_no_net, null, false) val builder = AlertDialog.Builder(context) builder.setView(view) val mDialog= builder.create().also { noNetDialog=it } mDialog.window!!.setBackgroundDrawable(ColorDrawable(0)) val vCancel = view.findViewById<TextView>(R.id.tvCancel) val tvConnect = view.findViewById<TextView>(R.id.tvConnect) vCancel.setOnClickListener { mDialog.dismiss() } tvConnect.setOnClickListener {context.startActivity(Intent(Settings.ACTION_WIFI_SETTINGS))} mDialog.show()

    其中:dialog_no_net是你的自定义dialog布局,setBackgroundDrawable(ColorDrawable(0))是设置背景为透明。vCancel 、tvConnect 是两个控件。vCancel点击dialog消失,tvConnect是跳转到WIFI连接界面。

    屏蔽返回键和Home键

    MainActivity.kt

    val FLAG_HOMEKEY_DISPATCHED = -0x80000000//定义屏蔽参数 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) this.getWindow().setFlags(FLAG_HOMEKEY_DISPATCHED, FLAG_HOMEKEY_DISPATCHED) } override fun onKeyDown(keyCode :Int, event:KeyEvent):Boolean{ return when(keyCode){ KeyEvent.KEYCODE_BACK,KeyEvent.KEYCODE_MANNER_MODE,KeyEvent.KEYCODE_HOME -> true else -> false } }

    这样做返回键屏蔽更安全。使用了屏蔽参数KeyEvent.KEYCODE_BACK,KeyEvent.KEYCODE_MANNER_MODE,KeyEvent.KEYCODE_HOME分别为返回键,方式模式键,Home键

    Activity之间的安全跳转

    从aActivity跳转bActivity

    在aActivity中

    bActivity.open( this, SPHelper.getSysGrade()//传入的参数 )

    在bActivity中

    class MainActivity:Activity{ companion object { fun open(context: Context, @GradeTag grade: Int) { val intent = Intent(context, MainActivity::class.java) .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) .putExtra(KEY_MAIN_GRADE, grade)//获取aActivity中传入的参数 context.startActivity(intent) } } ...... }

    这样的跳转经常在协同开发同一个应用的时候经常用到。双发各自编写自己的Activity,跳转不受传入参数的影响。

    获取程序正在运行的Activity(即TopActivity)

    private fun getRunningActivityName(): String { val activityManager: ActivityManager = getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager return activityManager.getRunningTasks(1).get(0).topActivity?.getClassName().toString() }

    这里最终获取到了Activity.class的名字String。

    Processed: 0.009, SQL: 9