package com.example.katherine_qj.ttms.View;
import android.animation.Animator;
import android.animation.TypeEvaluator;
import android.animation.ValueAnimator;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.Point;
import android.graphics.RectF;
import android.graphics.Typeface;
import android.os.Handler;
import android.text.TextPaint;
import android.util.AttributeSet;
import android.util.Log;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.ScaleGestureDetector;
import android.view.View;
import android.view.animation.DecelerateInterpolator;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.Collections;
/**
* Created by baoyunlong on 16/6/16.
*/
public class SeatTable extends View {
private final boolean DBG = false;
Paint paint = new Paint();
Paint overviewPaint=new Paint();
Paint lineNumberPaint;
float lineNumberTxtHeight;
/**
* 设置行号 默认显示 1,2,3....数字
* @param lineNumbers
*/
public void setLineNumbers(ArrayList<String> lineNumbers) {
this.lineNumbers = lineNumbers;
invalidate();
}
/**
* 用来保存所有行号
*/
ArrayList<String> lineNumbers = new ArrayList<>();
Paint.FontMetrics lineNumberPaintFontMetrics;
Matrix matrix = new Matrix();
/**
* 座位水平间距
*/
int spacing;
/**
* 座位垂直间距
*/
int verSpacing;
/**
* 行号宽度
*/
int numberWidth;
/**
* 行数
*/
int row;
/**
* 列数
*/
int column;
/**
* 可选时座位的图片
*/
Bitmap seatBitmap;
/**
* 选中时座位的图片
*/
Bitmap checkedSeatBitmap;
/**
* 座位已经售出时的图片
*/
Bitmap seatSoldBitmap;
Bitmap overviewBitmap;
int lastX;
int lastY;
/**
* 整个座位图的宽度
*/
int seatBitmapWidth;
/**
* 整个座位图的高度
*/
int seatBitmapHeight;
/**
* 标识是否需要绘制座位图
*/
boolean isNeedDrawSeatBitmap = true;
/**
* 概览图白色方块高度
*/
float rectHeight;
/**
* 概览图白色方块的宽度
*/
float rectWidth;
/**
* 概览图上方块的水平间距
*/
float overviewSpacing;
/**
* 概览图上方块的垂直间距
*/
float overviewVerSpacing;
/**
* 概览图的比例
*/
float overviewScale = 4.8f;
/**
* 荧幕高度
*/
float screenHeight;
/**
* 荧幕默认宽度与座位图的比例
*/
float screenWidthScale = 0.5f;
/**
* 荧幕最小宽度
*/
int defaultScreenWidth;
/**
* 标识是否正在缩放
*/
boolean isScaling;
float scaleX, scaleY;
/**
* 是否是第一次缩放
*/
boolean firstScale = true;
/**
* 最多可以选择的座位数量
*/
int maxSelected = Integer.MAX_VALUE;
private SeatChecker seatChecker;
/**
* 荧幕名称
*/
private String screenName = "";
/**
* 整个概览图的宽度
*/
float rectW;
/**
* 整个概览图的高度
*/
float rectH;
Paint headPaint;
Bitmap headBitmap;
/**
* 是否第一次执行onDraw
*/
boolean isFirstDraw = true;
/**
* 标识是否需要绘制概览图
*/
boolean isDrawOverview = false;
/**
* 标识是否需要更新概览图
*/
boolean isDrawOverviewBitmap = true;
int overview_checked;
int overview_sold;
int txt_color;
int seatCheckedResID;
int seatSoldResID;
int seatAvailableResID;
boolean isOnClick;
/**
* 座位已售
*/
private static final int SEAT_TYPE_SOLD = 1;
/**
* 座位已经选中
*/
private static final int SEAT_TYPE_SELECTED = 2;
/**
* 座位可选
*/
private static final int SEAT_TYPE_AVAILABLE = 3;
/**
* 座位不可用
*/
private static final int SEAT_TYPE_NOT_AVAILABLE = 4;
private int downX, downY;
private boolean pointer;
/**
* 顶部高度,可选,已选,已售区域的高度
*/
float headHeight;
Paint pathPaint;
RectF rectF;
/**
* 头部下面横线的高度
*/
int borderHeight = 1;
Paint redBorderPaint;
/**
* 默认的座位图宽度,如果使用的自己的座位图片比这个尺寸大或者小,会缩放到这个大小
*/
private float defaultImgW = 40;
/**
* 默认的座位图高度
*/
private float defaultImgH = 34;
/**
* 座位图片的宽度
*/
private int seatWidth;
/**
* 座位图片的高度
*/
private int seatHeight;
public SeatTable(Context context) {
super(context);
}
public SeatTable(Context context, AttributeSet attrs) {
super(context, attrs);
init(context,attrs);
}
private void init(Context context,AttributeSet attrs){
TypedArray typedArray = context.obtainStyledAttributes(attrs, com.qfdqc.views.seattable.R.styleable.SeatTableView);
overview_checked = typedArray.getColor(com.qfdqc.views.seattable.R.styleable.SeatTableView_overview_checked, Color.parseColor("#5A9E64"));
overview_sold = typedArray.getColor(com.qfdqc.views.seattable.R.styleable.SeatTableView_overview_sold, Color.RED);
txt_color=typedArray.getColor(com.qfdqc.views.seattable.R.styleable.SeatTableView_txt_color,Color.WHITE);
seatCheckedResID = typedArray.getResourceId(com.qfdqc.views.seattable.R.styleable.SeatTableView_seat_checked, com.qfdqc.views.seattable.R.drawable.seat_green);
seatSoldResID = typedArray.getResourceId(com.qfdqc.views.seattable.R.styleable.SeatTableView_overview_sold, com.qfdqc.views.seattable.R.drawable.seat_sold);
seatAvailableResID = typedArray.getResourceId(com.qfdqc.views.seattable.R.styleable.SeatTableView_seat_available, com.qfdqc.views.seattable.R.drawable.seat_gray);
typedArray.recycle();
}
public SeatTable(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context,attrs);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
float xScale1 = 1;
float yScale1 = 1;
private void init() {
spacing = (int) dip2Px(5);
verSpacing = (int) dip2Px(10);
defaultScreenWidth = (int) dip2Px(80);
seatBitmap = BitmapFactory.decodeResource(getResources(), seatAvailableResID);
float scaleX = defaultImgW / seatBitmap.getWidth();
float scaleY = defaultImgH / seatBitmap.getHeight();
xScale1 = scaleX;
yScale1 = scaleY;
seatHeight= (int) (seatBitmap.getHeight()*yScale1);
seatWidth= (int) (seatBitmap.getWidth()*xScale1);
checkedSeatBitmap = BitmapFactory.decodeResource(getResources(), seatCheckedResID);
seatSoldBitmap = BitmapFactory.decodeResource(getResources(), seatSoldResID);
seatBitmapWidth = (int) (column * seatBitmap.getWidth()*xScale1 + (column - 1) * spacing);
seatBitmapHeight = (int) (row * seatBitmap.getHeight()*yScale1 + (row - 1) * verSpacing);
paint.setColor(Color.RED);
numberWidth = (int) dip2Px(20);
screenHeight = dip2Px(20);
headHeight = dip2Px(30);
headPaint = new Paint();
headPaint.setStyle(Paint.Style.FILL);
headPaint.setTextSize(24);
headPaint.setC
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
软件开发设计:PHP、QT、应用软件开发、系统软件开发、移动应用开发、网站开发C++、Java、python、web、C#等语言的项目开发与学习资料 硬件与设备:单片机、EDA、proteus、RTOS、包括计算机硬件、服务器、网络设备、存储设备、移动设备等 操作系统:LInux、IOS、树莓派、安卓开发、微机操作系统、网络操作系统、分布式操作系统等。此外,还有嵌入式操作系统、智能操作系统等。 网络与通信:数据传输、信号处理、网络协议、网络与通信硬件、网络安全网络与通信是一个非常广泛的领域,它涉及到计算机科学、电子工程、数学等多个学科的知识。 云计算与大数据:数据集、包括云计算平台、大数据分析、人工智能、机器学习等,云计算是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需提供给计算机和其他设备。
资源推荐
资源详情
资源评论
收起资源包目录
大三剧院管理系统Android端部分功能.zip (180个子文件)
gradlew.bat 2KB
.gitignore 127B
.gitignore 8B
.gitignore 7B
build.gradle 1KB
build.gradle 572B
build.gradle 518B
settings.gradle 36B
gradlew 5KB
gradle-wrapper.jar 52KB
SeatTable.java 37KB
SeatTable.java 37KB
FragmentSet.java 9KB
CustomerViewPager.java 7KB
MainActivity.java 6KB
BallView.java 5KB
fragmentManagment.java 5KB
fragmentRoom.java 5KB
DetailPeoplePresenter.java 5KB
fragmentVoide.java 5KB
fragmentPlan.java 5KB
LoginActivity.java 5KB
FragmentVoidePresenter.java 4KB
Voide.java 4KB
DetilePeopleActivity.java 4KB
GetHttpResponseString.java 4KB
UserLoginPresenter.java 4KB
FragmentRoomPresenter.java 4KB
FragmentPlayPresenter.java 4KB
FragmentPeoplePresenter.java 4KB
RoomRecycleViewAdapter.java 3KB
PlayRecycleViewAdapter.java 3KB
DetailPeopleModel.java 3KB
VoideRecycleViewAdapter.java 3KB
AddPeopleActivity.java 3KB
RecycleViewAdapter.java 3KB
MainActivity_test.java 2KB
RoundImageView.java 2KB
UserModel.java 2KB
FragmentHome.java 2KB
User.java 2KB
FragmentMy.java 1KB
ModifyPeopleModel.java 1KB
JsonUtils.java 1KB
DetileVoideActivity.java 1KB
AddPeoplePresenter.java 1KB
AddPeopleModel.java 1KB
People.java 1KB
Play.java 1KB
GetVoideModel.java 1KB
GetPlanModel.java 1KB
Room.java 1KB
GetPeopleoModel.java 1KB
GetRoomModel.java 1KB
ExampleInstrumentedTest.java 788B
IFragmentManagment.java 731B
PeopleOnline.java 631B
ILoginView.java 621B
ExampleUnitTest.java 423B
ApplicationTest.java 356B
IAddPeople.java 334B
ToastMassage.java 318B
ExampleUnitTest.java 318B
IDetailPeople.java 308B
ImodifyPeopleModel.java 269B
IAddPeolpleModel.java 264B
ILogin.java 234B
IGetPeople.java 193B
IGetVoide.java 189B
IGetPlan.java 188B
IGetRoom.java 187B
home_image4.jpg 763KB
home_image2.jpg 232KB
home_image3.jpg 90KB
image8.jpg 80KB
home_image1.jpg 72KB
img_book_back4.jpg 50KB
h3.jpg 42KB
h2.jpg 42KB
img_book_back2.jpg 41KB
h1.jpg 36KB
h4.jpg 20KB
img_book_no.jpg 1KB
lunboc.png 191KB
lunbod.png 56KB
lunbob.png 43KB
lunboa.png 33KB
ic_launcher.png 10KB
ic_launcher.png 8KB
ic_launcher.png 5KB
adress.png 5KB
namepeo.png 5KB
email.png 3KB
ic_launcher.png 3KB
tel.png 3KB
ic_launcher.png 2KB
img_share.png 2KB
img_collection.png 2KB
seat_green.png 2KB
seat_sold.png 2KB
共 180 条
- 1
- 2
资源评论
妄北y
- 粉丝: 1w+
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功