本文带大家来实现ListView的圆弧形的分布排列,原理很简单,就是根据ListView的每个Item的高度来对每一个item进行偏移。

首先自定义一个LinearLayout,这是ListView的每个Item的根布局,用来对每个item进行偏移的。

下面上代码:

public class MatrixLinearLayout extends LinearLayout {
private int h = 0;
private float fullTrans = 40f;
public MatrixView(Context context, AttributeSet attrs) {
super(context, attrs);
}

public void setParentHeight(int height) {<pre name="code" class="java"> //传入ListView的高度
h = height;
}

@Override
protected void dispatchDraw(Canvas canvas) {
canvas.save();
int top = getTop();
float trans = calculatetrans(top,h);
Matrix m = canvas.getMatrix();
m.preTranslate(-2 / getWidth(), -2 / getHeight());
m.postTranslate(trans, 0);
canvas.concat(m);
super.dispatchDraw(canvas);
canvas.restore();
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
private float calculatetrans(int top,int h){
float result = 0f;
if(top <= h/2.349f){
result = (h/2f-top)/(h/7f)*fullTrans;
}else if(top > h/2.349f){
result = (top-h/3f)/(h/7f)*fullTrans;
}
return result;
}
}

下面大家可以自己写个demo测试一下啦,就是写一个ListView,然后用上面自定义的MatrixLinearLayout 作为ListView的item的根布局,自己动手丰衣足食! 


更多相关文章

  1. Android中使用HorizontalScrollView横向滑动布局
  2. 尝试查看所有XML文件的图形布局时出现StackOverFlowError
  3. 实现微信布局的四种方式(一)
  4. 无法将视图添加到相对布局
  5. findViewById()返回布局XML中自定义组件的null,而不是其他组件
  6. Android 自定义控件高度设置onMeasure方法
  7. Android自定义View-----上下拖动布局--SlideContentLayout
  8. 图形布局和实际设备上的布局不同
  9. Android 软键盘弹出时把原来布局顶上去的解决方法

随机推荐

  1. Android ListView 长按列表弹出菜单
  2. Android实现富文本编辑
  3. 判断android网络连接
  4. [Android Studio]使用AS开发Android
  5. android studio 模拟器出现中文乱码解决
  6. Android遇到 android studio "Internal H
  7. Android 2.2 Platform
  8. 在编译Android时,开机不锁屏
  9. android 短信是否发送成功
  10. Android   收集索引贴