Android自定义选座,Android实现电影院选座效果
本文實例為大家分享了Android實現電影院選座效果展示的具體代碼,供大家參考,具體內容如下
這是一個簡單的電影院選座效果,實現該效果大致分為三步:
1.自定義view進行繪制;
2.手勢縮放效果的實現;
3.手勢觸摸被選和未被選效果的實現;
先來看第一步,效果的繪制;
public class MoveSeatView extends View {
private final boolean DBG = false;
private Paint paint = new Paint();
private Matrix matrix = new Matrix();
private Matrix tempMatrix = new Matrix();
//座位水平間距
private int spacing;
//座位垂直間距
private int verSpacing;
//行號寬度
private int numberWidth;
//行數
private int row;
//列數
private int column;
//可選座位的圖片
private Bitmap seatBitmap;
//選中時座位的圖片
private Bitmap checkedSeatBitmap;
private int lastX;
private int lastY;
//整個座位圖的寬度
private int seatBitmapWidth;
private int seatBitmapHeight;
private float screenHeight;
//屏幕的最小寬度
private int defaultScreenWidth;
//標識是否正在縮放
private boolean isScaling;
private float scaleX, scaleY;
//是否是第一次縮放
private boolean firstScale = true;
private boolean isOnClick;
private int downX, downY;
private boolean pointer;
//用于存儲已經選在好的座位
public ArrayList list;
/**
* 默認的座位圖片的寬度,如果使用的自己的座位的圖片比這個尺寸大或者小,會縮放到這個大小
*/
private float defaultImgW = 40;
private float defaultImgH = 34;
/**
* 座位圖片的寬度
*/
private int seatWidth = 40;
/**
* 座位圖片的高度
*/
private int seatHeight = 34;
private float zoom;
float xScalel = 1;
float yScalel = 1;
public MoveSeatView(Context context) {
this(context, null);
}
public MoveSeatView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public MoveSeatView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
private void init() {
spacing = (int) dip2px(5);
verSpacing = (int) dip2px(10);
defaultScreenWidth = (int) dip2px(80);
seatBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.seat_default);
xScalel = defaultImgW / seatBitmap.getWidth();
yScalel = defaultImgH / seatBitmap.getHeight();
checkedSeatBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.seat_green);
seatBitmapWidth = (int) (column * seatBitmap.getWidth() * xScalel + (column - 1) * spacing);
seatBitmapHeight = (int) (row * seatBitmap.getHeight() * yScalel + (row - 1) * verSpacing);
paint.setColor(Color.RED);
numberWidth = (int) dip2px(20);
screenHeight = dip2px(20);
list = new ArrayList<>();
matrix.postTranslate(numberWidth + spacing, screenHeight + 1 + verSpacing);
}
}
總結
以上是生活随笔為你收集整理的Android自定义选座,Android实现电影院选座效果的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mapgis安装|计算机中丢失basro
- 下一篇: 遥感影像分类方法