江阴网站开发招聘托管网站是什么意思

web/2025/10/1 10:10:54/文章来源:
江阴网站开发招聘,托管网站是什么意思,网站构建培训,图盛网站建设一般进入APP都有欢迎界面#xff0c;基本都是水平滚动的#xff0c;今天和大家分享一个垂直滚动的例子。 先来看看效果把#xff1a; 首先是布局文件#xff1a; com.example.verticallinearlayout.VerticalLinearLayout xmlns:androidhttp://schemas.android.…一般进入APP都有欢迎界面基本都是水平滚动的今天和大家分享一个垂直滚动的例子。 先来看看效果把 首先是布局文件 com.example.verticallinearlayout.VerticalLinearLayout xmlns:androidhttp://schemas.android.com/apk/res/android xmlns:toolshttp://schemas.android.com/tools android:idid/id_main_ly android:layout_widthmatch_parent android:layout_heightfill_parent android:orientationvertical android:background#fff RelativeLayout android:layout_widthfill_parent android:layout_heightfill_parent android:backgrounddrawable/w02 Button android:layout_widthwrap_content android:layout_heightwrap_content android:texthello / /RelativeLayout RelativeLayout android:layout_widthfill_parent android:layout_heightfill_parent android:backgrounddrawable/w03 Button android:layout_widthwrap_content android:layout_heightwrap_content android:layout_centerInParenttrue android:background#fff android:texthello / /RelativeLayout RelativeLayout android:layout_widthfill_parent android:layout_heightfill_parent android:backgrounddrawable/w04 Button android:layout_widthwrap_content android:layout_heightwrap_content android:layout_centerInParenttrue android:texthello / /RelativeLayout RelativeLayout android:layout_widthfill_parent android:layout_heightfill_parent android:backgrounddrawable/w05 Button android:layout_widthwrap_content android:layout_heightwrap_content android:layout_centerInParenttrue android:texthello / /RelativeLayout /com.example.verticallinearlayout.VerticalLinearLayout 自定义的Layout了 package com.example.verticallinearlayout;import android.content.Context; import android.util.AttributeSet; import android.util.DisplayMetrics; import android.util.Log; import android.view.MotionEvent; import android.view.VelocityTracker; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; import android.widget.Scroller;public class VerticalLinearLayout extends ViewGroup {/*** 屏幕的高度*/private int mScreenHeight;/*** 手指按下时的getScrollY*/private int mScrollStart;/*** 手指抬起时的getScrollY*/private int mScrollEnd;/*** 记录移动时的Y*/private int mLastY;/*** 滚动的辅助类*/private Scroller mScroller;/*** 是否正在滚动*/private boolean isScrolling;/*** 加速度检测*/private VelocityTracker mVelocityTracker;/*** 记录当前页*/private int currentPage 0;private OnPageChangeListener mOnPageChangeListener;public VerticalLinearLayout(Context context, AttributeSet attrs){super(context, attrs);/*** 获得屏幕的高度*/WindowManager wm (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);DisplayMetrics outMetrics new DisplayMetrics();wm.getDefaultDisplay().getMetrics(outMetrics);mScreenHeight outMetrics.heightPixels;// 初始化mScroller new Scroller(context);}Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec){super.onMeasure(widthMeasureSpec, heightMeasureSpec);int count getChildCount();for (int i 0; i count; i){View childView getChildAt(i);measureChild(childView, widthMeasureSpec, heightMeasureSpec);}}Overrideprotected void onLayout(boolean changed, int l, int t, int r, int b){if (changed){int childCount getChildCount();// 设置主布局的高度MarginLayoutParams lp (MarginLayoutParams) getLayoutParams();lp.height mScreenHeight * childCount;setLayoutParams(lp);for (int i 0; i childCount; i){View child getChildAt(i);if (child.getVisibility() ! View.GONE){child.layout(l, i * mScreenHeight, r, (i 1) * mScreenHeight);// 调用每个自布局的layout}}}}Overridepublic boolean onTouchEvent(MotionEvent event){// 如果当前正在滚动调用父类的onTouchEventif (isScrolling)return super.onTouchEvent(event);int action event.getAction();int y (int) event.getY();obtainVelocity(event);switch (action){case MotionEvent.ACTION_DOWN:mScrollStart getScrollY();mLastY y;break;case MotionEvent.ACTION_MOVE:if (!mScroller.isFinished()){mScroller.abortAnimation();}int dy mLastY - y;// 边界值检查int scrollY getScrollY();// 已经到达顶端下拉多少就往上滚动多少if (dy 0 scrollY dy 0){dy -scrollY;Log.i(test, 已经到达顶端下拉多少就往上滚动多少scrollYscrollY);}// 已经到达底部上拉多少就往下滚动多少if (dy 0 scrollY dy getHeight() - mScreenHeight){dy getHeight() - mScreenHeight - scrollY;Log.i(test, 已经到达顶端下拉多少就往上滚动多少scrollYscrollY);}Log.i(test, dydy,scrollYscrollY);scrollBy(0, dy);mLastY y;break;case MotionEvent.ACTION_UP:mScrollEnd getScrollY();int dScrollY mScrollEnd - mScrollStart;if (wantScrollToNext())// 往上滑动{if (shouldScrollToNext()){mScroller.startScroll(0, getScrollY(), 0, mScreenHeight - dScrollY);} else{mScroller.startScroll(0, getScrollY(), 0, -dScrollY);}}if (wantScrollToPre())// 往下滑动{if (shouldScrollToPre()){mScroller.startScroll(0, getScrollY(), 0, -mScreenHeight - dScrollY);} else{mScroller.startScroll(0, getScrollY(), 0, -dScrollY);}}isScrolling true;postInvalidate();recycleVelocity();break;}return true;}/*** 根据滚动距离判断是否能够滚动到下一页* * return*/private boolean shouldScrollToNext(){return mScrollEnd - mScrollStart mScreenHeight / 2 || Math.abs(getVelocity()) 600;}/*** 根据用户滑动判断用户的意图是否是滚动到下一页* * return*/private boolean wantScrollToNext(){return mScrollEnd mScrollStart;}/*** 根据滚动距离判断是否能够滚动到上一页* * return*/private boolean shouldScrollToPre(){return -mScrollEnd mScrollStart mScreenHeight / 2 || Math.abs(getVelocity()) 600;}/*** 根据用户滑动判断用户的意图是否是滚动到上一页* * return*/private boolean wantScrollToPre(){return mScrollEnd mScrollStart;}Overridepublic void computeScroll(){super.computeScroll();if (mScroller.computeScrollOffset()){scrollTo(0, mScroller.getCurrY());postInvalidate();} else{int position getScrollY() / mScreenHeight;Log.e(xxx, position , currentPage);if (position ! currentPage){if (mOnPageChangeListener ! null){currentPage position;mOnPageChangeListener.onPageChange(currentPage);}}isScrolling false;}}/*** 获取y方向的加速度* * return*/private int getVelocity(){mVelocityTracker.computeCurrentVelocity(1000);return (int) mVelocityTracker.getYVelocity();}/*** 释放资源*/private void recycleVelocity(){if (mVelocityTracker ! null){mVelocityTracker.recycle();mVelocityTracker null;}}/*** 初始化加速度检测器* * param event*/private void obtainVelocity(MotionEvent event){if (mVelocityTracker null){mVelocityTracker VelocityTracker.obtain();}mVelocityTracker.addMovement(event);}/*** 设置回调接口* * param onPageChangeListener*/public void setOnPageChangeListener(OnPageChangeListener onPageChangeListener){mOnPageChangeListener onPageChangeListener;}/*** 回调接口* * author zhy* */public interface OnPageChangeListener{void onPageChange(int currentPage);} } 释还是相当详细的我简单描述一下Action_down时获得当前的scrollY,然后Action_move时根据移动的距离不断scrollby就行了当前处理了一下边界判断在Action_up中再次获得scrollY两个的scrollY进行对比然后根据移动的距离与方向决定最后的动作 MainActivity package com.example.verticallinearlayout;import android.app.Activity; import android.os.Bundle; import android.widget.Toast;import com.example.verticallinearlayout.VerticalLinearLayout.OnPageChangeListener;public class MainActivity extends Activity {private VerticalLinearLayout mMianLayout;Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mMianLayout (VerticalLinearLayout) findViewById(R.id.id_main_ly);mMianLayout.setOnPageChangeListener(new OnPageChangeListener(){Overridepublic void onPageChange(int currentPage){ // mMianLayout.getChildAt(currentPage);Toast.makeText(MainActivity.this, 第(currentPage1)页, Toast.LENGTH_SHORT).show();}});}}为了提供可扩展性还是定义了回调接口完全可以把这个当成一个垂直的ViewPager使用。 总结下 Scroller这个辅助类还是相当好用的原理我简单说一下每次滚动时让Scroller进行滚动然后调用postInvalidate方法这个方法会引发调用onDraw方法onDraw方法中会去调用computeScroll方法然后我们在computScroll中判断Scroller的滚动是否结束没有的话把当前的View滚动到现在Scroller的位置然后继续调用postInvalidate这样一个循环的过程。 画张图方便大家理解ps:没找到什么好的画图工具那rose随便画了莫计较。 源码 源码点击此处下载 完成

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/84993.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

榕江网站建设专业做网站的公司有

干系人绩效域 干系人绩效域涉及与干系人相关的活动和职能。在项目整个生命周期过程中,有效执行本绩效域可以实现的预期目标主要包含:①与干系人建立高效的工作关系;②干系人认同项目目标;③支持项目的干系人提高了满意度&#xf…

网站关键词选取的步骤郑州旅游网站制作

Leetcode 45. 跳跃游戏 II 动态规划 使用dp [ ] 记录每个位置可达的最小步数,每到达一个点时,更新该点所能跳跃区间内的所有点的dp值 时间复杂度较高 class Solution {public int jump(int[] nums) {int n nums.length;int dp[] new int [n];int N …

千元低价网站建设付费链接生成软件

科学、技术、工程、应用 科学:是什么、为什么技术:怎么做工程:怎样做的多快好省应用:怎么使用 定义 机器学习:利用经验改善系统自身的性能。 研究 智能数据分析(数据分析算法) 典型的机器…

中国建设银网站网站如何做绿标

js 序列化内置对象本文是我们名为“ 高级Java ”的学院课程的一部分。 本课程旨在帮助您最有效地使用Java。 它讨论了高级主题,包括对象创建,并发,序列化,反射等。 它将指导您完成Java掌握的旅程! 在这里查看 &#x…

品牌网站建设有哪些方面软件app开发定制

OpenCV学习笔记(十):图像金字塔Pyramid和图像缩放:pyrDown(),pyrUp(),resize() 一、图像金字塔定义: 图像金字塔是图像中多尺度表达的一种,最主要用于图像的分割,是一种以多分辨率来解释图像的…

网站开发需求做娱乐网站被坑

📘北尘_:个人主页 🌎个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上,不忘来时的初心 [TOC](文章目录) 一、程序地址空间回顾 我们在讲C语言的时候,老师给大家画过这样的空间布局…

建设网站的平台东莞债务优化

回调函数与qsort的讲解和模拟实现 前言1. 回调函数是什么?2. qsort2.1 使用qsort函数排序整型数据2.2 使用qsort排序结构数据 3. qsort函数的模拟实现 前言 回调函数是一个函数,它作为参数传递给另一个函数,并且能够在该函数内部被调用。在C…

邦利博客网站怎么做的开发网站代码量

1. 题目 在一个给定的数组nums中,总是存在一个最大元素 。 查找数组中的最大元素是否至少是数组中每个其他数字的两倍。 如果是,则返回最大元素的索引,否则返回-1。 示例 1: 输入: nums [3, 6, 1, 0] 输出: 1 解释: 6是最大的整数, 对于…

黄石做网站的公司正版网站设计制作

这篇文章将展示如何使用Elixir和Phoenix框架构建REST API。 重点将是为持久化到Postgres数据库后端的模型提供CRUD(创建,读取,更新,删除)端点。 我应该警告你; 这是一个简单的例子。 但是,希望它…

如何用iis部署网站wordpress菜单编辑

List是什么?List顾名思义就是列表,那么它具体描述是什么呢?列表是一个线性的集合,它允许用户在任何位置插入、删除、访问和替换元素。在Python中list是保留字,List中的每个元素都有自己的编号,很像C、C、ja…

龙华建设网站公司企业网站设计北京

rz和sz是Linux/Unix同Windows进行Zmodem文件传输的命令工具,都使用Zmodem文件传输协议。 rz(上传命令): 运行该命令会弹出一个文件选择窗口,从本地选择文件上传到Linux服务器。 (receive zmodem的缩写)…

创世网站lamp 搭建wordpress

iOS11 UICollectionView顶到屏幕顶端会出现一个20高度的白色间隔,是由于UICollectionView的自动调整功能为状态栏留出的位置 只需在创建UICollectionView时加入如下代码关闭自动调整: 该属性是iOS11新加入的,所以一定要在前面加上判断&#x…

电子商务网站建设实训 报告网站你懂我意思正能量晚上在线下载免费软件魅族

记录一下使用docker快速搭建部署hive环境 目录 写在前面 步骤 安装docker 安装docker安装docker-compose配置docker国内镜像源(可选) 安装git & 配置github部署Hive docker-hive开始部署 使用Hive命令行收尾工作 安装vi、lrzsz关闭相关命令 END…

淡水网站建设公司网站开发知识

开学季大礼包9月开学了,作为学生的你,有想过在这个数字化年代,学最cool的技术吗?人工智能,物联网,云计算,还有区块链这些互联网产物影响着你的生活,也影响着你将来的职业发展。不论你…

游戏网站建设与策划网站开发与运营怎么样

【JavaEE】AOP(2) 文章目录 【JavaEE】AOP(2)1. 统一登录校验处理1.1 自定义拦截器1.2 将自定义拦截器加入到系统配置1.3 测试1.4 对于静态资源的处理1.5 小练习:统一登录拦截处理1.6 拦截器原理1.6.1 执行流程1.6.2 源…

郸城网站建设温州市网站建设哪家公司好

目录 1.登录入口 2.点击“账号密码登录” 3.输入账号、密码并点击登录 4.滑块验证过程 5.小结 本次主要是使用selenium模拟登录网页端的TX新闻,本来最开始是模拟请求的,但是某一天突然发现,部分账号需要经过滑块验证才能正常登录&#x…

山东外贸网站推广wordpress 文章打不开

除了上一节讲到的插入table标签,可以使父元素高度确定的多行文本垂直居中之外,本节介绍另外一种实现这种效果的方法。但这种方法兼容性比较差,只是提供大家学习参考。 在 chrome、firefox 及 IE8 以上的浏览器下可以设置块级元素的 display 为…

适合做网站背景音乐网站建设最好的教程

华为手机 鸿蒙系统 或者安卓系统的百度网盘下载的文件保存在手机什么位置如何查看 连接电脑后一般在这里位置 计算机\Mate 20 Pro (UD)\内部存储\Download\BaiduNetdisk 也就是用usb(数据线,不是充电线,要四心的 )连接手机后,打…

网站描述在哪里写关于加强网站建设的建议

碳资产是绿色资产的重要类别,在全球气候变化日益严峻的背景下备受关注。在“双碳”目标下,碳资产管理是企业层面实现碳减排目标和低碳转型的关键。 一、什么是碳资产? 碳资产是以碳减排为基础的资产,是企业为了积极应对气候变化&…

网站备案ps百度广告推广费用年费

域环境共享文件夹-容量配额管理 要求 1/李斯用户配额10G云盘空间,张珊用户配额30G云盘空间 2/D:\ 配额-启用配额-启用配额管理-拒绝将磁盘空间给超过配额限制的用户-勾选 3/将磁盘空间限制为:55GB,将警告等级设为50GB 4/选择该卷的配额记录选项-勾选…