当前位置: 首页 > news >正文

贵州住房城乡建设厅网站博客主题Wordpress

贵州住房城乡建设厅网站,博客主题Wordpress,手机海报制作app,Orchard与wordpressAndroid矩阵Matrix动画缩放Bitmap移动手指触点到ImageView中心位置#xff0c;Kotlin 借鉴 Android双指缩放ScaleGestureDetector检测放大因子大图移动到双指中心点ImageView区域中心#xff0c;Kotlin#xff08;2#xff09;-CSDN博客 在此基础上实现手指在屏幕上点击后Kotlin 借鉴 Android双指缩放ScaleGestureDetector检测放大因子大图移动到双指中心点ImageView区域中心Kotlin2-CSDN博客 在此基础上实现手指在屏幕上点击后动画放大图片在放大过程中移动手指触点位置到ImageView的中心。 import android.content.Context import android.graphics.Bitmap import android.graphics.Canvas import android.graphics.Color import android.graphics.Matrix import android.graphics.Paint import android.graphics.RectF import android.graphics.drawable.BitmapDrawable import android.os.Bundle import android.util.AttributeSet import android.util.Log import android.view.MotionEvent import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.widget.AppCompatImageView import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.delay import kotlinx.coroutines.launchclass MainActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)} }class MyImageView : AppCompatImageView {private var mCurX 0fprivate var mCurY 0fprivate var mCanDrawBitmap falseprivate var W 0private var H 0private val SCALE_FACTOR: Float 5.5fprivate var mOriginBmp: Bitmap? nullprivate var mCirclePaint Paint()private var mDeltaScaleFactor: Float 0fprivate var mAnimScaleBmp: Bitmap? nullprivate var mCanDrawTouchPoint falseprivate var mTouchPointX 0fprivate var mTouchPointY 0fconstructor(ctx: Context, attrs: AttributeSet) : super(ctx, attrs) {mCirclePaint.style Paint.Style.STROKEmCirclePaint.strokeWidth 10fmCirclePaint.isAntiAlias truemCirclePaint.color Color.REDmOriginBmp (this.drawable as BitmapDrawable).bitmap}override fun onSizeChanged(w: Int, h: Int, oldw: Int, oldh: Int) {super.onSizeChanged(w, h, oldw, oldh)W wH hLog.d(fly, W$W H$H)}override fun onTouchEvent(event: MotionEvent?): Boolean {if (event null) {return false}mCurX event.xmCurY event.ywhen (event.actionMasked) {MotionEvent.ACTION_DOWN - {//启动动画。startScaleAnim()}}return false}/*** Bitmap.createScaledBitmap耗时加剧卡顿。* 优化方案基于原图setRectToRect缩放到给定宽w高h的放大图。*/private fun getScaleBmp(w: Int, h: Int): Bitmap {val bmp Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888)val c Canvas(bmp)c.drawColor(Color.BLUE)val src RectF(0f, 0f, mOriginBmp!!.width.toFloat(), mOriginBmp!!.height.toFloat())val dst RectF(0f, 0f, w.toFloat(), h.toFloat())val mx Matrix()mx.setRectToRect(src, dst, Matrix.ScaleToFit.CENTER)c.drawBitmap(mOriginBmp!!, mx, null)return bmp}private fun startScaleAnim() {val step 50f //经过step后完成缩放动画。val delta (SCALE_FACTOR - 1) / stepCoroutineScope(Dispatchers.IO).launch {//绘制在原图上手的触点。mTouchPointX mCurXmTouchPointY mCurYmCanDrawTouchPoint truemyPostInvalidate()delay(500) //延时观察手指触点。mCanDrawTouchPoint falsemCanDrawBitmap truefor (i in 0 until step.toInt()) {mDeltaScaleFactor 1f delta * i/*mAnimScaleBmp Bitmap.createScaledBitmap(mOriginBmp!!,(W * mDeltaScaleFactor 1).toInt(), //注意精度损失造成坐标偏移。(H * mDeltaScaleFactor 1).toInt(),//注意精度损失造成坐标偏移。true)*/mAnimScaleBmp getScaleBmp((W * mDeltaScaleFactor 0.5).toInt(), (H * mDeltaScaleFactor 0.5).toInt())//触发重绘。myPostInvalidate()}//for循环完成后绘制最终图片动画放大完成后的中心圆点。mTouchPointX W / 2fmTouchPointY H / 2fmCanDrawTouchPoint truemyPostInvalidate()}}private fun myPostInvalidate() {this.postInvalidate()}private fun drawTouchPoint(c: Canvas) {c.drawCircle(mTouchPointX, mTouchPointY, 50f, mCirclePaint)}override fun onDraw(canvas: Canvas) {super.onDraw(canvas)if (mCanDrawBitmap) {val mx Matrix()mx.setScale(mDeltaScaleFactor, mDeltaScaleFactor)mx.setTranslate(W / 2f - mCurX * mDeltaScaleFactor, H / 2f - mCurY * mDeltaScaleFactor)canvas.drawBitmap(mAnimScaleBmp!!, mx, null)}if (mCanDrawTouchPoint) {drawTouchPoint(canvas)}} } Android双指缩放ScaleGestureDetector检测放大因子大图移动到双指中心点ImageView区域中心Kotlin2-CSDN博客文章浏览阅读613次点赞4次收藏5次。需要注意的因为在xml布局里面特别设置了ImageView的高度为wrap_content手指在屏幕触点的位置是放大镜里面放大图片后准确圆心位置但是如果ImageView设置成match_parent则因为ImageView里面的Bitmap被缩放(此处Bitmap其实小于ImageView被拉伸了)拉伸后的Bitmap水平方向坐标与ImageView一直重合但竖直方向Bitmap坐标与ImageView不一致会造成一种现象手指触点放大镜放大后水平方向是正确的但竖直方向有偏移量。https://blog.csdn.net/zhangphil/article/details/135701608Android矩阵setRectToRect裁剪Bitmap原图Matrix放大mapRect标记中心区域Kotlin-CSDN博客文章浏览阅读229次点赞3次收藏5次。【代码】Android矩阵setRectToRect裁剪Bitmap原图Matrix放大mapRect标记中心区域Kotlin。https://blog.csdn.net/zhangphil/article/details/135960921 Android ScaleGestureDetector检测双指缩放Bitmap基于Matrix动画移动到双指捏合中心点ImageView区域中心Kotlin_android的两指捏合-CSDN博客文章浏览阅读256次点赞5次收藏11次。需要注意的因为在xml布局里面特别设置了ImageView的高度为wrap_content手指在屏幕触点的位置是放大镜里面放大图片后准确圆心位置但是如果ImageView设置成match_parent则因为ImageView里面的Bitmap被缩放(此处Bitmap其实小于ImageView被拉伸了)拉伸后的Bitmap水平方向坐标与ImageView一直重合但竖直方向Bitmap坐标与ImageView不一致会造成一种现象手指触点放大镜放大后水平方向是正确的但竖直方向有偏移量。_android的两指捏合https://blog.csdn.net/zhangphil/article/details/135705931
http://www.w-s-a.com/news/114413/

相关文章:

  • 做农产品网站需要做的准备中文手机网站设计案例
  • 福州做网站软件seo搜索优化专员招聘
  • 建站技术博客wordpress响应时间
  • 农业网站模板WordPress安徽省建设工程造价管理协会网站
  • 网站后台策划书破解版手游app平台
  • 宿迁网站建设介绍公司wordpress 文章 分类 页面
  • 建设通同类网站网站设计公司种类
  • 台州专业做网站网站可以个人做吗
  • 个人logo在线生成免费乐陵德州seo公司
  • 网站回答问题app怎么做专业定制网红柴火灶
  • 网站做的最好的公司行业网址大全
  • 内网怎么做网站服务器seo统计
  • 丽水市企业网站建设 微信营销 影视拍摄计算机专业吃香吗
  • 龙岗做网站公司哪家好找到做网站的公司
  • 网站图片alt属性wordpress 自定义栏目 调用
  • 怎样建网站最快广州网站建设工程
  • iis7 网站404错误信息12306网站很难做吗
  • 网站建设600元包公司设计图片大全
  • 网站建设费用怎么做分录做校园网站代码
  • 网站改版做重定向福州网站建设思企
  • 网站建设全流程企业形象网站开发业务范畴
  • wordpress无法查看站点西安优秀高端网站建设服务商
  • 固始网站制作熟悉免费的网络营销方式
  • 做网站到a5卖站赚钱搜索引擎优化代理
  • 沈阳网站建设包括win10优化
  • 做百度手机网站点击软网站seo优化徐州百度网络
  • 徐州专业网站制作标志设计作业
  • 自己可以做网站空间吗海天建设集团有限公司网站
  • 教学督导网站建设报告aspcms网站图片不显示
  • 网站开发公司成本是什么门户网站宣传方案