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

湖南网站建设熊掌号深圳航空公司官网

湖南网站建设熊掌号,深圳航空公司官网,哪个网站可以做担保交易平台,九亿app开发公司自定义滑动解锁View 需求如下#xff1a; 近期需要做一个类似屏幕滑动解锁的功能#xff0c;右划开始#xff0c;左划暂停。 需求效果图如下 实现效果展示 自定义view如下 /** Desc 自定义滑动解锁View Author ZY Mail sunnyfor98gmail.com Date 2021/5/17 11:52 *…自定义滑动解锁View 需求如下 近期需要做一个类似屏幕滑动解锁的功能右划开始左划暂停。 需求效果图如下 实现效果展示 自定义view如下 /** Desc 自定义滑动解锁View Author ZY Mail sunnyfor98gmail.com Date 2021/5/17 11:52 */ SuppressLint(“ClickableViewAccessibility”) class SlideSwitchButton : ViewGroup { constructor(context: Context?) : this(context, null)constructor(context: Context?, attrs: AttributeSet?) : this(context, attrs, 0)constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : this(context,attrs,defStyleAttr, 0)constructor(context: Context?,attrs: AttributeSet?,defStyleAttr: Int,defStyleRes: Int) : super(context, attrs, defStyleAttr, defStyleRes)var duration 300var isOpen falsevar scrollView: ScrollView? nullvar onSwitchListener: ((isOpen: Boolean) - Unit)? nullprivate var itemHeight 0private var itemPadding 0private var parentWidth 0private val stopImgView: ImageView by lazy {ImageView(context).apply {setImageResource(R.drawable.f1_svg_btn_stop)}}private val startImgView: ImageView by lazy {ImageView(context).apply {setImageResource(R.drawable.f1_svg_btn_start)}}private val hintView: TextView by lazy {TextView(context).apply {setTextSize(TypedValue.COMPLEX_UNIT_PX, resources.getDimension(R.dimen.dp_14))compoundDrawablePadding resources.getDimension(R.dimen.dp_5).toInt()setTextColor(Color.parseColor(#727b9f))}}init {setBackgroundResource(R.drawable.f1_sel_bg_slide_btn)addView(hintView)updateHint()addView(stopImgView)addView(startImgView)var x 0startImgView.setOnTouchListener { v, event -when (event.action) {MotionEvent.ACTION_DOWN - {scrollView?.requestDisallowInterceptTouchEvent(true)x event.x.toInt()}MotionEvent.ACTION_UP - {if (startImgView.x (parentWidth - startImgView.width) / 2) {play(false)} else {play(true)}scrollView?.requestDisallowInterceptTouchEvent(false)}MotionEvent.ACTION_MOVE - {val lastX event.x - xif (startImgView.x lastX parentWidth - itemPadding - startImgView.width) {returnsetOnTouchListener true}if (startImgView.x lastX itemPadding) {returnsetOnTouchListener true}startImgView.x lastX}}returnsetOnTouchListener true}}override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {super.onMeasure(widthMeasureSpec, heightMeasureSpec)setMeasuredDimension(widthMeasureSpec, resources.getDimension(R.dimen.dp_90).toInt())itemPadding resources.getDimension(R.dimen.dp_5).toInt()itemHeight resources.getDimension(R.dimen.dp_80).toInt()parentWidth MeasureSpec.getSize(widthMeasureSpec)}override fun onLayout(changed: Boolean, l: Int, t: Int, r: Int, b: Int) {stopImgView.layout(itemPadding,itemPadding,itemPadding itemHeight,itemPadding itemHeight)startImgView.layout(itemPadding,itemPadding,itemPadding itemHeight,itemPadding itemHeight)val len hintView.paint.measureText(hintView.text.toString()) resources.getDimension(R.dimen.dp_24)val let (r - len) / 2hintView.layout(let.toInt(),resources.getDimension(R.dimen.dp_35).toInt(),(let len).toInt(),resources.getDimension(R.dimen.dp_55).toInt())}/*** flag tue为开始 false为停止*/private fun play(flag: Boolean) {val mStart startImgView.xval mEnd if (flag) {parentWidth - itemPadding * 2 - startImgView.width.toFloat()} else {stopImgView.x - itemPadding}val animatorOBJ ObjectAnimator.ofFloat(startImgView, translationX, mStart, mEnd)animatorOBJ.duration duration.toLong()animatorOBJ.addListener(object : Animator.AnimatorListener {override fun onAnimationRepeat(animation: Animator?) {}override fun onAnimationEnd(animation: Animator?) {updateHint(flag)if (flag ! isOpen) {isOpen flagonSwitchListener?.invoke(flag)}}override fun onAnimationCancel(animation: Animator?) {}override fun onAnimationStart(animation: Animator?) {}})animatorOBJ.start()}private fun updateHint(lock: Boolean false) {val icon if (lock) {hintView.text 滑动停止ResourcesCompat.getDrawable(resources, R.drawable.f1_svg_left_arrow, null)} else {hintView.text 滑动开始ResourcesCompat.getDrawable(resources, R.drawable.f1_svg_right_arrow, null)}icon?.setBounds(0,0,resources.getDimension(R.dimen.dp_14).toInt(),resources.getDimension(R.dimen.dp_12).toInt())if (lock) {hintView.setCompoundDrawables(icon, null, null, null)} else {hintView.setCompoundDrawables(null, null, icon, null)}}fun stop() {play(false)}fun start() {play(true)}} 这里需要注意一点页面过长时ScrollView和SlideSwitchButton滑动事件会冲突所以需要吧scrollView传进来 调用方式如下 /** Desc 自定义滑动解锁View Author ZY Mail sunnyfor98gmail.com Date 2021/5/28 17:48 */ class SlideSwitchButtonActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.f1_act_main)btn_start.scrollView scrollViewbtn_start.onSwitchListener {if (it) {Toast.makeText(this,开始操作,Toast.LENGTH_LONG).show()btn_start.start()} else {Toast.makeText(this,停止操作,Toast.LENGTH_LONG).show()btn_start.stop()}}}} 之前封装了一版ZyFrame框架集工具类、自定义组件、网络请求框架一体感觉用起来有些厚重接下来会抽时间做拆分ZyFrame保留网络请求功能ZyUI专做自定义组件ZyTool专做工具类大概就这样。 文章来源网络 版权归原作者所有 上文内容不用于商业目的如涉及知识产权问题请权利人联系小编我们将立即处理
http://www.sadfv.cn/news/163066/

相关文章:

  • 企业网站怎么做优化广西柳州做网站
  • 纸做的花朵成品网站康保网站建设
  • 上海公共场所seo网站架构设计
  • 网站做成app的软件网站备案是指什么
  • 阳光家园广州网站网址天津公司建设网站
  • 阳江 网站建设wordpress商城微信
  • 网页和网站设计山东建设厅网站首页
  • iis网站跳转网站怎么做才能赚钱吗
  • 在机关网站建设会上讲话房产信息官网查询
  • dede网站幻灯片体验营销
  • 广西建设局网站首页企业文化模板
  • 网站物理结构网页布局实例
  • lnmp wordpress 不显示主题莱芜新站优化
  • 电子商务网站建设与管理 pdf某公司网络设计方案
  • 太原全网推广免费智能seo收录工具
  • 已有网站做移动网站知末设计网官网
  • 宿迁网站建设SEO优化营销企业安全文化建设导则最新版
  • 企业建设网站没有服务器首页定制
  • 网站降权不更新文章可以吗网站改版方案
  • 做高端网站公司网站从哪些方面来做
  • 婚庆公司包含哪些项目网站建设优化及推广
  • php网站接入支付宝wordpress添加广告位
  • html5大气网站企业网站建设大概多少钱
  • 石家庄个人建站网站策划360官网
  • 江夏区建设局网站网站排名站长之家
  • 外国做图网站如何免费制作手机app
  • 有什么办法做自己的网站如何制作网站视频
  • 网站源码程序修改卓成建设集团有限公司网站
  • 网站开发和网页上传的说法哈尔滨最新信息
  • 自己做众筹网站西安网站排名优化