kotlin自定义项目中公用View
来源:互联网 发布:普通话发音软件安卓版 编辑:程序博客网 时间:2024/06/08 01:57
随着kotlin的推广,越来越多的kotlin文档可以在网上看到,今天就为大家分享一个基本的kotlin自定义view,首先Android studio配置kotlin的开发环境我就不细说了,因为网上类似这种文章太多了,随便一篇都可以帮你搞定。
开发中对于一些经常用到的控件,都可以考虑封装成一个基本的view,然后在使用的时候直接使用,不需要再一个个控件的组装,不仅节省了开发的时间,代码看起来也会更调理些,下面分享一下我平常封装view的方法,其实在我的第一篇博客里已经有使用,那个自定义的OperateView就是一个View的封装,在那块的使用时为了后续的逻辑处理方便,今天用kotlin的形式来简单封装一下公用View。如果没有看过OperateView的童鞋,可以抽时间看看
可换行的AutoBreakViewGroup扩展
下面直接上代码:
import android.content.Contextimport android.util.AttributeSetimport android.view.LayoutInflaterimport android.widget.FrameLayoutimport kotlinx.android.synthetic.main.view_add_delete.view.*/** * Created by bobo on 2017/11/29. */open class AddAndDeleteView(context: Context) : FrameLayout(context) { init { init(context) } constructor(context: Context,attributes: AttributeSet):this(context){ init(context,attributes) } fun init(context: Context,attributes: AttributeSet?=null){ LayoutInflater.from(context).inflate(R.layout.view_add_delete,this,true) initEvent() } fun initEvent(){ bt_add.setOnClickListener{ if(miClickCallBack!=null){ miClickCallBack.add() } } bt_delete.setOnClickListener{ if(miClickCallBack!=null){ miClickCallBack.delete() } } } lateinit var miClickCallBack:IClickCallBack fun initICallBack(iClickCallBack:IClickCallBack){ miClickCallBack=iClickCallBack } interface IClickCallBack{ fun add() fun delete() }}
首先自定义一个View然后继承于FrameLayout,构造方法的选择:一般在代码中使用的话,我是只重写第一个构造方法,但是如果在xml布局中写的话必须要重写第二个构造方法。如果没有重写的话会报一个android.view.InflateException错误,当你看到这个错误的时候说明就是你xml布局出错了。因为安卓系统解析xml文件的时候,会默认调用第二个构造方法。切记,切记,切记重要的事情说三遍。
kotlin中可以省去findViewById方法的关键代码import kotlinx.android.synthetic.main.你的布局文件名.*,然后在代码中就不用在写无聊的findViewById()方法,直接控件id.就可以调用。 这个确实比以前的java方便了不少。另外对于bt_add.setOnClickListener{}这种写法,其实是一种叫Lambda表达式和扩展函数结合的写法,如果感兴趣大家也可以去学学,挺方便的。定义一个IClickCallBack接口是为了方便使用接口回调来处理一些自定义View中的点击事件处理逻辑。好了,整体的思路和代码就是这些,最后再来个调用的代码,就结束了,如果也有在使用kotlin开发的童鞋,可以和我一起讨论遇到的问题和难点,我也是新手,呵呵,期待一起进步。
bt_click.setOnClickListener{ zdyView= object : AddAndDeleteView(this@TestActivity){} zdyView.initICallBack(object : AddAndDeleteView.IClickCallBack{ override fun delete() { toast("您点击了删除") } override fun add(){ toast("您点击了添加") }}) container.addView(zdyView)}一个简单的点击事件,然后实例化自定义的view,实例化接口对象,实现里面的方法,处理逻辑。完成
- kotlin自定义项目中公用View
- Kotlin自定义View之TabItem控制Fragments
- kotlin Recycler View 简单应用自定义adapter ,包括接口
- Android 自定义View 使用Kotlin编写雷达扫描效果
- 初识kotlin实现一个类似烟花效果的自定义view
- 自定义View中自定义属性
- Android 中自定义 view
- Android中自定义View
- android中自定义View
- Android中自定义View
- Android中自定义View
- Android中自定义View
- ios中自定义view
- Android中自定义view
- android中自定义View
- 自定义View中跳转
- python-自定义模块【公用】
- android项目中,java调用kotlin代码
- 记录
- cos
- SQL---计算两个日期之间的时间差
- webpack3实战(2)打包一个bootstrap项目(打包文件带hash)
- Mybatis提供的逆向工程
- kotlin自定义项目中公用View
- C# 多线程--原子操作
- 本地调试正常,发布后提示:未找到视图“xxx.cshtml”或其母版视图,或没有视图引擎支持搜索的位置。
- sublime使用过程中的一些常用配置
- RowBounds遇到的一个小问题
- Linux lspci查看硬件设备
- 安装jdk后出现bash: ./java: /lib/ld-linux.so.2: bad ELF interpreter: 没有那个文件或目录
- Encog3Java-User.pdf翻译:第二章 为Encog获取数据
- Binary file matches