自定义组合控件之滑动item+删除
来源:互联网 发布:ipad钢琴软件 编辑:程序博客网 时间:2024/06/05 15:51
package com.hqzn.view;import android.content.Context;import android.util.AttributeSet;import android.view.MotionEvent;import android.view.View;import android.widget.FrameLayout;import android.widget.ScrollView;import android.widget.Scroller;import android.widget.TextView;/** * Created by Administrator on 2016/9/27. */public class SidingItem extends FrameLayout{ private View view; private TextView tv; private int viewWidth; private int tvWidth; private int hight; private Scroller scroller; public SidingItem(Context context, AttributeSet attrs) { super(context, attrs); scroller=new Scroller(context); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); viewWidth=view.getMeasuredWidth(); tvWidth=tv.getMeasuredWidth(); hight=getHeight(); } @Override protected void onLayout(boolean b, int i, int i1, int i2, int i3) { tv.layout(0,0,tvWidth,hight); view.layout(tvWidth,0,viewWidth+tvWidth,hight); } @Override protected void onFinishInflate() { super.onFinishInflate(); tv= (TextView) getChildAt(0); view=getChildAt(1); } int lastx; @Override public boolean onTouchEvent(MotionEvent event) { super.onTouchEvent(event); int eventx= (int) event.getRawX(); switch (event.getAction()){ case MotionEvent.ACTION_DOWN: lastx= eventx; break; case MotionEvent.ACTION_MOVE: int disx=eventx-lastx; int toScrollX = getScrollX() - disx; System.out.println(toScrollX);// 屏蔽非法值 if (toScrollX < 0) { toScrollX = 0; }else if(toScrollX > viewWidth){ toScrollX = viewWidth; }// scrollTo(toScrollX, 0);// 也可以 scrollTo(toScrollX, getScrollY());// 重新付值 lastx = eventx; break; case MotionEvent.ACTION_UP: int totallScrollX = getScrollX(); if(totallScrollX < viewWidth/2){ System.out.println("totallScrollX < menuWidth/2"); closeMenu(); }else{ System.out.println("totallScrollX >= menuWidth/2"); openMenu(); } break; } return true; } private void closeMenu() { scroller.startScroll(getScrollX(),getScrollY(),0-getScrollX(),getScrollY()); invalidate();// 会导致 执行 computeScroll } private void openMenu(){ scroller.startScroll(getScrollX(),getScrollY(),viewWidth-getScrollX(),getScrollY()); invalidate();// 会导致 执行 computeScroll } @Override public void computeScroll() { super.computeScroll(); if (scroller.computeScrollOffset()) { scrollTo(scroller.getCurrX(), scroller.getCurrY()); System.out.println("滚动完成"); invalidate();// 强制重绘制 } }}
0 0
- 自定义组合控件之滑动item+删除
- Android开发--自定义控件实现listview的滑动删除item
- Android自定义组合控件下拉刷以及滑动删除
- 自定义控件--滑动删除
- 自定义滑动删除item的ListView。
- 自定义控件之滑动
- 自定义控件之滑动
- 自定义控件之组合控件
- 自定义控件之组合控件
- 自定义控件之组合控件
- Android学习自定义View(四)——继承控件(滑动时ListView的Item出现删除按钮)
- Android自定义控件之自定义组合控件
- Android 自定义控件之自定义组合控件
- Android自定义控件之自定义组合控件
- 自定义控件之滑动开关
- 自定义控件之滑动按钮
- 自定义RecyclerView 支持 横向纵向,滑动删除Item
- 自定义可左滑动删除item的listview
- 8.2.1.2 How MySQL Optimizes WHERE Clauses MySQL 优化WHERE 子句
- angularjs 用serviec做数据校验
- axure 8.0 和 教程
- echarts 入门例子
- echarts 节点添加绑定事件
- 自定义组合控件之滑动item+删除
- 剑指offer--面试题34:丑数
- chrome浏览器CSS字体大小小于12px不起作用解决方法
- Xcode 7以后在使用HTTP时报错解决办法
- 最大流问题——有源汇有上下界的最小流sgu176 Flow construction
- eclipse打包设置apk 图标和名字
- java---集合类---ArrayList类
- swiper 入门
- swiper 分页显示图片