搜文章
推荐 原创 视频 Java开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发
Lambda在线 > 小于先森 > Android Kotlin之BaseActivity

Android Kotlin之BaseActivity

小于先森 2018-02-28

一如既往,美图镇楼


第二步: 上代码

abstract class BaseActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {        super.onCreate(savedInstanceState)
        requestedOrientation= ActivityInfo.SCREEN_ORIENTATION_PORTRAIT //设置竖屏
        initParameters(intent.extras)
        setContentView(initLayout())
        initData()//数据操作
        initListener()
    }    abstract fun initParameters(bundle: Bundle?)    abstract fun initLayout():Int //设置布局layout
    abstract fun initData() //数据操作
    abstract fun initListener()    /***     * 执行判断点击在出edit的其他位置收起键盘     */
    override fun dispatchTouchEvent(ev: MotionEvent?): Boolean {        if(ev==null)            return super.dispatchTouchEvent(ev)        if(ev.action==MotionEvent.ACTION_DOWN&&currentFocus!=null&&isShouldHideKeyboard(currentFocus,ev)){
            AppKeyBoardUtils.hideInputMethod(this)
        }        return super.dispatchTouchEvent(ev)
    }    /**     * 根据EditText所在坐标和用户点击的坐标相对比,来判断是否隐藏键盘,因为当用户点击EditText时则不能隐藏     *     * @param v     * @param event     * @return     */
    private fun isShouldHideKeyboard(v: View?, event: MotionEvent): Boolean {        if (v != null && (v is EditText || v is Button)) {
            val l = intArrayOf(0, 0)
            v!!.getLocationInWindow(l)
            val left = l[0]
            val top = l[1]
            val bottom = top + v!!.getHeight()
            val right = left + v!!.getWidth()            if (event.x > left && event.x < right && event.y > top && event.y < bottom) {               return false
            } else {                return true
            }
        }        // 如果焦点不是EditText则忽略,这个发生在视图刚绘制完,第一个焦点不在EditText上,和用户用轨迹球选择其他的焦点
        return false
    }
}

持续更新中,下一次将用kotlin写一个mvp模板。请持续关注。



版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《Android Kotlin之BaseActivity》的版权归原作者「小于先森」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注小于先森微信公众号

小于先森微信公众号:yuxiansen_Geek

小于先森

手机扫描上方二维码即可关注小于先森微信公众号

小于先森最新文章

精品公众号随机推荐