自定義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://www.uj5u.com/yidong/276215.html
標籤:其他
上一篇:自定義View:嵌套滑動深入理解
