[android]スライドUIを実装する

hidaka

2009/11/06

TAG
android

 設定画面の量の調整や、下のRECOROIDの通話録音部分のスライドスイッチなど、ドラッグする操作のUIを実装したい場面はよくありますが、デフォルトのものだとどうしようもなくダサい。というわけでスライダの作り方です。

まずはドラッグされるボタン。android:clickableなどはtrueにしておきます。

dgr.setOnTouchListener(new OnTouchListener() {
	@Override
	public boolean onTouch(View v, MotionEvent event) {
		if (event.getAction() == 0) {
			//Drag開始
			draggingFlag=true;
		}
		if (event.getAction() == 1) {
			//Drag終了
			draggingFlag=false;
			backcancel();
		}
		if (event.getAction() == 2) {
			//Move
			if(draggingFlag){
				int x = (int)event.getX();
				int y = (int)event.getY();
				touchXY.set(x, y);
				movepos(touchXY);
			}
		}
		return false;
	}
});

 

 次に位置の実装。スライド量180で巻数を読んで位置は戻るようにしています。
padding量を調整してスライドするよう見せています。

private void movepos(Point touchXY) {
	int newX = baseX + touchXY.x;
	int newY = baseY + touchXY.y ;
	if(newX>180){
		//callfunc();
		newX=newY=0;
		draggingFlag=false;
		dgr.setPadding(0, 0, 0, 0);
	}else{
		dgr.setPadding(newX, 0, 0, 0);
	}
	dgr.invalidate();
}

あとは初期値なんかの設定。最初のほうにやっておきます。

baseX=dgr.getLeft();
baseY=dgr.getTop();

 スイッチの場合は端までスライドした時に位置を強制的に戻して、関数を呼ぶ、値設定の場合は位置移動の際に変更という実装になります。

コメントを投稿する

トラックバック (0)

トラックバックURL: http://kiteretsu.kayac.com/cgi-bin/mt-tb.cgi/48