nSdvWidth = UiUtils.dpToPx(77.5f, mContext.getResources());
nSdvSmallWidth = UiUtils.dpToPx(40f, mContext.getResources());
dp2_5 = UiUtils.dpToPx(2.5f, mContext.getResources());
dp37_5 = UiUtils.dpToPx(37.5f, mContext.getResources());
dp54 = UiUtils.dpToPx(54f, mContext.getResources());
}
@Override
public void onScrollChanged(ScrollListenerView scrollView, int x, int y, int oldX, int oldY) {
animationViews(y);
}
//------------------------- 动画 start ------------------------
private void animationViews(int y) {
int nStart = dp2_5;
int nScaledY = nSdvWidth - y;
if (y > nStart && y < dp37_5) {
vMiddle.setVisibility(View.INVISIBLE);
vRight.setVisibility(View.VISIBLE);
UiUtils.setViewLayoutParams(sdvSurface, nScaledY, nScaledY);
}
if (y <= nStart) {
vMiddle.setVisibility(View.VISIBLE);
vRight.setVisibility(View.GONE);
UiUtils.setViewLayoutParams(sdvSurface, nSdvWidth, nSdvWidth);
setSideViewAlpha(1f);
}
if (y > dp2_5 && y < dp37_5) {
float percent = ((float) (y - dp2_5)) / ((float) (dp37_5 - dp2_5));
tvRightUserName.setTextSize(14f + 3.5f * percent);
setSideViewAlpha(1 - percent - 0.3f);
}
if (y > dp54) {
ivQrCode.setVisibility(View.GONE);
ivUserInfo.setVisibility(View.GONE);
vTop.setVisibility(View.VISIBLE);
vTopBackground.setVisibility(View.VISIBLE);
setViewBackground(R.drawable.selector_bt_back);
} else {
vTop.setVisibility(View.GONE);
vTopBackground.setVisibility(View.GONE);
setViewBackground(0);
}
}
2.2工具方法:
public static int dpToPx(float dp, Resources resources) {
float px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, resources.getDisplayMetrics());
return (int) px;
}
/**
- 重设 view 的宽高
*/
public static void setViewLayoutParams(View view, int nWidth, int nHeight) {
ViewGroup.LayoutParams lp = view.getLayoutParams();
if (lp.height != nHeight || lp.width != nWidth) {
lp.width = nWidth;
lp.height = nHeight;
view.setLayoutParams(lp);
}
}
private void setSideViewAlpha(float alpha) {
ivQrCode.setAlpha(alpha);
ivUserInfo.setAlpha(alpha);
Log.i(“lgq”,“ttt----”+alpha+“…”+ivQrCode.getVisibility());
if (ivQrCode.getVisibility() != View.VISIBLE)
ivQrCode.setVisibility(View.VISIBLE);
if (ivUserInfo.getVisibility() != View.VISIBLE)
ivUserInfo.setVisibility(View.VISIBLE);
}
xml文件
<com.zhenhua.online.view.scrollbylistener.ScrollListenerView
android:id=“@+id/slv”
android:layout_width=“match_parent”
android:layout_height=“match_parent”
android:scrollbars=“none”>
<LinearLayout
android:orientation=“vertical”
android:layout_width=“match_parent”
android:layout_height=“wrap_content”>
总结
现在新技术层出不穷,如果每次出新的技术,我们都深入的研究的话,很容易分散精力。新的技术可能很久之后我们才会在工作中用得上,当学的新技术无法学以致用,很容易被我们遗忘,到最后真的需要使用的时候,又要从头来过(虽然上手会更快)。
我觉得身为技术人,针对新技术应该是持拥抱态度的,入了这一行你就应该知道这是一个活到老学到老的行业,所以面对新技术,不要抵触,拥抱变化就好了。
Flutter 明显是一种全新的技术,而对于这个新技术在发布之初,花一个月的时间学习它,成本确实过高。但是周末花一天时间体验一下它的开发流程,了解一下它的优缺点、能干什么或者不能干什么。这个时间,并不是我们不能接受的。
如果有时间,其实通读一遍 Flutter 的文档,是最全面的一次对 Flutter 的了解过程。但是如果我们只有 8 小时的时间,我希望能关注一些最值得关注的点。
(跨平台开发(Flutter)、java基础与原理,自定义view、NDK、架构设计、性能优化、完整商业项目开发等)
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!