# common-kit **Repository Path**: jackeysun/common-kit ## Basic Information - **Project Name**: common-kit - **Description**: 组件、控件等 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 5 - **Forks**: 2 - **Created**: 2021-09-30 - **Last Updated**: 2022-09-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 项目介绍 ## 说明 为了更快捷的开发,为了更简单的开发,为了更快乐的开发,在此封装了控件、组件、常用工具以及有趣的代码。 [项目地址]: https://gitee.com/jackeysun/common-kit "common-kit" 持续更新中...... ## 远程引用 ```gradle allprojects { repositories { google() jcenter() mavenCentral() maven { url uri('https://gitee.com/jackeysun/common-kit/raw/master/repo') } } } ``` ```gradle dependencies { implementation 'com.uu:util:1.0.7' //常用工具 implementation 'com.uu:common:1.0.9' //通用工具 implementation 'com.uu:widget:1.0.7' //常用控件 } ``` ## 版本:1.0.9 ### common包 MarkerViewSpan:配合Span使用,在TextView中添加View ```kotlin Span.setSpan( MarkerViewSpan(markerView), word.start, word.end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE ) ``` CenterImageSpan:自定义的ImageSpan(默认ImageSpan图片不与文字垂直方向对其) AbsPopupWindow:悬浮窗基础类 SelectableTextView:选择单词的TextView,可在其中添加悬浮窗和选中字体的属性修改 ```kotlin var selectionInfo: SelectionInfo = SelectionInfo()//选中单词的背景色 var floatWindow: IFloatWindow? = SimplePopupWindow(context)//悬浮窗,可自己定义悬浮窗(继承AbsPopupWindow赋值给他即可) data class SelectionInfo( var mSpan: Any? = null, var mStart: Int = 0, var mEnd: Int = 0, var mSpannable: Spannable? = null, var backgroundColor: Int = Color.parseColor("#4DFED400") ) ``` 该View中提供以上两个属性 ```xml ``` SelectCallbackTextView: 继承至SelectableTextView,提供了接口 ```kotlin interface OnSelectListener{ fun onSelected(selectText: CharSequence?) } ``` ## 版本:1.0.5 ### widget包 音视频播放控件 ```kotlin //网络权限 ``` ```xml ``` ```kotlin mainBinding.av.path = DataSource.mp3//这是资源 mainBinding.av.speeds = mutableListOf(1.0f, 1.1f,1.2f)//这是倍数播放 ``` ### common包 IData,AbsAdapter,AbsViewHolder:增加item中view的点击事件处理`addClickId(id)` ```kotlin class MainActivity2 : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val main2Binding = ActivityMain2Binding.inflate(layoutInflater) setContentView(main2Binding.root) val adapter = AbsAdapter {adapter, view, position -> when (view.id) { R.id.tv -> { Toast.makeText(MainActivity2@this, "${adapter.getItem(position).content}", Toast.LENGTH_SHORT).show() } R.id.tv2 -> { Toast.makeText(MainActivity2@this, "${adapter.getItem(position).content}", Toast.LENGTH_SHORT).show() } } } // val adapter = AbsAdapter() adapter.addLayout(0, R.layout.item_view0) adapter.addLayout(1, R.layout.item_view1) adapter.addClickId(R.id.tv) adapter.addClickId(R.id.tv2) val datas = mutableListOf() for (i in 0..100) { datas.add(TestData("第${i}项", if (i % 2 == 0) 0 else 1)) } adapter.data = datas main2Binding.rv.adapter = adapter main2Binding.rv.layoutManager = LinearLayoutManager(this) } } class TestData(val content: String, private val type: Int) : IData { override fun getType(): Int { return type } override fun bind(holder: RecyclerView.ViewHolder) { when (type) { 0 -> { val mBinding = ItemView0Binding.bind(holder.itemView) mBinding.tv.text = content } 1 -> { val mBinding = ItemView1Binding.bind(holder.itemView) mBinding.tv2.text = content } } } } ``` ## 版本:1.0.4 ### util包 SpExt:SharedPreferences工具(增加get方法,可自动判断获得数据类型,根据默认值判断类型) ```kotlin Storage.put("key1", "string") Storage.put("key2", 0) val a1: String = Storage.get("key1", "ssss") val a2: Int = Storage.get("key2", 0) ``` Ext: 随机数工具--新增(左闭右开区间) ```kotlin println(Random().random(3, 4))//[3,3+4) println(3.randomTo(100))//[3,100) ``` gson解析工具--新增 ```kotlin fun main() { val list = mutableListOf() for (i in 0..10) { list.add(Data("$i", i, Date())) } val data = Data("ssss", 19, Date()) println(list.toJson()) println(list.toJson().toObject>()) println(data.toJson { GSON }) println(data.toJson { GSON }.toObject { GSON }) } data class Data(val string: String, val int: Int, val date: Date) ``` ### common包 Ext:扩展工具 ​ 扩展函数go:用于跳转Activity ```kotlin go(MainActivity2()) go(MainActivity2()) { i: Intent -> } ``` StringExt:字符串处理工具(提供字体样式,字体大小,字体颜色,背景色以及其他属性扩展方法) ```kotlin Span.addSection("我已阅读并同意") .addStyleSection( "《用户注销协议》", Color.WHITE, 24, Color.BLUE, Typeface.BOLD ).into(main3Binding.tv) ``` ### widget包 ClockView:时钟控件(布局中引用即可使用) ## 版本:1.0.3 ### util包 BitmapExt:bitmap处理工具 DateExt:日期工具 ```kotlin println(Date().format("E")) println("2021-11-20 10:07:24".toDate("yyyy-MM-dd HH:mm:ss")) val calendar = Calendar.getInstance() calendar.set(2026,0,27,15,2,59) println(calendar.time.format("E")) println("天数:${calendar.time.toDays()}") println("时数:${calendar.time.toHours()}") println("分数:${calendar.time.toMinutes()}") println("秒数:${calendar.time.toSeconds()}") println("年:${calendar.time.getYEAR()}") println("月:${calendar.time.getMONTH()}") println("日:${calendar.time.getDayOfMonth()}") println("时:${calendar.time.getHour()}") println("分:${calendar.time.getMinute()}") println("秒:${calendar.time.getSecond()}") println("一年中第几天:${calendar.time.getDayOfYear()}") println("一周中第几天:${calendar.time.getDayOfWeek()}") println("一月中第几周:${calendar.time.getWeekOfMonth()}") ``` Display:屏幕显示相关工具 DividerItemDecoration:RecyclerView间距工具 FileExt:文件处理工具 KeyboardExt:键盘工具 SpExt:SharedPreferences工具(增加get方法,可自动判断获得数据类型,根据默认值判断类型) ToastExt:Toast工具 ### common包 IData,AbsAdapter,AbsViewHolder:RecyclerView封装 ```kotlin class MainActivity2 : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val main2Binding = ActivityMain2Binding.inflate(layoutInflater) setContentView(main2Binding.root) val adapter = TestAdapter() adapter.layoutIds[0] = R.layout.item_view0 adapter.layoutIds[1] = R.layout.item_view1 val datas = mutableListOf() for (i in 0..100) { datas.add(TestData("第${i}项", if (i % 2 == 0) 0 else 1)) } adapter.data = datas main2Binding.rv.adapter = adapter main2Binding.rv.layoutManager = LinearLayoutManager(this) } } class TestData(private val content: String, private val type: Int) : IData { override fun getType(): Int { return type } override fun bind(holder: AbsViewHolder) { val tv: TextView = holder.mRootView.findViewById(R.id.tv) tv.text = content } } class TestAdapter : AbsAdapter() ``` ActivityManager:activity管理类 DialogFragmentShowPic:图片显示弹窗 Ext:扩展工具(富文本显示等等) ### widget包 CircleDrawable,CircleProgressDrawable:圆形圆圈 ClearEditText:带清空的输入框 LoadingDialog:加载dialog