当前位置: 首页 > news >正文

门户网站首页设计/百度推广如何代理加盟

门户网站首页设计,百度推广如何代理加盟,完整网站开发视频教程,福建省建设法制协会网站仿iOS日历、飞书日历、Google日历的日模式,24H内事件可自由上下拖动、自由拉伸。 以下是效果图: 具体实现比较简单,代码如下: import android.content.Context; import android.graphics.Canvas; import android.graphics.Color;…

仿iOS日历、飞书日历、Google日历的日模式,24H内事件可自由上下拖动、自由拉伸。

以下是效果图:

具体实现比较简单,代码如下:

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;
import android.text.Layout;
import android.text.StaticLayout;
import android.text.TextPaint;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ScrollView;import androidx.annotation.Nullable;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Timer;
import java.util.TimerTask;//4、Java to c#
public class MultiRectView extends View {private Paint paintRect;private Paint borderPaint ;private Paint paintLine;private Paint paintDragText;private List<RectF> rectangles;private List<Map> rectanglesMapList;private RectF currentRect; // 当前操作的矩形private RectF preRect; // 操作的前一个矩形private int currentRectIndex = 0;// 当前被选中的矩形private float rectWidth = 200f; // 矩形宽度private float rectHeight = 100f; // 矩形高度private int currentHandle; // 记录当前操作的控制点private float lastX, lastY; // 手指最后位置private float preX, preY; // 手指起始位置private TextPaint textPaint;private Paint shadowPaint; // 用于阴影效果// 控制点private static final int NONE = -1;private static final int LEFT_TOP = 0;private static final int RIGHT_TOP = 1;private static final int LEFT_BOTTOM = 2;private static final int RIGHT_BOTTOM = 3;private static final int MOVE_RECT = 4;// 刻度设置private final int SCALE_INTERVAL = 30; // 30分钟private final int TOTAL_SCALES = 24 * 4; // 24小时,每小时4个15分钟刻度// 设置最小高度private final int MIN_RECT_HEIGHT = 100;long lineWidth = 6;long lineLen = 30;private String[] hours;private GestureDetector gestureDetector;private Context mContext;private onclickListener onclickListener;private onLongclicklistener onLongclickListener;private long longPressStartTime = 0;//长按时间private boolean isDragging = false;private ScrollView scrollView;private int mScaleWidth = 30;//上下间距private int mScaleLineX = 140;//横线距离左侧的起始距离点private int mScaleLineText = 30;//刻度的起始点private int mScaleRectToLeft = 150;//矩形距离左侧间距private List<String> texts; // 存储每个矩形内的文本private Canvas mCanvas;private String topText = "";private String bottomText = "";int topScale = 0;int bottomScale = 0;private RectF rectMove;private boolean isCancleClickStatus = true;private boolean isLongPressStatus = false;//长按状态//计时器,计时点击时长Timer timer;TimerTask timerTask;private final int LONGPRESSTIME = 500;//长按超过0.5秒,触发长按事件private float cornerRadius = 15f; // 圆角半径private List<ActiviesDataModel> activiesDataModelListl;private float offsetAmount = 20; // 偏移量,具体根据需求调整public MultiRectView(Context context) {super(context);mContext = context;init();}public MultiRectView(Context context, @Nullable AttributeSet attrs) {super(context, attrs);mContext = context;init();}public MultiRectView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);mContext = context;init();}@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {super.onMeasure(widthMeasureSpec, heightMeasureSpec);int heightSize = MeasureSpec.getSize(heightMeasureSpec);int reHeight = resolveSize(heightSize, heightMeasureSpec);setMeasuredDimension(widthMeasureSpec, reHeight);}public void setScrollView(ScrollView scrollView1) {this.scrollView = scrollView1;}private void init() {texts = new ArrayList<>();rectangles = new ArrayList<>();rectanglesMapList = new ArrayList<>();// 初始化填充画笔paintRect = new Paint();paintRect.setAntiAlias(true);paintRect.setStyle(Paint.Style.FILL);paintRect.setColor(getResources().getColor(R.color.purple_200));paintRect.setStrokeCap(Paint.Cap.ROUND);paintRect.setStrokeWidth(3);//控制矩形宽高// 初始化边框画笔borderPaint = new Paint();borderPaint.setAntiAlias(true);borderPaint.setStyle(Paint.Style.STROKE);borderPaint.setColor(getResources().getColor(R.color.purple_300)); // 设置边框颜色为黄色borderPaint.setStrokeWidth(3); // 设置边框宽度//划线属性paintLine = new Paint();paintLine.setColor(Color.RED);//动态显示时间标签的画笔属性paintDragText = new Paint();paintDragText.setColor(Color.GREEN);paintDragText.setTextSize(30);//左侧时间的画笔属性textPaint = new TextPaint();textPaint.setColor(Color.BLACK);textPaint.setTextSize(32); // 设置文本大小//阴影shadowPaint = new Paint();shadowPaint.setAntiAlias(true);shadowPaint.setStyle(Paint.Style.FILL); // 设为填充样式shadowPaint.setColor(getResources().getColor(R.color.purple_300)); // 阴影主体的颜色shadowPaint.setShadowLayer(10f, 0f, 0f, getResources().getColor(R.color.black2)); // 设置阴影外圈渐变效果}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);drawScale(canvas); // 绘制刻度线、时间刻度for (int i = 0; i < rectangles.size(); i++) {if(i != currentRectIndex){// 绘制未选中的矩形RectF rect = rectangles.get(i);// 检查重叠并调整位置
//                if (isOverlapping(rect, i)) {
//                    rect.left -= offsetAmount; // 向左偏移
//                }drawRectAndText(canvas, rect, i);//画矩形框、内部写字drawCurrentScale(canvas, rect, i);//绘制显示实时刻度}}// 绘制当前选中的矩形,确保其在最上层if (currentRectIndex != -1) {RectF selectedRect = rectangles.get(currentRectIndex);drawRectAndText(canvas, selectedRect, currentRectIndex,true); // 画选中的矩形框、内部写字drawCurrentScale(canvas, selectedRect,currentRectIndex); // 绘制选中的矩形显示实时刻度}this.mCanvas = canvas;}private boolean isOverlapping(RectF currentRect, int currentIndex) {for (int i = 0; i < rectangles.size(); i++) {if (i != currentIndex) {RectF otherRect = rectangles.get(i);if (RectF.intersects(currentRect, otherRect)) {return true; // 矩形重叠}}}return false; // 矩形不重叠}private void drawScale(Canvas canvas) {// 绘制15分钟刻度线for (int n = 0; n <= TOTAL_SCALES; n++) {float y = n * mScaleWidth; // 计算刻度Y坐标// 计算并绘制时间标签(15分钟为单位)if (n % 4 == 0) { // 但每小时显示并绘制一次int hour = n / 4;if ((n / 4 + "").contains("24")) {hour = 0;}if (y == 0) {//第一根线防止画不全y = 15;}String timeText = String.format("%02d:00", hour);canvas.drawText(timeText, mScaleLineX - 100, y + 10, textPaint); // 绘制时间文本canvas.drawLine(mScaleLineX, y, getWidth() - 30, y + 20, paintLine); // 绘制刻度线}}}private String finalStartTime = "";private String finalEndTime = "";private void drawCurrentScale(Canvas canvas, RectF rect, int index) {//绘制显示实时的刻度// 计算矩形边界的时间刻度值topScale = (int) Math.round(rect.top / (mScaleWidth)); // 计算矩形上边界的刻度bottomScale = Math.round(rect.bottom / (mScaleWidth)); // 计算矩形下边界的刻度if (currentRect != rect) {//只有当前点击的矩形参与显示return;}boolean isLongPressStatus = (activiesDataModelListl.get(index)).isLongPressStatus();if (isLongPressStatus) {finalStartTime = "";finalEndTime = "";// 确保边界值在可用范围内if (topScale >= 0 && topScale < TOTAL_SCALES) {rectMove = rect;topText = String.format("%02d:%02d", topScale / 4, (topScale % 4) * 15);finalStartTime = topText;//  canvas.drawText(topText, mScaleLineX + 10, rect.top + 20, textPaint); // 绘制上边界刻度canvas.drawText(topText, mScaleLineX - 100, rect.top + 20, paintDragText); // 绘制上边界刻度}if (bottomScale >= 0 && bottomScale < TOTAL_SCALES) {bottomText = String.format(" %02d:%02d", bottomScale / 4, (bottomScale % 4) * 15);finalEndTime = bottomText;canvas.drawText(bottomText, mScaleLineX - 100, rect.bottom - 10, paintDragText); // 绘制下边界刻度//canvas.drawText(bottomText, mScaleLineX + 10, rect.bottom - 10, textPaint); // 绘制下边界刻度}if (!TextUtils.isEmpty(finalStartTime) && !TextUtils.isEmpty(finalEndTime)) {//更新调整后的时间activiesDataModelListl.get(index).setStart_time(finalStartTime);activiesDataModelListl.get(index).setEnd_time(finalEndTime);}} else {}}private void drawRectAndText(Canvas canvas, RectF rect, int index) {canvas.drawRoundRect(rect, cornerRadius, cornerRadius, paintRect); // 绘制圆角矩形-填充canvas.drawRoundRect(rect, cornerRadius, cornerRadius, borderPaint); // 绘制圆角矩形-边框boolean isLongPressStatus = (activiesDataModelListl.get(index)).isLongPressStatus();//绘制矩形的四个边角if (isLongPressStatus) {if (currentRect != null && currentRect == rect) {// lt h 左上角//  canvas.drawLine(rect.left, rect.top, rect.left + lineLen, rect.top, paintRect);// lt v//    canvas.drawLine(rect.left, rect.top, rect.left, rect.top + lineLen, paintRect);// rt h 右上角//  canvas.drawLine(rect.right - lineLen, rect.top, rect.right, rect.top, paintRect);// rt v//   canvas.drawLine(rect.right, rect.top, rect.right, rect.top + lineLen, paintRect);// lb h左下角//   canvas.drawLine(rect.left, rect.bottom, rect.left + lineLen, rect.bottom, paintRect);// lb v//       canvas.drawLine(rect.left, rect.bottom - lineLen, rect.left, rect.bottom, paintRect);// rb h 右下角//   canvas.drawLine(rect.right - lineLen, rect.bottom, rect.right, rect.bottom, paintRect);// rb v//  canvas.drawLine(rect.right, rect.bottom - lineLen, rect.right, rect.bottom, paintRect);drawShadowEffect(canvas, rect); // 绘制阴影效果}}ActiviesDataModel activiesDataModel = activiesDataModelListl.get(index);String name = activiesDataModel.getPop_name();String address = activiesDataModel.getPop_address();int popdb_id = activiesDataModel.getPopdb_id();String startTime = activiesDataModel.getStart_time();String endTime = activiesDataModel.getEnd_time();String value = name + " \n " + address + " \n " + startTime + " -- " + endTime;// 绘制矩形内的文本StaticLayout staticLayout = new StaticLayout(value, textPaint,(int) rect.width(), Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false);canvas.save();canvas.translate(rect.left, rect.top); // 移动画布到矩形的左上角staticLayout.draw(canvas);canvas.restore();}private void drawRectAndText(Canvas canvas, RectF rect, int index,boolean isInUp) {canvas.drawRoundRect(rect, cornerRadius, cornerRadius, paintRect); // 绘制圆角矩形-填充canvas.drawRoundRect(rect, cornerRadius, cornerRadius, borderPaint); // 绘制圆角矩形-边框boolean isLongPressStatus = (activiesDataModelListl.get(index)).isLongPressStatus();//绘制矩形的四个边角if (isLongPressStatus) {if (currentRect != null && currentRect == rect) {// lt h 左上角//  canvas.drawLine(rect.left, rect.top, rect.left + lineLen, rect.top, paintRect);// lt v//    canvas.drawLine(rect.left, rect.top, rect.left, rect.top + lineLen, paintRect);// rt h 右上角//  canvas.drawLine(rect.right - lineLen, rect.top, rect.right, rect.top, paintRect);// rt v//   canvas.drawLine(rect.right, rect.top, rect.right, rect.top + lineLen, paintRect);// lb h左下角//   canvas.drawLine(rect.left, rect.bottom, rect.left + lineLen, rect.bottom, paintRect);// lb v//       canvas.drawLine(rect.left, rect.bottom - lineLen, rect.left, rect.bottom, paintRect);// rb h 右下角//   canvas.drawLine(rect.right - lineLen, rect.bottom, rect.right, rect.bottom, paintRect);// rb v//  canvas.drawLine(rect.right, rect.bottom - lineLen, rect.right, rect.bottom, paintRect);drawShadowEffect(canvas, rect); // 绘制阴影效果}}ActiviesDataModel activiesDataModel = activiesDataModelListl.get(index);String name = activiesDataModel.getPop_name();String address = activiesDataModel.getPop_address();int popdb_id = activiesDataModel.getPopdb_id();String startTime = activiesDataModel.getStart_time();String endTime = activiesDataModel.getEnd_time();String value = name + " \n " + address + " \n " + startTime + " -- " + endTime;// 绘制矩形内的文本StaticLayout staticLayout = new StaticLayout(value, textPaint,(int) rect.width(), Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false);canvas.save();canvas.translate(rect.left, rect.top); // 移动画布到矩形的左上角staticLayout.draw(canvas);canvas.restore();}private void drawShadowEffect(Canvas canvas, RectF rect) {// 绘制阴影canvas.drawRoundRect(rect, cornerRadius, cornerRadius, shadowPaint); // 绘制圆角矩形}@Overridepublic boolean onTouchEvent(MotionEvent event) {float currentX = event.getX();float currentY = event.getY();switch (event.getAction()) {case MotionEvent.ACTION_DOWN:// 检查是否按下了控制点longPressStartTime = 0;for (int i = 0; i < rectangles.size(); i++) {RectF rect = rectangles.get(i);if (isInHandle(currentX, currentY, rect, LEFT_TOP)) {currentRect = rect;currentHandle = LEFT_TOP;} else if (isInHandle(currentX, currentY, rect, RIGHT_TOP)) {currentRect = rect;currentHandle = RIGHT_TOP;} else if (isInHandle(currentX, currentY, rect, LEFT_BOTTOM)) {currentRect = rect;currentHandle = LEFT_BOTTOM;} else if (isInHandle(currentX, currentY, rect, RIGHT_BOTTOM)) {currentRect = rect;currentHandle = RIGHT_BOTTOM;} else if (rect.contains(currentX, currentY)) {// 检测是否按下矩形currentRectIndex = i;longPressStartTime = System.currentTimeMillis(); // 记录长按开始时间currentRect = rect;currentHandle = MOVE_RECT;if (preRect != currentRect) {//前后两个矩形不是同一个//  isLongPressStatus = false;}timer = new Timer();timerTask = new TimerTask() {@Overridepublic void run() {//长按逻辑触发if(currentRectIndex!=-1){activiesDataModelListl.get(currentRectIndex).setLongPressStatus(true);// 长按触摸区域,禁止父容器 (ScrollView) 拦截触摸事件if (scrollView != null) {scrollView.requestDisallowInterceptTouchEvent(true);}}invalidate(); // 刷新视图}};timer.schedule(timerTask, LONGPRESSTIME, 1000 * 60 * 60 * 24);} else {// activiesDataModelListl.get(i).setLongPressStatus(false);}}lastX = currentX;lastY = currentY;preX = currentX;preY = currentY;isCancleClickStatus = true;try {boolean longPressStatus = activiesDataModelListl.get(currentRectIndex).isLongPressStatus();if (currentRect != null && longPressStatus) {// 触摸区域在矩形内,禁止父容器 (ScrollView) 拦截触摸事件if (scrollView != null) {scrollView.requestDisallowInterceptTouchEvent(true);}}} catch (Exception e) {e.getMessage();}break;case MotionEvent.ACTION_MOVE:if (currentRect != null) {float dx = currentX - lastX;float dy = currentY - lastY;boolean isLongPressStatus = false;if(currentRectIndex!=-1){isLongPressStatus = (activiesDataModelListl.get(currentRectIndex)).isLongPressStatus();}switch (currentHandle) {case LEFT_TOP://  currentRect.left += dx;//只允许上下拉伸 禁止左右拉伸if (isLongPressStatus) {currentRect.top += dy;}break;case RIGHT_TOP://   currentRect.right += dx;if (isLongPressStatus) {currentRect.top += dy;}break;case LEFT_BOTTOM://  currentRect.left += dx;if (isLongPressStatus) {currentRect.bottom += dy;}break;case RIGHT_BOTTOM://    currentRect.right += dx;if (isLongPressStatus) {currentRect.bottom += dy;}break;case MOVE_RECT:if (currentRectIndex != -1) {long pressDuration = System.currentTimeMillis() - longPressStartTime;if (isLongPressStatus) {//长按的时间长度//     isDragging = true; // 开始拖动// 计算拖动距离RectF rect = rectangles.get(currentRectIndex);rect.offset(0, (int) dy);//dx=0 只允许Y轴滑动 不允许x轴左右滑动}}break;}for (int n = 0; n < rectangles.size(); n++) {RectF rect = rectangles.get(n);boolean isLongPressStatusTemp = (activiesDataModelListl.get(n)).isLongPressStatus();if (rect != currentRect) {activiesDataModelListl.get(n).setLongPressStatus(false);}}//取消计时timerTask.cancel();timer.cancel();// 更新最后位置lastX = currentX;lastY = currentY;invalidate(); // 刷新视图}break;case MotionEvent.ACTION_UP:if (currentRect != null) {float dx = currentX - preX;float dy = currentY - preY;boolean isLongPressStatus = false;if(currentRectIndex!=-1){isLongPressStatus = (activiesDataModelListl.get(currentRectIndex)).isLongPressStatus();}if (dx == 0 && dy == 00) {//此处应该用绝对值来判断一个较小的数值if (!isLongPressStatus) {//不是长按状态的矩形boolean isHasTrue = false;for (int n = 0; n < rectangles.size(); n++) {RectF rect = rectangles.get(n);boolean isLongPressStatusTemp = (activiesDataModelListl.get(n)).isLongPressStatus();if (isLongPressStatusTemp) {isHasTrue = true;//检查是否存在点击状态的矩形}if (rect != currentRect) {activiesDataModelListl.get(n).setLongPressStatus(false);}}invalidate(); // 刷新视图if (isHasTrue) {} else {//如果没有选中状态矩形 则允许回调点击事件if (onclickListener != null) {onclickListener.onclick(currentRectIndex + "--" + activiesDataModelListl.get(currentRectIndex).getPop_name());}}} else {//点击的是长按状态的矩形}}preRect = currentRect;} else {//点击在非矩形区域isCancleClickStatus = false;//   isLongPressStatus = false;try {(activiesDataModelListl.get(currentRectIndex)).setLongPressStatus(false);} catch (Exception e) {e.getMessage();}invalidate(); // 刷新视图}// currentRectIndex = -1; // 取消触摸currentRect = null;currentHandle = NONE;//取消计时timerTask.cancel();timer.cancel();try {boolean longPressStatusUp = activiesDataModelListl.get(currentRectIndex).isLongPressStatus();// 恢复父容器 (ScrollView) 拦截触摸事件if (scrollView != null && !longPressStatusUp) {scrollView.requestDisallowInterceptTouchEvent(false);}} catch (Exception e) {e.getMessage();}break;case MotionEvent.ACTION_CANCEL:currentHandle = NONE;currentRectIndex = -1; // 取消触摸isLongPressStatus = false;//  (activiesDataModelListl.get(currentRectIndex)).setLongPressStatus(false);// 恢复父容器 (ScrollView) 拦截触摸事件if (scrollView != null) {scrollView.requestDisallowInterceptTouchEvent(false);}break;}return true;}private boolean isInHandle(float x, float y, RectF rect, int handle) {float handleSize = 60f; // 控制点的尺寸switch (handle) {case LEFT_TOP:return x >= rect.left - handleSize / 2 && x <= rect.left + handleSize / 2 &&y >= rect.top - handleSize / 2 && y <= rect.top + handleSize / 2;case RIGHT_TOP:return x >= rect.right - handleSize / 2 && x <= rect.right + handleSize / 2 &&y >= rect.top - handleSize / 2 && y <= rect.top + handleSize / 2;case LEFT_BOTTOM:return x >= rect.left - handleSize / 2 && x <= rect.left + handleSize / 2 &&y >= rect.bottom - handleSize / 2 && y <= rect.bottom + handleSize / 2;case RIGHT_BOTTOM:return x >= rect.right - handleSize / 2 && x <= rect.right + handleSize / 2 &&y >= rect.bottom - handleSize / 2 && y <= rect.bottom + handleSize / 2;default:return false;}}public void addRectangle(float left, float top, int tags, String textC) {//rectWidth = getWidth()-400;RectF rect = new RectF(left, top, 1010, top + rectHeight);Map<Integer, RectF> map = new HashMap<Integer, RectF>();map.put(tags, rect);texts.add(textC);rectanglesMapList.add(map);rectangles.add(rect);invalidate(); // 刷新视图}public void addRectangle(ArrayList<ActiviesDataModel> list) {this.activiesDataModelListl = list;for (int i = 0; i < activiesDataModelListl.size(); i++) {ActiviesDataModel activiesDataModel = activiesDataModelListl.get(i);String name = activiesDataModel.getPop_name();String address = activiesDataModel.getPop_address();int popdb_id = activiesDataModel.getPopdb_id();String startTime = activiesDataModel.getStart_time();String endTime = activiesDataModel.getEnd_time();// 需要根据具体的业务逻辑计算 left 和 topfloat top_start = formatTimeToYValues(startTime);float bootom_end = formatTimeToYValues(endTime);float rect_height = bootom_end - top_start;float rect_width = this.getWidth() - mScaleRectToLeft;RectF rect = new RectF(mScaleRectToLeft, top_start, 1010, top_start + rect_height);Map<Integer, RectF> map = new HashMap<>();map.put(i, rect);texts.add(name + " \n " + address + " \n " + startTime + " \n " + endTime);rectanglesMapList.add(map);rectangles.add(rect);}invalidate(); // 刷新视图}// 转换刻度值为时间字符串private float formatTimeToYValues(String time_value) {float y_value = 0;String closesTime = findClosestTimeRange(time_value);// 绘制15分钟刻度线for (int n = 0; n <= TOTAL_SCALES; n++) {float y = n * mScaleWidth; // 计算刻度Y坐标int hour = n / 4;int minute = (n % 4) * 15; // 每个刻度15分钟if ((n / 4 + "").contains("24")) {hour = 0;}String timeHMText = String.format("%02d:%02d", hour, minute);if (closesTime.equals(timeHMText)) {y_value = y;break;}}return y_value;}public String findClosestTimeRange(String time) {String[] parts = time.split(":");int hour = Integer.parseInt(parts[0]);int minute = Integer.parseInt(parts[1]);int totalMinutes = hour * 60 + minute;// 找到最接近的15分钟的倍数int closestMultiple = Math.round((float) totalMinutes / 15) * 15;// 将最接近的总分钟数转换回HH:MM格式int closestHour = closestMultiple / 60;int closestMinute = closestMultiple % 60;return String.format("%02d:%02d", closestHour, closestMinute);}public void setonclicklistener(onclickListener listener) {this.onclickListener = listener;}public void setonLongclicklistener(onLongclicklistener listener) {this.onLongclickListener = listener;}public interface onclickListener {void onclick(String value);}public interface onLongclicklistener {void onLongclick(String value);}}

外面传入数据调用即可:

MultiRectView multiRectView = findViewById(R.id.multiRectView);multiRectView.setonclicklistener(this);multiRectView.setonLongclicklistener(this);multiRectView.setScrollView(scrollView);ActiviesDataModel activiesDataModel1 = new ActiviesDataModel();activiesDataModel1.setPop_name(" POP Name1 万客隆精选超市");activiesDataModel1.setPop_address("南京东路1024弄");activiesDataModel1.setPopdb_id(215639);activiesDataModel1.setStart_time("06:40");activiesDataModel1.setEnd_time("08:30");ActiviesDataModel activiesDataModel2 = new ActiviesDataModel();activiesDataModel2.setPop_name(" POP Name2 京东自营超市");activiesDataModel2.setPop_address("南京东路1024弄");activiesDataModel2.setPopdb_id(215638);activiesDataModel2.setStart_time("09:10");activiesDataModel2.setEnd_time("11:50");ActiviesDataModel activiesDataModel3 = new ActiviesDataModel();activiesDataModel3.setPop_name(" POP Name3 拼多多百亿补贴超市");activiesDataModel3.setPop_address("南京东路1024弄");activiesDataModel3.setPopdb_id(215637);activiesDataModel3.setStart_time("12:40");activiesDataModel3.setEnd_time("14:30");ActiviesDataModel activiesDataModel4 = new ActiviesDataModel();activiesDataModel4.setPop_name(" POP Name4 淘宝天猫超市");activiesDataModel4.setPop_address("南京东路1024弄");activiesDataModel4.setPopdb_id(215636);activiesDataModel4.setStart_time("15:40");activiesDataModel4.setEnd_time("17:30");

相关文章:

仿iOS日历、飞书日历、Google日历的日模式

仿iOS日历、飞书日历、Google日历的日模式&#xff0c;24H内事件可自由上下拖动、自由拉伸。 以下是效果图&#xff1a; 具体实现比较简单&#xff0c;代码如下&#xff1a; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color;…...

vuedraggable

官方文档&#xff1a;https://www.npmjs.com/package/vuedraggable 中文文档&#xff1a;http://www.itxst.com/vue-draggable/tutorial.html 案例下载地址&#xff1a; https://github.com/SortableJS/Vue.Draggable.git vuedraggablehttps://sortablejs.github.io/Vue.Dr…...

新手从事直播软件源码开发搭建经验与技巧

如果从YY或六间房的PC秀场直播间系统软件算起&#xff0c;直播软件已经在国内风云了至少10年了&#xff0c;站在用户角度提到直播系统大家基本都知道核心功能有开直播刷礼物等&#xff0c;那么如果站在直播软件源码开发搭建的技术角度去看呢&#xff1f;是不是要从需求调研分析…...

相机不动,机构动作----Hands Eyes

最近在研究 手眼标定&#xff0c;发现大家都需付费&#xff0c;搞啥子&#xff0c;说好的开源。。。 以相机在上固定不动&#xff0c;机械手为 EPSON_Robot 为例&#xff0c;详细的一步一步实例操作指引 EPSON_Robot 的192.168.0.1 2004 Server 详细操作步骤 1. 启动程序 运…...

Scala的导入

//导入 //(1) 创建包&#xff1a;在src上右键&#xff0c;新建软件包 //(2)填写包名&#xff1a;小写 //(3)在包上右键&#xff0c;创建类。自动加入包名 //(4)导入。import 包名.类名 //导入多个类 //import jh.yuanlixueyuan.bigdata.scala03.{A,B,C} //导入包下的所有的类 /…...

vue2中父子组件传值案例总结

在 Vue 2 中&#xff0c;父子组件之间的传值是通过 props 和事件来实现的。下面是详细的解释和总结&#xff1a; 1. 父组件向子组件传值 父组件可以通过 props 向子组件传递数据。以下是一个简单的示例&#xff1a; 父组件 (Parent.vue) <template><div><h1…...

功能篇:springboot中实现文件导出

### Spring Boot 中实现文件导出功能 #### 概述 在现代Web应用程序中&#xff0c;文件导出是一个常见的需求&#xff0c;允许用户将数据以特定格式&#xff08;如CSV、Excel、PDF等&#xff09;下载到本地。本文将详细介绍如何使用Spring Boot实现文件导出功能&#xff0c;并…...

Redis客户端(Jedis、RedisTemplate、Redisson)

1. 简介 Redis作为一个当下很火热的非关系型数据库&#xff0c;Java从业人员基本都离不开对Redis的使用。在Java程序中该数据库&#xff0c;需要借助于市面上的开源客户端&#xff0c;如Jedis、Spring Data Redis、Redisson&#xff0c;它们可以作为操作Redis非关系型数据库的桥…...

Mybatis中SQL的执行过程

文章目录 Mybatis 框架SQL执行过程数据库操作映射方式SQL的执行过程- SQL解析- SQL参数映射- SQL预编译- SQL执行- 结果映射- 事务处理- 缓存处理- 日志记录与监控 扩展#与$的区别- $ 符号- # 符号总结示例 Mybatis SQL分类- 动态 SQL- 静态 SQL静态SQL和动态SQL选择${}、#{}与…...

【数据结构——栈与队列】顺序栈的基本运算(头歌实践教学平台习题)【合集】

目录&#x1f60b; 任务描述 相关知识 测试说明 我的通关代码: 测试结果&#xff1a; 任务描述 本关任务&#xff1a;编写一个程序实现顺序栈的基本运算。 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a; 初始化栈、销毁栈、判断栈是否为空、进栈、出栈、取…...

【论文阅读】PRIS: Practical robust invertible network for image steganography

内容简介 论文标题&#xff1a;PRIS: Practical robust invertible network for image steganography 作者&#xff1a;Hang Yang, Yitian Xu∗, Xuhua Liu∗, Xiaodong Ma∗ 发表时间&#xff1a;2024年4月11日 Engineering Applications of Artificial Intelligence 关键…...

在Linux桌面系统普及化方面的一些建议

在推动Linux桌面系统普及化的过程中&#xff0c;可以考虑以下几个方案和策略&#xff1a; 用户友好性改进&#xff1a; 界面设计&#xff1a;提升用户界面的美观性和易用性&#xff0c;使其更接近或超越主流操作系统的用户体验。软件兼容性&#xff1a;确保常用软件&#xff08…...

LLM - 多模态大模型的开源评估工具 VLMEvalKit 部署与测试 教程

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/144353087 免责声明&#xff1a;本文来源于个人知识与公开资料&#xff0c;仅用于学术交流&#xff0c;欢迎讨论&#xff0c;不支持转载。 VLMEva…...

数据结构(Queue队列)

前言&#xff1a; 在计算机科学中&#xff0c;数据结构是构建高效算法和程序的基础&#xff0c;而队列&#xff08;Queue&#xff09;作为一种经典的线性数据结构&#xff0c;具有重要的地位。与栈&#xff08;Stack&#xff09;不同&#xff0c;队列遵循“先进先出”&#xf…...

Qt 图形框架下图形拖动后位置跳动问题

在使用Qt 的图形框架QGraphicsScene&#xff0c;QGraphicsView实现图形显示时。遇到一个很棘手的BUG。 使用的图形是自定义的QGraphicsObject的子类。 现象是将图形添加到画布上之后&#xff0c;用鼠标拖动图形&#xff0c;图形能正常改变位置&#xff0c;当再次用鼠标点击图…...

【Linux篇】走进Linux — 开启开源操作系统之旅

文章目录 初识Linux一.Linux的起源与发展二.Linux的特点三.Linux的应用四.Linux的发行版本 Linux环境搭建一.Linux环境的搭建方式二.购买云服务器三.使用XShell远程登陆到Linux 初识Linux 一.Linux的起源与发展 1.初始动机&#xff1a; Linux是一个功能强大的开源操作系统&am…...

如何利用DBeaver配置连接MongoDB和人大金仓数据库

最近根据国产化要求&#xff0c;需要使用国产数据库&#xff0c;但习惯使用DBeaver连接各种成熟的商业或开源数据库。因此&#xff0c;就想着如何继续基于该工具&#xff0c;连接MongoDB和人大金仓数据库&#xff0c;查了半天很多地方说法不统一&#xff0c;所以自己就简单整理…...

Android 车载虚拟化底层技术-Kernel 5.10 -Android12(multi-cards)技术实现

详细代码实现见 Android Display Graphics系列文章-汇总​​​​​​Android Display Graphics系列文章-汇总 Android Display Graphics系列文章-汇总 Android Display Graphics系列文章-汇总 本文主要包括部分&#xff1a; 一、Android12的Kernel 5.10版本 1.1 Kernel 5…...

Qt之点击鼠标右键创建菜单栏使用(六)

Qt开发 系列文章 - menu&#xff08;六&#xff09; 目录 前言 一、示例演示 二、菜单栏 1.MenuBar 2.Menu 总结 前言 QMainWindow是一个为用户提供主窗口程序的类&#xff0c;包含一个菜单栏&#xff08;menubar&#xff09;、多个工具栏(toolbars)、一个状态栏(status…...

开发一套SDK 第一弹

自动安装依赖包 添加条件使能 #ex: filetypesh bash_ls 识别 达到预期,多个硬件环境 等待文件文件系统挂在完成 或者创建 /sys/class/ 属性文件灌入配置操作 AI 提供的 netlink 调试方法,也是目前主流调用方法,socket yyds #include <linux/module.h> #include <linux…...

sftp+sshpass

实现场景&#xff0c;要求客户端定时将本地的日志文件传输到服务器。 工作环境ubuntu&#xff0c;注意不通操作系统的版本不通&#xff0c;依赖的工具的版本也有所不同 实现目标需要客户端满足安装工具&#xff1a; 1、下载安装sshpass ---安装命令&#xff1a;sudo apt-ge…...

【机器学习与数据挖掘实战】案例01:基于支持向量回归的市财政收入分析

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈机器学习与数据挖掘实战 ⌋ ⌋ ⌋ 机器学习是人工智能的一个分支&#xff0c;专注于让计算机系统通过数据学习和改进。它利用统计和计算方法&#xff0c;使模型能够从数据中自动提取特征并做出预测或决策。数据挖掘则是从大型数…...

Idea实现定时任务

定时任务 什么是定时任务&#xff1f; 可以自动在项目中根据设定的时长定期执行对应的操作 实现方式 Spring 3.0 版本之后自带定时任务&#xff0c;提供了EnableScheduling注解和Scheduled注解来实现定时任务功能。 使用SpringBoot创建定时任务非常简单&#xff0c;目前主要…...

Linux 安装NFS共享文件夹

程序默认使用2049端口&#xff0c;如果被占用需要修改端口104设置为服务端 122设置为客户端 一、在线安装&#xff08;服务端和客户端执行&#xff09; yum install nfs-utils rpcbind -y二、配置启动参数&#xff08;服务端执行&#xff09; 104服务器/mnt路径下创建shareda…...

bash 判断内存利用率是否高于60%

在 Bash 脚本中&#xff0c;可以通过 free 命令获取内存利用率&#xff0c;然后结合 awk 和条件判断语句实现监控内存利用率是否高于 60%。以下是一个示例脚本&#xff1a; 1. 示例脚本 #!/bin/bash# 获取总内存和已使用内存 total_mem$(free | awk /Mem:/ {print $2}) used_…...

推送(push)项目到gitlab

文章目录 1、git init1.1、在当前目录中显示隐藏文件&#xff1a;1.2、查看已有的远程仓库1.3、确保你的本地机器已经生成了 SSH 密钥&#xff1a;1.4、将生成的公钥文件&#xff08;通常位于 ~/.ssh/id_rsa.pub&#xff09;复制到 GitLab 的 SSH 设置中&#xff1a;1.5、测试 …...

centos9升级OpenSSH

需求 Centos9系统升级OpenSSH和OpenSSL OpenSSH升级为openssh-9.8p1 OpenSSL默认为OpenSSL-3.2.2&#xff08;根据需求进行升级&#xff09; 将源码包编译为rpm包 查看OpenSSH和OpenSSL版本 ssh -V下载源码包并上传到服务器 openssh最新版本下载地址 wget https://cdn.openb…...

硬件成本5元-USB串口采集电表数据完整方案-ThingsPanel快速入门

ThingsPanel开源物联网平台支持广泛的协议&#xff0c;灵活自由&#xff0c;本文介绍ThingsPanel通过串口来采集电表数据&#xff0c;简单易行&#xff0c;成本低廉&#xff0c;适合入门者学习试验&#xff0c;也适合一些特定的应用场景做数据采集。 适用场景&#xff1a; 降低…...

在AWS EMR上用Hive、Spark、Airflow构建一个高效的ETL程序

在AWS EMR&#xff08;Elastic MapReduce&#xff09;上构建一个高效的ETL程序&#xff0c;使用Hive作为数据仓库&#xff0c;Spark作为计算引擎&#xff0c;Airflow作为调度工具时&#xff0c;有几个关键的设计与实施方面需要注意。 在AWS EMR上构建高效的ETL程序&#xff0c;…...

前端(四)css选择器、css的三大特性

css选择器、css的三大特性 文章目录 css选择器、css的三大特性一、css介绍二、css选择器2.1 基本选择器2.2 组合选择器2.3 交集并集选择器2.4序列选择器2.5属性选择器2.6伪类选择器2.7伪元素选择器 三、css三大特性3.1 继承性3.2 层叠性3.3 优先级 一、css介绍 CSS全称为Casca…...