common-kit项目
项目介绍
说明
为了更快捷的开发,为了更简单的开发,为了更快乐的开发,在此封装了控件、组件、常用工具以及有趣的代码。
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项目相关推荐
- Mozilla “Common Voice” 开源语音识别项目
语音识别技术可能会彻底改变我们与机器的交互方式,但通常技术开发代价昂贵,而且有专利上的使用限制.大多数语音识别技术都被封锁在少数的大公司内.Mozilla认为这样会阻碍创新,因此它发起了"C ...
- NetCore学习实践1__项目创建和配置文件的获取
工具安装:vs2017+版本,.Net Core2.0组件 .NET Core 2.0 SDK win-x64下载地址:https://download.microsoft.com/download/ ...
- springcloud feign 服务调用其他服务_springCloud微服务项目 构建公共的feign调用
在微服务项目中加入有一个微服务的接口,很多其他的微服务都需要调用它,那么我们可以写在公共的项目中,而不需要每个微服务都建立一个相应 的feign 1.先在common 公共项目中建一个公共feign调 ...
- 编译 android 内核,编译内核 | Android 开源项目 | Android Open Source Project
本页详细介绍了如何仅编译内核.以下说明假设您尚未下载整个 AOSP:如果您已完成下载,则可以跳过 git clone 对应的步骤,但下载内核源代码的步骤除外. 本部分中的所有示例均使用 hikey 内 ...
- 微服务调用传string值_springCloud微服务项目 构建公共的feign调用
在微服务项目中加入有一个微服务的接口,很多其他的微服务都需要调用它,那么我们可以写在公共的项目中,而不需要每个微服务都建立一个相应 的feign 1.先在common 公共项目中建一个公共feign调 ...
- OSS.Common扩展.Net Standard支持实例分享
上篇(.Net基础体系和跨框架开发普及)介绍了.Net当前生态下的大概情况,也分享了简单实现的过程,这篇文章就是讲解我的OSS.Common项目扩展.Net Standard 支持的过程,主要集中在: ...
- springboot导入项目依赖报错_最详细的 Spring Boot 多模块开发与排坑指南
来源于公众未读代码 , 作者达西呀 创建项目 创建一个 SpringBoot 项目非常的简单,简单到这里根本不用再提.你可以在使用 IDEA 新建项目时直接选择 Spring Initlalize 创 ...
- 搭建MVC及WebAPI项目框架时碰到的问题集合
搭建MVC及WebAPI项目框架时碰到的问题集合 阅读169次 2013/5/31 4:27:26 前言 刚开始创建MVC与Web API的混合项目时,碰到好多问题,今天拿出来跟大家一起分享下.有朋友 ...
- 大项目微服务架构设计
根据目前产品存在的问题,针对快速开发.海量用户.大量数据.低延迟等互联网应用的实际需要,通过对业务架构.系统架构.基础架构.技术架构进行分析,采用先进实用的微服务SOA架构重构智慧校园.数字化校园等产 ...
- 项目结构设计 java_Java项目架构设计
传统项目架构设计问题 说明:由于单体项目将所有的模块都写到了一起,将来如果其中一个模块出了问题,将导致整个项目不能正常的运行! 分布式架构设计 分布式介绍 由于传统项目导致各个模块之间的耦合性较高,所 ...
最新文章
- python io流a+_Python基础——文件操作及IO流
- 知识梳理——CSS篇
- DISCUZ x2.5 插件实现DIY功能,让页面也可以自由设计
- Python基础(10) - 异常
- 数字图像处理吴娱课后答案_数字图像处理课后题答案
- 关于 SAP Spartacus SSR 服务器返回的响应是否应该被缓存的问题
- 北理工计算机学院新闻,北理工计算机学子勇夺CVPR 2021 AI安全国际顶级赛事季军...
- 技能的反面 - 魔方和模仿
- RobotFramework自动化测试框架-Selenium Web自动化(-)-Open Browser和Close Browser
- 当前时间加30分钟_男性早晨坚持慢跑30分钟,一段时间后,或许这些变化不请自来...
- java android 五子棋游戏_基于Android平台五子棋游戏最终版.doc
- win10环境下MinGW和MSYS的安装与配置
- 《软件工程导论》期末复习知识点总结(全)
- 微信小程序npm引用ui框架
- TMS320F28377D的外设应用笔记(1)——Epwm配置
- 斑马打印机linux驱动安装教程,linux-Zebra软件包的基本安装与配置
- 用easywechat插件做微信支付
- 《Unity Shader入门精要》 第五章 开始学习Unity Shader之旅 笔记
- 简易客房管理系统(C++)
- 金山软件刘鑫:有限使用UML
热门文章
- Kubuntu22.04如何使用Wallpaper Engine for Kde插件改善桌面
- c++多态例子:制作饮料
- 2021-08-18 【O2 优化是什么东西?氧气优化!?】
- 超宽带脉冲定位方案,UWB精准定位技术,无线室内定位应用
- (转)精益技术简历之道——改善技术简历的47条原则
- 使用散列表进行查找【查找关键词:电话号码,名称】【平方取中法,除留余数法】【开放地址探测法,公共溢出区法】【计算ASL】
- 交换机怎么用计算机配置,巧妙配置 用交换机控制网络(一) -电脑资料
- BZOJ 5049. 【GDOI2017模拟一试4.11】腐女的生日
- 测试用例管理工具与禅道
- 18秋计算机应用基础在线作业3,14秋学期《计算机应用基础》在线作业3