Android圆弧形ListView的实现
本文带大家来实现ListView的圆弧形的分布排列,原理非常easy,就是依据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的根布局,自己动手丰衣足食!
Android圆弧形ListView的实现的更多相关文章
- Android 中关于ListView分割线的设置
今天发现许多App上的listview的item之间的分割线都只显示了右边一部分,而左边的那一半则没有,第一反应则是给分割线设置一张背景图片就ok了: android:divider="@m ...
- Android—自定义控件实现ListView下拉刷新
这篇博客为大家介绍一个android常见的功能——ListView下拉刷新(参考自他人博客,网址忘记了,阅读他的代码自己理解注释的,希望能帮助到大家): 首先下拉未松手时候手机显示这样的界面: 下面的 ...
- Android开发学习——ListView+BaseAdapter的使用
ListView 就是用来显示一行一行的条目的MVC结构 * M:model模型层,要显示的数据 ----people集合 * V:view视图层,用户看到的界面 ...
- Android 如何在 ListView 中更新 ProgressBar 进度
=======================ListView原理============================== Android 的 ListView 的原理打个简单的比喻就是: 演员演 ...
- [Android Pro] android控件ListView顶部或者底部也显示分割线
reference to : http://blog.csdn.net/lovexieyuan520/article/details/50846569 在默认的Android控件ListView在 ...
- android studio中ListView与SQLite的结合使用
Da.java public class Db extends SQLiteOpenHelper { public Db(Context context) { super(context, " ...
- Android学习笔记——ListView
该工程的功能是实现在一个activity中显示一个列表 以下代码是MainActivity.java中的代码 package com.example.listview; import java.uti ...
- Android课程---关于ListView列表视图的学习
activity_ui3.xml <?xml version="1.0" encoding="utf-8"?> <ListView xmlns ...
- Android UI组件----ListView列表控件详解
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3 ...
随机推荐
- phpcms 列表页中,如何调用其下的所有子栏目(或特定的子栏目)?
{pc:get sql="select * from phpcms_category where catid in(你的子栏目ID)" return="data" ...
- Swift - 内存泄露原因(循环强引用)及解决办法
Swift使用自动引用计数(ARC)来管理应用程序的内存使用.在大多是情况下,并不需要考虑内存的管理.当实例不再需要的时候,ARC会自动释放这些实例所使用的内存. 但ARC并不是绝对安全的.下面两种情 ...
- Windows 7中怎样找到真正的Administrator账户
出于安全因素方面的考虑,默认情况下 Windows 7 的系统管理员 Administrator 账户处于禁用状态.需要使用时,开启它其实也很简单,并不需要复杂的操作. 方法一:从系统管理中启用Adm ...
- Cocos2dx中Plugin-X 在android下的整合
直接拉plugin-x中的jar包导入到Eclipse中就可以.用这么麻烦的工具干嘛.
- Swift - 高级运算符介绍
除了基本运算符之外,Swift还支持位运算和位移运算,包括: 1,按位取反运算:操作符是 ~ 2,按位与运算:操作符是 & 3,按位或运算:操作符是 | 4,按位异或运算:操作符是 ^ 5 ...
- 超炫的Button按钮展开弧形动画效果
----------------------收藏备用 ------------------------------- 代码下载:http://download.csdn.net/detail/qq2 ...
- JavaScript权威指南科20章 client记忆
20 client记忆 client几种形式存储的: web记忆 cookie IE userData 离线应用 web数据库 文件系统api 20.1 localStorage 和 sessionS ...
- Swift - 页控件(UIPageControl)的用法
使用页控件可以用来展示多个桌面.比如很多应用第一次登陆时,会在开始页面使用页控件来介绍功能,通过左右滑动来切换页. 通常我们使用UIPageControl和UIScrollView相互结合来实现多页切 ...
- C 编程最佳实践(书写风格)
简介本文是为了满足开发人员的需要而写的.我们总结了一套指南,无论作为开发人员还是顾问,这些指南多年来一直都很好地指导着我们,我们把它们作为建议提供给您,希望对您的工作有所帮助.您也许不赞同其中的某些指 ...
- WPF入门介绍
Windows Vista已经于2007年1月30正式发行零售版本,安装Vista的计算机将会大量出现.在Vista时代,身为编程员,就一定要具备Vista桌面应用开发的能力.而开发Vista桌面应用 ...