当前位置:主页 > 查看内容

Android自定义View实战:影院在线选座

发布时间:2021-07-06 00:00| 位朋友查看

简介:自定义View绘制电影院选座 在选座的JavaBean里面需要侧量绘画的图片样式 // 声明上、下、左、右 的变量值 var left : Int 0 var right : Int 0 var top : Int 0 var bottom : Int 0 //先创建一个绘画的方法 fun onDraws ( canvas : Canvas ? , context : Con……

自定义View绘制电影院选座

在选座的JavaBean里面,需要侧量绘画的图片样式

// 声明上、下、左、右 的变量值
	var left : Int = 0
    var right : Int = 0
    var top : Int = 0
    var bottom : Int = 0

//先创建一个绘画的方法,
 fun onDraws(canvas: Canvas?,context: Context){
    var setabitmap : Bitmap? = null
//开始判断状态来设置电影院座位的样式
 when(status){
            1 ->{
                setabitmap = (context.resources.getDrawable(R.drawable.s1) as BitmapDrawable).bitmap
            }
            2 ->{
                setabitmap = (context.resources.getDrawable(R.drawable.s2) as BitmapDrawable).bitmap
            }
            3 ->{
                setabitmap = (context.resources.getDrawable(R.drawable.s3) as BitmapDrawable).bitmap
            }
            4 ->{
                setabitmap = (context.resources.getDrawable(R.drawable.s4) as BitmapDrawable).bitmap
            }
            5 ->{
                setabitmap = (context.resources.getDrawable(R.drawable.s5) as BitmapDrawable).bitmap
            }
        }
      }
          setabitmap?.let {
         	 //给定一个座位的大小
            var seatSize = 75
			//计算出座位的左边距
            left = seat.toInt() * seatSize
            //计算出座位的高
            top = row.toInt() * seatSize
			//计算座位的右边距,以及底部高度
            right = left + seatSize
            bottom = top + seatSize
			//调用绘画的方法
            canvas?.drawBitmap(it,left.toFloat(),top.toFloat(), Paint())
        }
        

这是自定义的ViewBean

//创建一个可存取集合
 var setList : MutableList<Seat> = mutableListOf()
	//创建一个添加数据的方法
    fun seatAdd(seat: List<Seat>){
        this.setList.addAll(seat)
        //刷新
        invalidate()
    }

    //声明绘画的方法
    override fun onDraw(canvas: Canvas?) {
        super.onDraw(canvas)
        setList.forEach {
        //调用JavaBean里面自定义的方法来设置,并绘画
            it.onDraws(canvas,context)
        }
    }

//点击座位的时候触发该方法,进行选座
 override fun onTouchEvent(event: MotionEvent?): Boolean {
        if(event?.action == MotionEvent.ACTION_UP){
            setList.forEach {
                if(event.x > it.left && event.x < it.right && event.y > it.top && event.y < it.bottom){
                   
                    when(it.status){
                        1 ->{
                            Toast.makeText(context,"座位不可选!!!",Toast.LENGTH_SHORT).show()
                        }
                        2 ->{
                            Toast.makeText(context,"座位已售完!!!",Toast.LENGTH_SHORT).show()
                        }
                        3 ->{
                                it.status = 4
                        }
                        4 ->{
                                it.status = 3
                        }
                        5 ->{
                            Toast.makeText(context,"座位已锁定!!!",Toast.LENGTH_SHORT).show()
                        }
                    }
                }
            }
        }
        invalidate()
        return true
    }
;原文链接:https://blog.csdn.net/weixin_42162950/article/details/115706307
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文


随机推荐