Android自定義彈性滑動View

2021-08-18 16:10:54 字數 2228 閱讀 7349

1.記錄一下自己自定義view

2.直接子view只能是乙個

public class slideview extends viewgroup 

public slideview(context context, @nullable attributeset attrs)

public slideview(context context, @nullable attributeset attrs, int defstyleattr)

private void initview(context context)

@override

public boolean ontouchevent(motionevent event)

@override

protected void onfinishinflate()

mchildview = getchildat(0);

if (mchildview == null)

}@override

public boolean dispatchtouchevent(motionevent event)

break;

}if (canpulldown() && mscrolly < 0) else if (canpullup() && mscrolly > 0) else

}scrollby(0, mscrolly);//滑動

if (getscrolly() == 0)

lasty = y;

return true;//事件自己消費

case motionevent.action_up:

int scrolly = getscrolly();

mscroller.startscroll(0, scrolly, 0, -scrolly);

invalidate();

break;

}lasty = y;

return super.dispatchtouchevent(event);

}/**

* 滑動的速度

** @return

*/private float scan()

@override

protected void onmeasure(int widthmeasurespec, int heightmeasurespec) else if (widthmode == measurespec.at_most) else if (heightmode == measurespec.at_most) else

}/**

* 得到子view的寬度

** @return

*/private int getchildtotalwidth()

return width;

}/**

* 得到子view的高度

** @return

*/private int getchildtotalheight()

return height;

}@override

public viewgroup.layoutparams generatelayoutparams(attributeset attrs)

@override

protected void onlayout(boolean changed, int l, int t, int r, int b)

}//到底頂部,可以下拉

private boolean canpulldown()

} else if (mchildview instanceof recyclerview)

} else if (mchildview instanceof listview)

} else

return false;

}//到達底部,可以上拉

private boolean canpullup()

} else if (mchildview instanceof recyclerview)

} else if (mchildview instanceof listview)

} else

return false;

}@override

public void computescroll()

}}

3.使用

Android 自定義滑動開關

自定義view寫了這麼多篇幅,通用的屬性部分 測量 忽略不計 真正實現的部分就不到100行 先上效果圖 關閉狀態 開啟狀態 動起來 下面我們看下我們的實現 override protected void ondraw canvas canvas private void drawswichballb...

自定義刻度 Android自定義滑動刻度進度條

做到以上的效果圖,就可以知道,兩個模式,首先,定義相應的自定義屬性,額,沒辦法,上頭要求,所以規範點 新建乙個bar attrs.xml檔案 attr declare styleable resources 然後就是 中取得相應的屬性值和設定預設值 然後修改seekbar的線的顏色和滑動塊的屬性,通...

Android自定義View 彈性的圓

1 動作分解 不做位移運動,單點動作分解 1.1 從a運動到b p2 p3 p4 橫座標的變動 p2 p4縱座標的變動 p8 p9 p10橫座標的變動 p8 p10縱座標的變動 1.2 在b處做彈性運動 先凹進去一部分,再彈出來 p8 p9 p10橫座標的變動 2 圓的平移動畫 做平移動畫,絕對座標...