Android 折叠头部监听,抽屉式动画
生活随笔
收集整理的這篇文章主要介紹了
Android 折叠头部监听,抽屉式动画
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
實(shí)現(xiàn)方法2:https://blog.csdn.net/meixi_android/article/details/84136375
?
1、自定義scrollview,監(jiān)聽上下滑動距離:
public class ScrollListenerView extends ScrollView {private ScrollListener scrollViewListener = null;public ScrollListenerView(Context context) {super(context);}public ScrollListenerView(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);}public ScrollListenerView(Context context, AttributeSet attrs) {super(context, attrs);}public void setScrollListener(ScrollListener scrollViewListener) {this.scrollViewListener = scrollViewListener;}@Overrideprotected void onScrollChanged(int x, int y, int oldX, int oldY) {super.onScrollChanged(x, y, oldX, oldY);if (scrollViewListener != null) {scrollViewListener.onScrollChanged(this, x, y, oldX, oldY);}} }接口
public interface ScrollListener {void onScrollChanged(ScrollListenerView scrollView, int x, int y, int oldX, int oldY); }2、activity實(shí)現(xiàn)接口
public class FriendDetailFragment extends SubBasicFragment implements ScrollListener { private ScrollListenerView slv; private int dp2_5; private int dp37_5; private int dp54;?
slv.setScrollListener(this); private void initMeasure() {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; } /*** 重設(shè) 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.ScrollListenerViewandroid:id="@+id/slv"android:layout_width="match_parent"android:layout_height="match_parent"android:scrollbars="none"><LinearLayoutandroid:orientation="vertical"android:layout_width="match_parent"android:layout_height="wrap_content">?
開始滑動
總結(jié)
以上是生活随笔為你收集整理的Android 折叠头部监听,抽屉式动画的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 推荐系统中的矩阵分解演变方式
- 下一篇: Android 属性动画ObjectAn