具有反弹效果的水平列表视图

时间:2013-04-26 03:08:00

标签: android horizontallist

还有其他方法可以在Android中实现水平ListView,并在到达列表末尾后具有弹跳/反冲效果吗? 我用了这个HorizontalListView。 然后,因为我也在我的ListView(垂直)中实现弹跳效果..我使用了这个:

 public class BounceListView extends ListView
 {
     private static final int MAX_Y_OVERSCROLL_DISTANCE = 100;

     private Context mContext;
    private int mMaxYOverscrollDistance;

    public BounceListView(Context context) 
    {
        super(context);
        mContext = context;
        initBounceListView();
    }

    public BounceListView(Context context, AttributeSet attrs) 
    {
        super(context, attrs);
        mContext = context;
        initBounceListView();
    }

    public BounceListView(Context context, AttributeSet attrs, int defStyle) 
    {
        super(context, attrs, defStyle);
        mContext = context;
        initBounceListView();
    }

    private void initBounceListView()
    {
        //get the density of the screen and do some maths with it on the max overscroll distance
        //variable so that you get similar behaviors no matter what the screen size

        final DisplayMetrics metrics = mContext.getResources().getDisplayMetrics();
            final float density = metrics.density;

        mMaxYOverscrollDistance = (int) (density * MAX_Y_OVERSCROLL_DISTANCE);
    }

    @Override
    protected boolean overScrollBy(int deltaX, int deltaY, int scrollX, int scrollY, int scrollRangeX, int scrollRangeY, int maxOverScrollX, int maxOverScrollY, boolean isTouchEvent) 
    { 
        //This is where the magic happens, we have replaced the incoming maxOverScrollY with our own custom variable mMaxYOverscrollDistance; 
        return super.overScrollBy(deltaX, deltaY, scrollX, scrollY, scrollRangeX, scrollRangeY, maxOverScrollX, mMaxYOverscrollDistance, isTouchEvent);  
    }

 }

所以,我认为是因为这个类用于实现反冲/反弹效果,为什么不为我的Horizo​​ntalListView修改这个...所以我创建了一个类似于此的类但是将它扩展为Horizo​​ntalListView然后更改而不是{{ 1}}到y。但它没有用。还有一件事,x未在AdapterView中定义(因为Horizo​​ntalListVIew扩展到此。) 有没有办法实现反弹水平列表?或者是否有可能有帮助的开源库? 非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

有一个简单的库rotate-layout,允许将ListView旋转到水平方向(-90度)。所有触摸事件都可以。此外,你必须将每个项目转为+90度,但它也很简单。将ListView置于水平方向后,您可以避免使用HorizontalListView