项目介绍

说明

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

common-kit项目地址

持续更新中......

远程引用

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.SelectableTextViewandroid: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.AudioViewandroid: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 = datasmain2Binding.rv.adapter = adaptermain2Binding.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(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("《*********协议》",textColor = Color.WHITE,textSize = it.animatedValue as Int,backgroundColor = Color.BLUE,textStyle = 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_view0adapter.layoutIds[1] = R.layout.item_view1val datas = mutableListOf<TestData>()for (i in 0..100) {datas.add(TestData("第${i}项", if (i % 2 == 0) 0 else 1))}adapter.data = datasmain2Binding.rv.adapter = adaptermain2Binding.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

common-kit项目相关推荐

  1. Mozilla “Common Voice” 开源语音识别项目

    语音识别技术可能会彻底改变我们与机器的交互方式,但通常技术开发代价昂贵,而且有专利上的使用限制.大多数语音识别技术都被封锁在少数的大公司内.Mozilla认为这样会阻碍创新,因此它发起了"C ...

  2. NetCore学习实践1__项目创建和配置文件的获取

    工具安装:vs2017+版本,.Net Core2.0组件 .NET Core 2.0 SDK win-x64下载地址:https://download.microsoft.com/download/ ...

  3. springcloud feign 服务调用其他服务_springCloud微服务项目 构建公共的feign调用

    在微服务项目中加入有一个微服务的接口,很多其他的微服务都需要调用它,那么我们可以写在公共的项目中,而不需要每个微服务都建立一个相应 的feign 1.先在common 公共项目中建一个公共feign调 ...

  4. 编译 android 内核,编译内核  |  Android 开源项目  |  Android Open Source Project

    本页详细介绍了如何仅编译内核.以下说明假设您尚未下载整个 AOSP:如果您已完成下载,则可以跳过 git clone 对应的步骤,但下载内核源代码的步骤除外. 本部分中的所有示例均使用 hikey 内 ...

  5. 微服务调用传string值_springCloud微服务项目 构建公共的feign调用

    在微服务项目中加入有一个微服务的接口,很多其他的微服务都需要调用它,那么我们可以写在公共的项目中,而不需要每个微服务都建立一个相应 的feign 1.先在common 公共项目中建一个公共feign调 ...

  6. OSS.Common扩展.Net Standard支持实例分享

    上篇(.Net基础体系和跨框架开发普及)介绍了.Net当前生态下的大概情况,也分享了简单实现的过程,这篇文章就是讲解我的OSS.Common项目扩展.Net Standard 支持的过程,主要集中在: ...

  7. springboot导入项目依赖报错_最详细的 Spring Boot 多模块开发与排坑指南

    来源于公众未读代码 , 作者达西呀 创建项目 创建一个 SpringBoot 项目非常的简单,简单到这里根本不用再提.你可以在使用 IDEA 新建项目时直接选择 Spring Initlalize 创 ...

  8. 搭建MVC及WebAPI项目框架时碰到的问题集合

    搭建MVC及WebAPI项目框架时碰到的问题集合 阅读169次 2013/5/31 4:27:26 前言 刚开始创建MVC与Web API的混合项目时,碰到好多问题,今天拿出来跟大家一起分享下.有朋友 ...

  9. 大项目微服务架构设计

    根据目前产品存在的问题,针对快速开发.海量用户.大量数据.低延迟等互联网应用的实际需要,通过对业务架构.系统架构.基础架构.技术架构进行分析,采用先进实用的微服务SOA架构重构智慧校园.数字化校园等产 ...

  10. 项目结构设计 java_Java项目架构设计

    传统项目架构设计问题 说明:由于单体项目将所有的模块都写到了一起,将来如果其中一个模块出了问题,将导致整个项目不能正常的运行! 分布式架构设计 分布式介绍 由于传统项目导致各个模块之间的耦合性较高,所 ...

最新文章

  1. python io流a+_Python基础——文件操作及IO流
  2. 知识梳理——CSS篇
  3. DISCUZ x2.5 插件实现DIY功能,让页面也可以自由设计
  4. Python基础(10) - 异常
  5. 数字图像处理吴娱课后答案_数字图像处理课后题答案
  6. 关于 SAP Spartacus SSR 服务器返回的响应是否应该被缓存的问题
  7. 北理工计算机学院新闻,北理工计算机学子勇夺CVPR 2021 AI安全国际顶级赛事季军...
  8. 技能的反面 - 魔方和模仿
  9. RobotFramework自动化测试框架-Selenium Web自动化(-)-Open Browser和Close Browser
  10. 当前时间加30分钟_男性早晨坚持慢跑30分钟,一段时间后,或许这些变化不请自来...
  11. java android 五子棋游戏_基于Android平台五子棋游戏最终版.doc
  12. win10环境下MinGW和MSYS的安装与配置
  13. 《软件工程导论》期末复习知识点总结(全)
  14. 微信小程序npm引用ui框架
  15. TMS320F28377D的外设应用笔记(1)——Epwm配置
  16. 斑马打印机linux驱动安装教程,linux-Zebra软件包的基本安装与配置
  17. 用easywechat插件做微信支付
  18. 《Unity Shader入门精要》 第五章 开始学习Unity Shader之旅 笔记
  19. 简易客房管理系统(C++)
  20. 金山软件刘鑫:有限使用UML

热门文章

  1. Kubuntu22.04如何使用Wallpaper Engine for Kde插件改善桌面
  2. c++多态例子:制作饮料
  3. 2021-08-18 【O2 优化是什么东西?氧气优化!?】
  4. 超宽带脉冲定位方案,UWB精准定位技术,无线室内定位应用
  5. (转)精益技术简历之道——改善技术简历的47条原则
  6. 使用散列表进行查找【查找关键词:电话号码,名称】【平方取中法,除留余数法】【开放地址探测法,公共溢出区法】【计算ASL】
  7. 交换机怎么用计算机配置,巧妙配置 用交换机控制网络(一) -电脑资料
  8. BZOJ 5049. 【GDOI2017模拟一试4.11】腐女的生日
  9. 测试用例管理工具与禅道
  10. 18秋计算机应用基础在线作业3,14秋学期《计算机应用基础》在线作业3