在使用异或交换数组值的时候,可以使用异或,不用临时变量。...但是这个方法当i与j相等时,相当于始终对一个数自己进行异或,我们知道两个一样的数异或结果为0 假如i==j 则 a[i] = a[i] ^ a[j]; //结果为0 则此时a[i]=a[j]=0 a[...j] = a[i] ^ a[j]; // = 0 ^ 0 = 0; a[i] = a[i] ^ a[j]; // = 0 所以最后结果为0 添加一行判断问题解决。
Span时,主要会使用到下面几个类,SpannedString、SpannableString 或 SpannableStringBuilder。...,这跟它的内部实现有关,所以,在使用getSpans时,如果希望获取顺序的排列数组,那就需要对返回结果进行手动排序,代码如下所示。...ReplacementSpan的draw函数会在TextView绘制时调用,我们可以借助其返回的这些参数来帮助我们进行绘制 下面这个代码,就演示了ReplacementSpan的基本使用方式。...ReplacementSpan的使用场景非常多,毕竟可以完全掌握绘制能力,下面通过几个常用的使用场景,来演示下ReplacementSpan的使用步骤。...需要注意的是,在混合使用多个Span时,由于ReplacementSpan会改变Span的宽度,所以一般需要最先设置ReplacementSpan,再设置其它Span,避免由于调整尺寸后导致坐标的变化,
我是川川,QQ2835809579,有问题留言or私我 原题: 输入一批正整数(以零或负数为结束标志),求其中的奇数和。...要求定义和调用函数int even(int n)判断整数n的奇偶性,当为奇数时返回1,否则返回0。...输入输出示例 输入:11 3 7 6 8 9 11 0 输出:sum = 41 代码: #include #include int even(int n) { return n %2 ==0?...1: 0; } int main() { int n,sum=0; printf("请输入-批数整数: \n"); scanf( "%d", &n); while (n !...= 0) { if(even(n)==0) { sum+= n; } scanf( "%d", &n); } printf("sum=%d\n",sum); return 0; } 结果:
前言 思路 代码 使用方法 补充 前言 近期项目原因需要一个上下两屏滑动的效果。可以想象成viewpager左右滑动变成上下滑动。...isOpen) { // 菜单关闭时向右滑动超过menu三分之一宽度才会打开菜单 if (dy getMeasuredHeight...menu区域时,只有向左滑动超过menu的三分之一,才会关闭 if (dy > menu.getMeasuredHeight() / 3) {...Scroll_to_Open: mScroller.startScroll(0, scrolly, 0, menu.getMeasuredHeight()- scrolly...使用方法 private MySlidingMenu mSlidingMenu; ......
onMeasure(widthMeasureSpec, heightMeasureSpec); ... } // 不同的ViewGroup子类有不同的布局特性,这导致它们的测量细节各不相同...intrinsicWidth : 0; } 如果View没有设置背景,那么返回android:minWidth这个属性所指定的值,这个值可以为0;如果View设置了背景,则返回android:minWidth...自定义View时手动处理wrap_content时的情形 直接继承View的控件需要重写onMeasure方法并设置wrap_content时的自身大小,否则在布局中使用wrap_content就相当于使用...Viewgroup的getChildMeasureSpec()遵循如下规则: 从上面可以看出,当子View的布局参数使用wrap_content或wrap_content时: 子View的specMode...host.layout(0, 0, host.getMeasuredWidth(), host.getMeasuredHeight()); ... } // View.java public
前言 在自定义View的过程中,使用getMeasuredWidth() / getMeasuredHeight() 与 getWidth() / getHeight()都能获取View的宽 / 高,但是二者有什么区别呢...---- 1. getMeasuredWidth() / getMeasuredHeight()返回值 1.1 结论 返回的值是 View在Measure过程中测量的宽 / 高 1.2 源码分析 由于getMeasuredWidth...使用提供的默认大小 = 参数Size case MeasureSpec.UNSPECIFIED: result = size;...break; // 模式为AT_MOST,EXACTLY时,使用View测量后的宽/高值 = measureSpec中的...View的宽/高值 return result; } ---- 2. getWidth() / getHeight()返回值 2.1 结论 返回的值是 View在Layout
view.setOnTouchListener(mOnTouchListener); } } } else { // 当数据源个数小于或等于最大显示数时...makeMovementFlags(dragFlags, swipeFlags); } 还有一点需要注意,前面说过,为了防止第二层和第三层卡片也能滑动,因此我们需要设置 isItemViewSwipeEnabled() 返回..., RecyclerView.ViewHolder target) 中直接返回 false 即可。.../ 得到滑动的阀值 float ratio = dX / getThreshold(recyclerView, viewHolder); // ratio 最大为 1 或...() / CardConfig.DEFAULT_TRANSLATE_Y); } } else { // 当数据源个数小于或等于最大显示数时
2、 截取特定控件或区域: 如果你只需要截取Activity中的某个特定控件或区域,可以对该控件调用相同的方法。...首先确保控件的drawingCache被启用,然后创建一个与控件大小相同的Bitmap,并使用Canvas将控件的内容绘制到这个Bitmap上。...3、 滚动RecyclerView: 使用scrollTo()或scrollBy()方法将RecyclerView滚动到顶部,然后逐屏截取内容,直到覆盖整个RecyclerView的高度。...4、 绘制每个屏幕的内容: 在滚动过程中,每次RecyclerView滚动到新的屏幕位置时,使用draw()方法将当前屏幕的内容绘制到Canvas上。...View.MeasureSpec.UNSPECIFIED)); itemView.layout(0, 0, itemView.getMeasuredWidth(), itemView.getMeasuredHeight
mMoveLen; private MyTimer mTimer; private float mLastY; /** * 用于控制是否变动布局的另一个条件,mEvents==0时布局可以拖拽了...MotionEvent.ACTION_POINTER_DOWN: case MotionEvent.ACTION_POINTER_UP: // 多一只手指按下或抬起时舍弃将要到来的第一个事件...(0, topView.getMeasuredHeight() + (int) mMoveLen, mViewWidth, topView.getMeasuredHeight...---getChildAt---", sv.getChildAt(0).getMeasuredHeight()+""); Log.i("------getMeasuredHeight...---sv---", sv.getMeasuredHeight()+""); if (sv.getScrollY() == (sv.getChildAt(0).getMeasuredHeight
()返回的是原始测量高度,与屏幕无关,getHeight()返回的是在屏幕上显示的高度。...(1.1)view的measure过程 过程我就不详述了,我就说明一下注意点 直接继承View的自定义控件需要重写onMeasure方法并设置wrap_content时的自身大小,否则在布局中使用...wrap_content就相当于使用match_parent。...(); } }); } (3)ViewTreeObserver 使用ViewTreeObserver的众多回调可以完成这个功能,比如使用OnGlobalLayoutListener接口,当...Handler,没必要 view有post系列方法 4.View中如果有线程或动画,需要及时停止,参考View#onDetachedFromWindow 5.View带有滑动嵌套情形时,需要处理好滑动冲突
前几天看网友有仿这个 效果,觉得不错,现在分享出来,代码可以再优化,这里的播放器使用的是B站的ijkplayer,先上两张动图。 ? 当图片到达底部后,左右拖动 ?...; mFollowView = getChildAt(1); mDragHeight = getMeasuredHeight() - mFlexView.getMeasuredHeight...ViewDragHelper 的回调需要做的事情比较多,在 mFlexView 拖动的时候需要同时设置 mFlexView 和 mFollowView 的相应变化效果,在 mFlexView 释放的时候需要处理关闭或收起等效果...mVerticalDragEnable) { // 不允许垂直拖动的时候是mFlexView在底部水平拖动一定距离时设置的,返回mDragHeight就不能再垂直做拖动了...paddingTop : 0) + lp.topMargin + multiHeight; int bottom = child.getMeasuredHeight() + top
这个是最重要的 true 设置colorPrimary/colorPrimaryVariant来改变颜色 4、返回父...name="Theme.HelloWorld" parent="Theme.MaterialComponents.DayNight.DarkActionBar.Bridge"> 6、view在系统没测量时,...获取宽高 View view=.......; view.measure(0,0); height=view.getMeasuredHeight();//得到view的高度,但是不包括margin的值。...view.measure(0,0); h+=view.getMeasuredHeight(); } listView.getLayoutParams().height=h; 7、设置复选框按钮的颜色...); 9、在layout.xml中复用其他的layout文件 使用标签
前言 在自定义View的过程中,使用getMeasuredWidth() / getMeasuredHeight() 与 getWidth() / getHeight()都能获取View的宽 / 高,但是二者有什么区别呢...()返回值 1.1 结论 返回的值是 View在Measure过程中测量的宽 / 高 1.2 源码分析 由于getMeasuredWidth()与getMeasuredHeight()同理,下面只讲解getMeasuredWidth...使用提供的默认大小 = 参数Size case MeasureSpec.UNSPECIFIED: result = size;...break; // 模式为AT_MOST,EXACTLY时,使用View测量后的宽/高值 = measureSpec中的...View的宽/高值 return result; } 2. getWidth() / getHeight()返回值 2.1 结论 返回的值是 View在Layout
事件时防止多点拖拽。...当触发MOVE事件时,我们记录下拖拽的距离并且处理事件冲突。...MotionEvent.ACTION_POINTER_DOWN: case MotionEvent.ACTION_POINTER_UP: // 多一只手指按下或抬起时舍弃将要到来的第一个事件...(0, topView.getMeasuredHeight() + (int) mMoveLen, mViewWidth, topView.getMeasuredHeight....getMeasuredHeight() - sv .getMeasuredHeight()) && mCurrentViewIndex == 0)
他的核心只有一个,即当子View的宽度超出自身最大宽度时,自动换行。...// 当前的左边距离 int top = 0; // 当前的上边距离 int totalHeight = 0; // WRAP_CONTENT时控件总高度...int totalWidth = 0; // WRAP_CONTENT时控件总宽度 for (int i = 0; i < count; i++) { View...top += params.topMargin + child.getMeasuredHeight() + params.bottomMargin; // 每个TextView...如何使用: for (index in list.indices){ val layout=LayoutInflater.from(context).inflate(R.layout.item_text_card
具体使用 继承自View、SurfaceView 或 其他View;不包含子View 具体流程 ?...---- 3.2 ViewGroup的layout过程 应用场景 利用现有的组件根据特定的布局方式来组成新的组件 具体使用 继承自ViewGroup 或 各种Layout;含有子 View...在自定义ViewGroup时必须复写onLayout()!!!!! * c....遍历子View for (int i = 0; i < count; i++) { final View child = getVirtualChildAt(i)...遍历子View:循环所有子View // 注:本例中其实只有一个 for (int i=0; i<getChildCount(); i++) {
具体使用 继承自View、SurfaceView 或 其他View;不包含子View 具体流程 下面我将一个个方法进行详细分析 源码分析 layout过程的入口 = layout(),具体如下...总结 单一View的layout过程解析如下: 3.2 ViewGroup的layout过程 应用场景 利用现有的组件根据特定的布局方式来组成新的组件 具体使用 继承自ViewGroup 或 各种...在自定义ViewGroup时必须复写onLayout()!!!!! * c....遍历子View:循环所有子View for (int i=0; i<getChildCount(); i++) { View child = getChildAt(i);...遍历子View:循环所有子View // 注:本例中其实只有一个 for (int i=0; i<getChildCount(); i++) { View child
接下来进行判断,如果specMode等于AT_MOST或EXACTLY就返回specSize,这也是系统默认的行为。...需要注意的是,在setMeasuredDimension()方法调用之后,我们才能使用getMeasuredWidth()和getMeasuredHeight()来获取视图测量出的宽高,以此之前调用这两个方法得到的值都会是...{ View childView = getChildAt(0); childView.layout(0, 0, childView.getMeasuredWidth(), childView.getMeasuredHeight...观察SimpleLayout中onLayout()方法的代码,这里给子视图的layout()方法传入的四个参数分别是0、0、childView.getMeasuredWidth()和childView.getMeasuredHeight...childView.layout(0, 0, 200, 200); } } 这样getWidth()方法得到的值就是200 - 0 = 200,不会再和getMeasuredWidth()的值相同了
//如果View没有设置背景,那么返回android:minWidth这个属性的值,这个值可以为0 //如果View设置了背景,那么返回android:minWidth和背景最小宽度两者中的最大值。...控制显示在屏幕上的样子(自定义viewgroup时不需要这个) /* * backgroundBitmap 要绘制的图片 * left 图片的左边界 * top 图片的上边界 * paint 绘制图片要使用的画笔...方法执行完,就可以用它获取到宽高,在自定义view内使用view.measure(0,0)方法可以主动通知系统去测量,然后就可以直接使用它获取宽高。...比如接触到按钮时,x,y是相对于该按钮左上点的相对位置。而rawx,rawy始终是相对于屏幕的位置。 2.move的时候计算偏移量,并用scrollTo()或scrollBy()方法移动view。...三种滑动的方法 使用scrollTo()或scrollBy() 动画 实时改变layoutparams,重新布局 如果让view在一段时间内移动到某个位置(不是快速滑动,弹性)方法: a.使用自定义动画