4 Star 5 Fork 2

jackeysun / common-kit

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

项目介绍

说明

为了更快捷的开发,为了更简单的开发,为了更快乐的开发,在此封装了控件、组件、常用工具以及有趣的代码。

持续更新中......

远程引用

allprojects {
    repositories {
        google()
        jcenter()
        mavenCentral()
        maven { url uri('https://gitee.com/jackeysun/common-kit/raw/master/repo') }
    }
}
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

Span.setSpan(
                MarkerViewSpan(markerView),
                word.start,
                word.end,
                Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
            )

CenterImageSpan:自定义的ImageSpan(默认ImageSpan图片不与文字垂直方向对其)

AbsPopupWindow:悬浮窗基础类

SelectableTextView:选择单词的TextView,可在其中添加悬浮窗和选中字体的属性修改

    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中提供以上两个属性

 <com.jackeysun.common.text.SelectableTextView
            android:id="@+id/tv2"
            android:layout_width="match_parent"
            android:background="@color/white"
            android:layout_height="match_parent" />

SelectCallbackTextView: 继承至SelectableTextView,提供了接口

interface OnSelectListener{
    fun onSelected(selectText: CharSequence?)
}

版本:1.0.5

widget包

音视频播放控件

<uses-permission android:name="android.permission.INTERNET" />//网络权限
<com.jackeysun.widget.media.AudioView
    android:id="@+id/av"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />
mainBinding.av.path = DataSource.mp3//这是资源
mainBinding.av.speeds = mutableListOf(1.0f, 1.1f,1.2f)//这是倍数播放

common包

IData,AbsAdapter,AbsViewHolder:增加item中view的点击事件处理addClickId(id)

class MainActivity2 : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        val main2Binding = ActivityMain2Binding.inflate(layoutInflater)
        setContentView(main2Binding.root)

        val adapter = AbsAdapter<TestData> {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<TestData>()
        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<TestData>()
        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方法,可自动判断获得数据类型,根据默认值判断类型)

Storage.put("key1", "string")
Storage.put("key2", 0)
val a1: String = Storage.get("key1", "ssss")
val a2: Int = Storage.get("key2", 0)

Ext:

随机数工具--新增(左闭右开区间)

println(Random().random(3, 4))//[3,3+4)
println(3.randomTo(100))//[3,100)

gson解析工具--新增

fun main() {

    val list = mutableListOf<Data>()
    for (i in 0..10) {
        list.add(Data("$i", i, Date()))
    }

    val data = Data("ssss", 19, Date())
    println(list.toJson())
    println(list.toJson().toObject<List<Data>>())

    println(data.toJson { GSON })
    println(data.toJson { GSON }.toObject<Data> { GSON })
}

data class Data(val string: String, val int: Int, val date: Date)

common包

Ext:扩展工具

​ 扩展函数go:用于跳转Activity

go(MainActivity2())
go(MainActivity2()) { i: Intent ->
}

StringExt:字符串处理工具(提供字体样式,字体大小,字体颜色,背景色以及其他属性扩展方法)

Span.addSection("我已阅读并同意")
    .addStyleSection(
        "《用户注销协议》",
        Color.WHITE,
        24,
        Color.BLUE,
        Typeface.BOLD
    ).into(main3Binding.tv)

widget包

ClockView:时钟控件(布局中引用即可使用)

版本:1.0.3

util包

BitmapExt:bitmap处理工具

DateExt:日期工具

    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封装

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<TestData>()
        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<AbsViewHolder> {

    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<TestData>()

ActivityManager:activity管理类

DialogFragmentShowPic:图片显示弹窗

Ext:扩展工具(富文本显示等等)

widget包

CircleDrawable,CircleProgressDrawable:圆形圆圈

ClearEditText:带清空的输入框

LoadingDialog:加载dialog

空文件

简介

组件、控件等 展开 收起
Kotlin 等 2 种语言
取消

发行版 (16)

全部

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/jackeysun/common-kit.git
git@gitee.com:jackeysun/common-kit.git
jackeysun
common-kit
common-kit
master

搜索帮助