Android圆弧形ListView的实现

本文带大家来实现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的根布局,自己动手丰衣足食!

Android圆弧形ListView的实现

时间: 2024-10-04 15:35:07

Android圆弧形ListView的实现的相关文章

Android 监听ListView、GridView滑动到底部

// 监听listview滚到最底部mIndexList.setOnScrollListener(new OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { switch (scrollState) { // 当不滚动时 case OnScrollListener.SCROLL_STATE_IDLE: // 判断滚动到底部 if (view.get

[android]完美解决ListView加载网络图片乱跳问题

为什么 先说一下为什么会出现图片乱跳. 使用convertView对ListView的每个item优化,item的复用可以有效降低内存的占用,使ListView滑动更为流畅.但会带来一个问题,当最顶部的item滑出屏幕时,会变成下一个从底部将要滑进来的item.每次滑进来的item都要去请求网络获得图片. 第一个item滑出去时,是带着图片的.其ImageView指向了一块内存.当其慢慢滑出,从底部慢慢滑进时,底部的item与顶部(只有一半在屏幕里能看到了)的还是指向 同一块内存.加载的了同一张

Android——ViewPager+Fragment+ListView之间

Android--ViewPager+Fragment+ListView之间 <span style="font-size:18px;">package com.example.jreduch05; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.view.ViewPager; import android.support.v7.app.A

android笔记:ListView及ArrayAdapter

ListView用于展示大量数据,而数据无法直接传递给ListView,需要借助适配器adapter来完成. ArrayAdapter是最常用的adapter,可以通过泛型来指定要适配的数据类型. ArrayAdapter的参数如下: android.widget.ArrayAdapter.ArrayAdapter<String>(Context context, int textViewResourceId, String[] objects) 构造函数的参数解析如下: Context co

Android—自定义控件实现ListView下拉刷新

这篇博客为大家介绍一个android常见的功能——ListView下拉刷新(参考自他人博客,网址忘记了,阅读他的代码自己理解注释的,希望能帮助到大家): 首先下拉未松手时候手机显示这样的界面: 下面的代码是自定的扎样的控件: package com.dhsr.smartID.view; import android.content.Context; import android.util.AttributeSet; import android.view.Gravity; import andr

【Android UI】ListView系列二(自定义Adapter订阅新闻栏目)

目标:自定义适配器Adapter实现点击每个item订阅按钮 上一篇介绍了listview的基本属性以及ArrayAdapter和SimpleAdapter的简单实用,链接:listview使用方式基础篇. 今天主要介绍一下自定义adapter,来实现稍微复杂点的功能,今天实现的效果是:类似于listiew展示许多可供订阅的栏目,每个栏目最右端有订阅按钮,用户点击订阅可以订阅该栏目,再次点击可取消订阅,效果图如下,下面我们一步步来实现. 1. 定义主布局文件activity_main.xml 主

【Android】自定义listview快速滚动条

http://blog.csdn.net/xyang81/article/details/17680333 在eoe上看到有个贴子通过反射,动态修改FastScroller对象的mThumbDrawable属性来改变快速滑动块的图标,这也不为于一种实现方式,但反射的效率较低.下面将介绍使用Style的方式来自定义图标. 从FastScroller类的init方法中可以得知,mThumbDrawable是通过获取当前Activity主题的android.R.attr.fastScrollThumb

Android UI学习 - ListView (android.R.layout.simple_list_item_1是个什么东西)

Android UI学习 - ListView 2010-06-20 18:21:35 标签:Android UI 移动开发 ListView ListActivity 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://android.blog.51cto.com/268543/336162 ListActivity ListActivity是一个专门显示ListView的Activity类,它内置了ListView对象,只要我

一起学android之设置ListView数据显示的动画效果(24)

效果图: 平时我们要实现ListView数据显示时的动画效果,可以使用LayoutAnimationController为ListView设置动画效果,并通过ListView的setLayoutAnimation方法来设置,最后startLayoutAnimation,启动动画.参看以下代码: public class MainActivity extends Activity { private ListView lv_arrayadapter; private String[] str_na