相关的文件如下:
相比于任务2、3,多了一个自定义属性,既然如此那我就添加一个属性,控制是否可以拖动交换。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="test">
<attr name="canDragSwap" format="boolean" />
</declare-styleable>
</resources>
主要来说就是新增了一个attr,整体代码就不放了。
private void init(Context context, AttributeSet attrs) {
mTouchSlop = ViewConfiguration.get(getContext()).getScaledPagingTouchSlop();
// 实现的'try'-with-resources真鸡肋,不用就报黄,用了还有性能开销。
TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.HW1Layout_attrs);
canDrag = ta.getBoolean(R.styleable.HW1Layout_attrs_canDragSwap, true);
ta.recycle();
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
if (!canDrag) return false;
return isDragging;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (!canDrag) return false;
...
}