Android應用開發—RecyclerView繪製蒙層
版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/voidreturn/article/details/77718470
背景:如何在跨越兩個或兩個以上的item繪製一個view,該view需要跟隨recyclerView的滑動而整體移動。
@Override
public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) {
super.onDrawOver(c, parent, state);
final View child = parent.getChildAt(1);
if (child != null) {
final int left = child.getLeft();
final int right = child.getRight();
final int top = child.getTop();
final int bottom = child.getBottom();
int rightV = (right - left) / 6;
int leftV = (right - rightV) - VAUtils.dip2px(mContext, 225);
int topV = bottom - VAUtils.dip2px(mContext, 16);
int bottomV = topV + VAUtils.dip2px(mContext, 82);
ViewGroup.MarginLayoutParams margin = new ViewGroup.MarginLayoutParams(mImageView.getLayoutParams());
margin.setMargins(leftV, topV, rightV, bottomV);
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(margin);
mImageView.setLayoutParams(layoutParams);
if (!imageClicked) {
mImageView.setVisibility(View.VISIBLE);
}
//畫筆
final Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
//圓心 x 座標
final float x = parent.getWidth() / 2 + left;
////圓心 y 座標
final float y = 100 + top;
//半徑
final float radius = 100;
//漸變著色器 座標隨意設定的
final LinearGradient shader = new LinearGradient(x-50, 0, x+100, 200, Color.RED, Color.YELLOW, Shader.TileMode.REPEAT);
paint.setShader(shader);
//繪製圓
c.drawCircle(x, y, radius, paint);
}
}
@Override
public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) {
super.onDrawOver(c, parent, state);
//畫筆
final Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
//圓心 x 座標
final float x = parent.getWidth() / 2;
////圓心 y 座標
final float y = 100;
//半徑
final float radius = 100;
//漸變著色器 座標隨意設定的
final LinearGradient shader = new LinearGradient(x-50, 0, x+100, 200, Color.RED, Color.YELLOW, Shader.TileMode.REPEAT);
paint.setShader(shader);
//繪製圓
c.drawCircle(x, y, radius, paint);
}
相關文章
- 【Android進階】RecyclerView之繪製流程(三)AndroidView
- Android OpenGL ES 開發(二):繪製圖形Android
- Android TV開發——RecyclerView For TVAndroidView
- RecyclerView 原始碼分析(一) —— 繪製流程解析View原始碼
- MVP實現Android應用層開發原理及過程MVPAndroid
- Android開發 - RecyclerView 類詳解AndroidView
- Android應用開發—TabLayout定製化Tab樣式AndroidTabLayout
- 繪製層次結構圖
- Android繪製優化(一)繪製效能分析Android優化
- Android繪製流程Android
- [Android]多層波紋擴散動畫——自定義View繪製Android動畫View
- 【HTML5】Android應用開發新路線(用HTML5開發Android應用)HTMLAndroid
- android原生開發recyclerview基礎例項AndroidView
- Android應用開發進階Android
- 開發Android系統應用Android
- C/C++ QT QChart 繪製元件應用C++QT元件
- Android View繪製流程AndroidView
- Android Jetpack - Android TV 應用開發教程AndroidJetpack
- 使用Kotlin開發Android應用KotlinAndroid
- Android應用開發常用知識Android
- Android應用開發筆記(一)Android筆記
- Android應用開發架構概述Android架構
- QuartzCode for Mac(動畫開發製作應用)quartzMac動畫
- 在Android上用AChartEngine輕鬆繪製圖表Android
- Android View繪製原理:繪製流程排程、測算等AndroidView
- Android 學習深入之路(應用層)Android
- Xamarin開發教程如何使用Xamarin開發Android應用Android
- 用Servlet開發企業級三層Web應用(一) (轉)ServletWeb
- Infinum:開發iOS應用要比開發Android應用節省約30%時間iOSAndroid
- RecyclerView定製:通用ItemDecoration及全展開RecyclerView的實現View
- Android豎虛線繪製Android
- Android OpenGLES繪製天空盒Android
- Android應用初級開發——Canavas元件圖形應用Android元件
- RecyclerView 原始碼深入解析——繪製流程、快取機制、動畫等View原始碼快取動畫
- 區塊鏈BAAS底層技術開發,區塊鏈BAAS底層應用開發建設區塊鏈
- 快速上手系列--Android應用開發模板Android
- Android應用開發—Intent元件詳解AndroidIntent元件
- 如何用PHP開發Android應用程式PHPAndroid