XArtBoard是一个Android画板库,可以很方便加载图片到画板上,并对画板进行涂鸦,结束后可以保存图片输出到本地
1, 添加maven仓库
maven { url "https://jitpack.io" }
2, 添加依赖
dependencies {
implementation 'com.github.shengMR:XArtBoard:v1.0.0'
}
项目中使用了viewbinding ,需要在app模块下的build.gradle启用viewbinding
android {
...
viewBinding {
enabled = true
}
}
Activity的onCreate
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
}
}
注意:
图片加载:项目中的图片加载都是原图,并没进行优化,可以使用[Glide](GitHub - bumptech/glide: An image loading and caching library for Android focused on smooth scrolling)进行优化之后再加载进画板
<cn.com.cys.xartboard.XArtBoard
android:id="@+id/xartboard"
android:layout_width="match_parent"
android:layout_height="match_parent">
</cn.com.cys.xartboard.XArtBoard>
类似于在图片上面进行编辑,可以设置图片的位置,靠边或者居中
binding.xartboard.loadBitmap(bitmap, gravity = XGravity.GravityCenter)
// 设置画笔为线条模式
binding.xartboard.setPenType(XPenType.LINE)
// 设置画笔颜色
binding.xartboard.setPenColor(Color.BLACK)
// 设置画笔宽度
binding.xartboard.setPenWidth(50f)
// 设置橡皮擦模式
binding.xartboard.setPenType(XPenType.ERASER)
// 设置橡皮擦宽度
binding.xartboard.setPenEraserWidth(50f)
撤回上一次操作
binding.xartboard.retract()
恢复之前撤回的操作
binding.xartboard.retrieve()
清空涂鸦
binding.xartboard.reset()
获取bitmap对象后,可以对bitmap进行操作,例如保存到本地
binding.xartboard.getBitmap()
库中内置了方法方便直接保存bitmap到本地
在Activity/ViewModel中保存
// 保存到本地
saveXArtBoardToLocal( binding.xartboard.getBitmap(), "${filesDir}/${System.currentTimeMillis()}.png") { bool, _ ->
if (bool) {
Toast.makeText(this, "保存成功", Toast.LENGTH_SHORT).show()
} else {
Toast.makeText(this, "保存失败", Toast.LENGTH_SHORT).show()
}
}
// 设置方形模式
binding.xartboard.setPenType(XPenType.RECT)
// 设置正方形模式
binding.xartboard.setPenType(XPenType.SQUARE)
// 设置椭圆模式
binding.xartboard.setPenType(XPenType.OVAL)
// 设置圆形模式
binding.xartboard.setPenType(XPenType.CIRCLE)