时间:2021-05-20
我们在安卓开发中安卓自带的控件满足不了我们的需求,因此我们就需要用到自定义View来满足我们的需求,在这里我要讲解的是自定义View实现选座功能,在安卓中一个会使用自定义View的人一定会开发出与众不同以及美观的项目
首先,我展示一下效果
以上主要就是我们需要创建一个我们自己的View继承自Viewgroup控件并实现onMeasure以及onDraw方法
具体的代码是这样的
以上的resultBean是我们根据选座接口中的返回值判断座位是否已经被选,大家可以参考一下我的Bean类,但具体的做法还要以自己的接口文件为主
public static class ResultBean { /** * row : 1 * seat : 1 * status : 2 */ private String row; private String seat; private int status; private int left; private int top; private int right; private int bottom; private Context context; private boolean ist = false; public String getRow() { return row; } public void setRow(String row) { this.row = row; } public String getSeat() { return seat; } public void setSeat(String seat) { this.seat = seat; } public int getStatus() { return status; } public void setStatus(int status) { this.status = status; } public int getLeft() { return left; } public void setLeft(int left) { this.left = left; } public int getTop() { return top; } public void setTop(int top) { this.top = top; } public int getRight() { return right; } public void setRight(int right) { this.right = right; } public int getBottom() { return bottom; } public void setBottom(int bottom) { this.bottom = bottom; } public Context getContext() { return context; } public void setContext(Context context) { this.context = context; } public boolean isIst() { return ist; } public void setIst(boolean ist) { this.ist = ist; } public void draw(Canvas canvas,Context context){ if (status==2){ BitmapDrawable drawable = (BitmapDrawable) context.getResources().getDrawable(R.drawable.xuan); Bitmap bitmap = drawable.getBitmap(); int width = bitmap.getWidth(); int height = bitmap.getHeight(); int row = Integer.parseInt(getRow()); int seat = Integer.parseInt(getSeat()); row = row*50; seat = seat*50; canvas.drawBitmap(bitmap,seat,row,new Paint()); left = seat; top = row; right = seat+width; bottom = row+height; } if (status==1){ BitmapDrawable drawable = (BitmapDrawable) context.getResources().getDrawable(R.drawable.xuan1); Bitmap bitmap = drawable.getBitmap(); int width = bitmap.getWidth(); int height = bitmap.getHeight(); int row = Integer.parseInt(getRow()); int seat = Integer.parseInt(getSeat()); row = row*50; seat = seat*50; canvas.drawBitmap(bitmap,seat,row,new Paint()); left = seat; top = row; right = seat+width; bottom = row+height; } if (status==3){ BitmapDrawable drawable = (BitmapDrawable) context.getResources().getDrawable(R.drawable.xuan3); Bitmap bitmap = drawable.getBitmap(); int width = bitmap.getWidth(); int height = bitmap.getHeight(); int row = Integer.parseInt(getRow()); int seat = Integer.parseInt(getSeat()); row = row*50; seat = seat*50; canvas.drawBitmap(bitmap,seat,row,new Paint()); left = seat; top = row; right = seat+width; bottom = row+height; } } }}最后,我们需要在布局文件里进行调用,我的布局文件是这样的
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".activity.XuanZuoActivity" android:orientation="vertical"> <TextView android:id="@+id/xuanzuotext" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="请开始选座购票" android:background="#140404" android:gravity="center" android:textSize="@dimen/permission_dp_30" android:textColor="#fff"/> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:background="#140404"> <TextView android:id="@+id/weixuan" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="未选座" android:textColor="#fff" android:layout_marginLeft="@dimen/permission_dp_20" android:layout_marginTop="@dimen/dp_3"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/xuan1"/> <TextView android:id="@+id/weixuan2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="已选座" android:textColor="#fff" android:layout_marginLeft="@dimen/dp_210" android:layout_marginTop="@dimen/dp_3"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/xuan"/> </LinearLayout> <com.bw.movie.SearView android:id="@+id/xuanzuo" android:background="#140404" android:layout_width="match_parent" android:layout_height="@dimen/dp_0" android:layout_weight="6" /> <Button android:id="@+id/button_xuanzuo" android:layout_width="match_parent" android:layout_height="@dimen/dp_0" android:layout_weight="0.5" android:text="立即支付" android:background="#E91E63"/></LinearLayout>以上就是我的选座功能实现的全过程,欢迎大家提问
总结
到此这篇关于Android自定义View实现选座功能的文章就介绍到这了,更多相关android自定义view选座内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Android自定义View的构造函数自定义View是Android中一个常见的需求,每个自定义的View都需要实现三个基本的构造函数,而这三个构造函数又有两种
Android自定义的view,主要是继承view,然后实现ondraw这个方法,来进行绘制。1.编写自己的自定义view2.加入逻辑线程3.提取和封装自定义v
前言Android开发中,常常自定义View实现自己想要的效果,当然自定义View也是Android开发中比较难的部分,涉及到的知识有Canvas(画布),Pa
Android自定义View实现抽屉效果说明这个自定义View,没有处理好多点触摸问题View跟着手指移动,没有采用传统的scrollBy方法,而是通过不停地重
本文实例为大家分享了Android自定义View实现抖音飘动红心效果的具体代码,供大家参考,具体内容如下自定义View——抖音飘动红心效果展示动画效果使用自定义