# 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