Android BitmapShader更简易的实现刮刮乐功能,Kotlin

打印 上一主题 下一主题

主题 959|帖子 959|积分 2877

Android BitmapShader更简易的实现刮刮乐功能,Kotlin

 

比这种方式 Android利用PorterDuffXfermode模式PorterDuff.Mode.SRC_OUT橡皮擦实现“刮刮乐”效果,Kotlin(2)-CSDN博客
更简单实现刮刮乐效果。
 
  1. import android.content.Context
  2. import android.graphics.BitmapFactory
  3. import android.graphics.BitmapShader
  4. import android.graphics.Canvas
  5. import android.graphics.Paint
  6. import android.graphics.Path
  7. import android.graphics.Shader
  8. import android.util.AttributeSet
  9. import android.view.MotionEvent
  10. import androidx.appcompat.widget.AppCompatImageView
  11. class MyView : AppCompatImageView {
  12.     private var mPaint: Paint = Paint()
  13.     private var mPath: Path = Path()
  14.     private var mPreX = 0f
  15.     private var mPreY = 0f
  16.     private var mBitmapShader: BitmapShader? = null
  17.     private val mResId = R.mipmap.p
  18.     constructor(ctx: Context, attributeSet: AttributeSet) : super(ctx, attributeSet) {
  19.         mPaint.style = Paint.Style.STROKE
  20.         mPaint.strokeWidth = 50f
  21.         val bmp = BitmapFactory.decodeResource(resources, mResId, null)
  22.         mBitmapShader = BitmapShader(bmp, Shader.TileMode.CLAMP, Shader.TileMode.REPEAT)
  23.         mPaint.setShader(mBitmapShader)
  24.     }
  25.     override fun onDraw(canvas: Canvas) {
  26.         super.onDraw(canvas)
  27.         canvas.drawPath(mPath, mPaint)
  28.     }
  29.     override fun onTouchEvent(event: MotionEvent): Boolean {
  30.         when (event.action) {
  31.             MotionEvent.ACTION_DOWN -> {
  32.                 mPath.moveTo(event.x, event.y)
  33.                 mPreX = event.x
  34.                 mPreY = event.y
  35.                 return true
  36.             }
  37.             MotionEvent.ACTION_MOVE -> {
  38.                 val endX = (mPreX + event.x) / 2
  39.                 val endY = (mPreY + event.y) / 2
  40.                 mPath.quadTo(mPreX, mPreY, endX, endY)
  41.                 mPreX = event.x
  42.                 mPreY = event.y
  43.             }
  44.             MotionEvent.ACTION_UP -> {
  45.             }
  46.         }
  47.         postInvalidate()
  48.         return super.onTouchEvent(event)
  49.     }
  50. }
复制代码
 
 
 

 
进入后起首是红色,随动手指在屏幕上划过,原图出现。
 
 
 
 
Android利用PorterDuffXfermode模式PorterDuff.Mode.SRC_OUT橡皮擦实现“刮刮乐”效果,Kotlin(2)-CSDN博客文章欣赏阅读630次,点赞27次,收藏14次。Android拼接合并图片生成长图代码实现合并两张图片,以第一张图片的宽度为标准,假如被合并的第二张图片宽度和第一张差别,那么就以第一张图片的宽度为准线,对第二张图片举行缩放。Android Bitmap保存成至手机图片文件,Kotlin_android bitmap保存图片-CSDN博客。Android拼接合并图片生成长图代码实现合并两张图片,以第一张图片的宽度为标准,假如被合并的第二张图片宽度和第一张差别,那么就以第一张图片的宽度为准线,对第二张图片举行缩放。
https://blog.csdn.net/zhangphil/article/details/144536192Android利用PorterDuffXfermode模式PorterDuff.Mode.SRC_OUT橡皮擦实现马赛克效果,Kotlin(3)-CSDN博客文章欣赏阅读493次,点赞5次,收藏5次。Android拼接合并图片生成长图代码实现合并两张图片,以第一张图片的宽度为标准,假如被合并的第二张图片宽度和第一张差别,那么就以第一张图片的宽度为准线,对第二张图片举行缩放。Android Bitmap保存成至手机图片文件,Kotlin_android bitmap保存图片-CSDN博客。Android拼接合并图片生成长图代码实现合并两张图片,以第一张图片的宽度为标准,假如被合并的第二张图片宽度和第一张差别,那么就以第一张图片的宽度为准线,对第二张图片举行缩放。
https://blog.csdn.net/zhangphil/article/details/144595380
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

大连密封材料

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表