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

建设摩托车网站wordpress手动更新视频教程

建设摩托车网站,wordpress手动更新视频教程,商务网站建设期末考试,wordpress文章末尾添加版权信息Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC #x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧#xff0c;以及各种资源分…Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC 关于作者 专注于Android/Unity和各种游戏开发技巧以及各种资源分享网站、工具、素材、源码、游戏等 有什么需要欢迎底部卡片私我交流让学习不再孤单。 实践过程 GestureViewBinder public class GestureViewBinder {private ScaleGestureBinder scaleGestureBinder;private ScrollGestureBinder scrollGestureBinder;private ScaleGestureListener scaleGestureListener;private ScrollGestureListener scrollGestureListener;private View targetView;private ViewGroup viewGroup;private boolean isScaleEnd true;private OnScaleListener onScaleListener;private boolean isFullGroup false;public static GestureViewBinder bind(Context context, ViewGroup viewGroup, View targetView) {return new GestureViewBinder(context, viewGroup, targetView);}private GestureViewBinder(Context context, ViewGroup viewGroup, View targetView) {this.targetView targetView;this.viewGroup viewGroup;scaleGestureListener new ScaleGestureListener(targetView, viewGroup);scrollGestureListener new ScrollGestureListener(targetView, viewGroup);scaleGestureBinder new ScaleGestureBinder(context, scaleGestureListener);scrollGestureBinder new ScrollGestureBinder(context, scrollGestureListener);targetView.setClickable(false);viewGroup.setOnTouchListener(new View.OnTouchListener() {SuppressLint(ClickableViewAccessibility)Overridepublic boolean onTouch(View v, MotionEvent event) {if (event.getPointerCount() 1 isScaleEnd) {return scrollGestureBinder.onTouchEvent(event);} else if (event.getPointerCount() 2 || !isScaleEnd) {isScaleEnd event.getAction() MotionEvent.ACTION_UP;if (isScaleEnd) {scaleGestureListener.onActionUp();}scrollGestureListener.setScale(scaleGestureListener.getScale());if (onScaleListener ! null) {onScaleListener.onScale(scaleGestureListener.getScale());}return scaleGestureBinder.onTouchEvent(event);}return false;}});}private void fullGroup() {targetView.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {Overridepublic boolean onPreDraw() {targetView.getViewTreeObserver().removeOnPreDrawListener(this);float viewWidth targetView.getWidth();float viewHeight targetView.getHeight();float groupWidth viewGroup.getWidth();float groupHeight viewGroup.getHeight();ViewGroup.LayoutParams layoutParams targetView.getLayoutParams();float widthFactor groupWidth / viewWidth;float heightFactor groupHeight / viewHeight;if (viewWidth groupWidth widthFactor * viewHeight groupHeight) {layoutParams.width (int) groupWidth;layoutParams.height (int) (widthFactor * viewHeight);} else if (viewHeight groupHeight heightFactor * viewWidth groupWidth) {layoutParams.height (int) groupHeight;layoutParams.width (int) (heightFactor * viewWidth);}targetView.setLayoutParams(layoutParams);return true;}});}public boolean isFullGroup() {return isFullGroup;}public void setFullGroup(boolean fullGroup) {isFullGroup fullGroup;scaleGestureListener.setFullGroup(fullGroup);scrollGestureListener.setFullGroup(fullGroup);fullGroup();}public void setOnScaleListener(OnScaleListener onScaleListener) {this.onScaleListener onScaleListener;}public interface OnScaleListener {void onScale(float scale);} }ScaleGestureBinder public class ScaleGestureBinder extends ScaleGestureDetector {ScaleGestureBinder(Context context, ScaleGestureListener scaleGestureListener) {super(context, scaleGestureListener);}Overridepublic boolean onTouchEvent(MotionEvent event) {return super.onTouchEvent(event);}}ScaleGestureListener public class ScaleGestureListener implements ScaleGestureDetector.OnScaleGestureListener/*, GestureDetector.OnGestureListener, GestureDetector.OnDoubleTapListener */ {private View targetView;private float scale 1;private float scaleTemp 1;private boolean isFullGroup false;ScaleGestureListener(View targetView, ViewGroup viewGroup) {this.targetView targetView;}Overridepublic boolean onScale(ScaleGestureDetector detector) {scale scaleTemp * detector.getScaleFactor();targetView.setScaleX(scale);targetView.setScaleY(scale);return false;}Overridepublic boolean onScaleBegin(ScaleGestureDetector detector) {return true;}Overridepublic void onScaleEnd(ScaleGestureDetector detector) {scaleTemp scale;}float getScale() {return scale;}public boolean isFullGroup() {return isFullGroup;}void setFullGroup(boolean fullGroup) {isFullGroup fullGroup;}void onActionUp() {if (isFullGroup scaleTemp 1) {scale 1;targetView.setScaleX(scale);targetView.setScaleY(scale);scaleTemp scale;}} }ScrollGestureBinder class ScrollGestureBinder extends GestureDetector {ScrollGestureBinder(Context context, ScrollGestureListener scrollGestureListener) {super(context, scrollGestureListener);} }ScrollGestureListener public class ScrollGestureListener extends GestureDetector.SimpleOnGestureListener {private float scale 1;private View targetView;private ViewGroup viewGroup;private float distanceXTemp 0;private float distanceYTemp 0;private float viewWidthReal 0;private float viewHeightReal 0;private float viewWidthRealTemp 0;private float viewHeightRealTemp 0;private boolean isCalculate false;private int viewWidthNormal 0;private int viewHeightNormal 0;private int groupWidth 0;private int groupHeight 0;private float maxTranslationLeft 0;private float maxTranslationTop 0;private float maxTranslationRight 0;private float maxTranslationBottom 0;private boolean isFullGroup false;ScrollGestureListener(View targetView, ViewGroup viewGroup) {this.targetView targetView;this.viewGroup viewGroup;}Overridepublic boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {distanceX -distanceX;distanceY -distanceY;if (isFullGroup || scale 1) {if (viewWidthReal groupWidth) {translationXOnScrollEvent(distanceX);}if (viewHeightReal groupHeight) {translationYOnScrollEvent(distanceY);}} else {translationXOnScrollEvent(distanceX);translationYOnScrollEvent(distanceY);}return super.onScroll(e1, e2, distanceX, distanceY);}private void translationXOnScrollEvent(float distanceX) {//最大移动距离全部为正数所以需要通过判断distanceX的正负来判断是向左移动还是向右移动// 然后通过取distanceX的绝对值来和相应移动方向的最大移动距离比较if ((distanceX 0 Math.abs(distanceXTemp distanceX) maxTranslationLeft)|| (distanceX 0 distanceXTemp distanceX maxTranslationRight)) {distanceXTemp distanceX;targetView.setTranslationX(distanceXTemp);//如果超出边界就移动到最大距离防止边界有剩余量} else if ((distanceX 0 Math.abs(distanceXTemp distanceX) maxTranslationLeft)) {distanceXTemp -maxTranslationLeft;targetView.setTranslationX(-maxTranslationLeft);} else if ((distanceX 0 distanceXTemp distanceX maxTranslationRight)) {distanceXTemp maxTranslationRight;targetView.setTranslationX(maxTranslationRight);}}private void translationYOnScrollEvent(float distanceY) {if ((distanceY 0 Math.abs(distanceYTemp distanceY) maxTranslationTop)|| (distanceY 0 distanceYTemp distanceY maxTranslationBottom)) {distanceYTemp distanceY;targetView.setTranslationY(distanceYTemp);//如果超出边界就移动到最大距离防止边界有剩余量} else if ((distanceY 0 Math.abs(distanceYTemp distanceY) maxTranslationTop)) {distanceYTemp -maxTranslationTop;targetView.setTranslationY(-maxTranslationTop);} else if ((distanceY 0 distanceYTemp distanceY maxTranslationBottom)) {distanceYTemp maxTranslationBottom;targetView.setTranslationY(maxTranslationBottom);}}Overridepublic boolean onDown(MotionEvent e) {//计算能移动的最大距离if (!isCalculate) {isCalculate true;maxTranslationLeft targetView.getLeft();maxTranslationTop targetView.getTop();maxTranslationRight viewGroup.getWidth() - targetView.getRight();maxTranslationBottom viewGroup.getHeight() - targetView.getBottom();viewWidthNormal targetView.getWidth();viewHeightNormal targetView.getHeight();viewWidthRealTemp viewWidthNormal;viewHeightRealTemp viewHeightNormal;viewWidthReal viewWidthNormal;viewHeightReal viewHeightNormal;groupWidth viewGroup.getWidth();groupHeight viewGroup.getHeight();}return true;}void setScale(float scale) {viewWidthReal viewWidthNormal * scale;viewHeightReal viewHeightNormal * scale;//如果view比group小if (viewWidthReal groupWidth) {if (isFullGroup) {distanceXTemp 0;targetView.setTranslationX(0);}maxTranslationLeft targetView.getLeft() - (viewWidthReal - viewWidthNormal) / 2;maxTranslationRight (viewGroup.getWidth() - targetView.getRight()) - (viewWidthReal - viewWidthNormal) / 2;//如果移动距离超过最大可移动距离if (scale this.scale distanceXTemp 0 -distanceXTemp maxTranslationLeft) {float translate (viewWidthReal - viewWidthRealTemp) / 2;targetView.setTranslationX(targetView.getTranslationX() translate);distanceXTemp distanceXTemp translate;} else if (scale this.scale distanceXTemp 0 distanceXTemp maxTranslationRight) {float translate (viewWidthReal - viewWidthRealTemp) / 2;targetView.setTranslationX(targetView.getTranslationX() - translate);distanceXTemp distanceXTemp - translate;}} else {maxTranslationLeft (viewWidthReal - viewWidthNormal) / 2 - (viewGroup.getWidth() - targetView.getRight());maxTranslationRight (viewWidthReal - viewWidthNormal) / 2 - targetView.getLeft();if (scale this.scale distanceXTemp 0 -distanceXTemp maxTranslationLeft) {float translate (viewWidthRealTemp - viewWidthReal) / 2;targetView.setTranslationX(targetView.getTranslationX() translate);distanceXTemp distanceXTemp translate;} else if (scale this.scale distanceXTemp 0 distanceXTemp maxTranslationRight) {float translate (viewWidthRealTemp - viewWidthReal) / 2;targetView.setTranslationX(targetView.getTranslationX() - translate);distanceXTemp distanceXTemp - translate;}}if (viewHeightReal groupHeight) {maxTranslationTop targetView.getTop() - (viewHeightReal - viewHeightNormal) / 2;maxTranslationBottom (viewGroup.getHeight() - targetView.getBottom()) - (viewHeightReal - viewHeightNormal) / 2;if (isFullGroup) {distanceYTemp 0;targetView.setTranslationY(0);}//如果移动距离超过最大可移动距离if (scale this.scale distanceYTemp 0 -distanceYTemp maxTranslationTop) {float translate (viewHeightReal - viewHeightRealTemp) / 2;targetView.setTranslationY(targetView.getTranslationY() translate);distanceYTemp distanceYTemp translate;} else if (scale this.scale distanceYTemp 0 distanceYTemp maxTranslationBottom) {float translate (viewHeightReal - viewHeightRealTemp) / 2;targetView.setTranslationY(targetView.getTranslationY() - translate);distanceYTemp distanceYTemp - translate;}} else {maxTranslationTop (viewHeightReal - viewHeightNormal) / 2 - (viewGroup.getHeight() - targetView.getBottom());maxTranslationBottom (viewHeightReal - viewHeightNormal) / 2 - targetView.getTop();if (scale this.scale distanceYTemp 0 -distanceYTemp maxTranslationTop) {float translate (viewHeightRealTemp - viewHeightReal) / 2;targetView.setTranslationY(targetView.getTranslationY() translate);distanceYTemp distanceYTemp translate;} else if (scale this.scale distanceYTemp 0 distanceYTemp maxTranslationBottom) {float translate (viewHeightRealTemp - viewHeightReal) / 2;targetView.setTranslationY(targetView.getTranslationY() - translate);distanceYTemp distanceYTemp - translate;}}viewWidthRealTemp viewWidthReal;viewHeightRealTemp viewHeightReal;this.scale scale;}Overridepublic boolean onSingleTapUp(MotionEvent e) {float left viewWidthReal groupWidth ? 0 : (targetView.getLeft() - ((viewWidthReal - viewWidthNormal) / 2));float top viewHeightReal groupHeight ? 0 : (targetView.getTop() - ((viewHeightReal - viewHeightNormal) / 2));float right viewWidthReal groupWidth ? groupWidth : viewGroup.getWidth() - ((viewGroup.getWidth() - targetView.getRight()) - (viewWidthReal - viewWidthNormal) / 2);float bottom viewHeightReal groupHeight ? groupHeight : viewGroup.getHeight() - ((viewGroup.getHeight() - targetView.getBottom()) - (viewHeightReal - viewHeightNormal) / 2);RectF rectF new RectF(left, top, right, bottom);if (rectF.contains(e.getX(), e.getY())) {targetView.performClick();}return super.onSingleTapUp(e);}public boolean isFullGroup() {return isFullGroup;}void setFullGroup(boolean fullGroup) {isFullGroup fullGroup;} }其他 作者小空和小芝中的小空 转载说明-务必注明来源https://zhima.blog.csdn.net/ 这位道友请留步☁️我观你气度不凡谈吐间隐隐有王者霸气日后定有一番大作为旁边有点赞收藏今日传你点了吧未来你成功☀️我分文不取若不成功⚡️也好回来找我。 温馨提示点击下方卡片获取更多意想不到的资源。
http://www.zqtcl.cn/news/499620/

相关文章:

  • dede网站模板怎么安装教程青岛需要做网站的公司
  • 静态双语企业网站后台源码北京网站关键词优化
  • 石家庄手机网站建设公司wordpress侧边栏显示子分类文字数
  • 公司网站客户案例个人做 网站2019
  • 个人网站怎么申请销售策划
  • 网站被黑 禁止js跳转企业为什么要建立集团
  • 建设网站的各种问题上海品牌女装排行榜前十名
  • seo优化搜索引擎网站优化推广网络关键词优化-乐之家网络科技商城网站备案能通过吗
  • 江门网站建设推广策划网站改版的宣传词
  • 网站建设三大部分国外购物平台网页界面设计
  • 公司商城网站建设方案wordpress旗舰
  • 京东云服务器怎么做网站企业宣传网站怎么做
  • 如何自学网站建设云南网爱我国防知识竞赛
  • 什么网站可以做投资设计接单
  • 网站内容批量替换桐乡网站制作
  • 怎么免费做网站教程制作xml网站地图文件
  • 广西智能网站建设哪家好网红商城
  • 关于建设网站的情况说明书wordpress 在线检测
  • 帝国cms 网站迁移错版怎样做心理咨询网站
  • 烟台建网站wordpress重写规则
  • 上海网站建设怎么赚钱平顶山网站建设服务公司
  • 导航网站如何被百度收录广告设计在线设计
  • 雪域什么网站是做电影的苏州优化方式
  • 设计网站多少钱手机百度助手
  • 驾校网上约车网站开发不会做网站如何做seo
  • 企业做推广可以发哪些网站宜兴埠网站建设
  • 网站后台文章添加成功 不显示公司设计网站建设合同
  • 后端开发需要掌握哪些知识潍坊优化公司
  • 专业手机网站制作哪家好wordpress wp-polls
  • 网站建设前分析网页制作素材按钮