本文實例為大家分享了Android ListView下拉頂部圖片變大的具體代碼,供大家參考,具體內容如下
在git上查看牛人的代碼,發現是反編譯別人的代碼,還沒加注釋,代碼也沒有完全編譯完整,所以這里我做的簡單的注釋,僅供學習。
變量說明
這里變量包含了:自定義返回動畫加速度、自定義動畫線程、頭部圖片view,最后的y坐標,做好的比例,做大的比例等。
private static final String TAG = "PullToZoomListView"; private static final int INVALID_VALUE = -1;//重置值 //自定義加速度動畫 private static final Interpolator sInterpolator = new Interpolator() { public float getInterpolation(float interpolator) { float f = interpolator - 1.0F; return 1.0F + f * (f * (f * (f * f))); } }; private int mActivePointerId = INVALID_VALUE;//當前手指的Id private FrameLayout mHeaderContainer;//頭部 private int mHeaderHeight;//頭部圖片的高度 private ImageView mHeaderImage;//頭部圖片 float mLastMotionY = INVALID_VALUE;//最后y坐標 float mLastScale = INVALID_VALUE;//最后的比例 float mMaxScale = INVALID_VALUE;//最大的比例 private OnScrollListener mOnScrollListener;//滑動監聽 private ScalingRunnalable mScalingRunnalable;//動畫線程 private int mScreenHeight;//屏幕高度 private ImageView mShadow;//陰影遮罩自定義View初始化:設置了頭部的頭部和遮罩并且設置了監聽。
/** * 初始化 * @param paramContext */ private void init(Context paramContext) { DisplayMetrics metrics = new DisplayMetrics(); ((Activity) paramContext).getWindowManager().getDefaultDisplay().getMetrics(metrics); this.mScreenHeight = metrics.heightPixels;//屏幕高度賦值 this.mHeaderContainer = new FrameLayout(paramContext);//頭部 this.mHeaderImage = new ImageView(paramContext);//頭部圖片 int screenWidth = metrics.widthPixels;//屏幕寬度 //設置頭部View的樣式 設置屏幕寬度,最大樣式高度為屏幕高度的9/16 setHeaderViewSize(screenWidth, (int) (9.0F * (screenWidth / 16.0F))); this.mShadow = new ImageView(paramContext);//遮罩 FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); layoutParams.gravity = Gravity.CENTER; this.mShadow.setLayoutParams(layoutParams);//設置遮罩樣式 //頭部添加View this.mHeaderContainer.addView(this.mHeaderImage); this.mHeaderContainer.addView(this.mShadow); //添加頭部 addHeaderView(this.mHeaderContainer); //初始化返回動畫 this.mScalingRunnalable = new ScalingRunnalable(); //設置監聽 super.setOnScrollListener(this); }開啟動畫:判斷當前的頭部布局底部的位置 主站蜘蛛池模板: 高清| 衡南县| 宁明县| 伊宁市| 屏东市| 蒙阴县| 固安县| 仁布县| 新河县| 滕州市| 东港市| 察雅县| 奎屯市| 施秉县| 遂平县| 南安市| 彩票| 万山特区| 怀来县| 九龙坡区| 高要市| 昔阳县| 聂荣县| 桦甸市| 大英县| 夏津县| 祁东县| 宁远县| 斗六市| 海门市| 喜德县| 会泽县| 都匀市| 长顺县| 淅川县| 巴林左旗| SHOW| 聊城市| 彭山县| 礼泉县| 靖宇县|