[android]スライドUIを実装する
![]()
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
- android
- GravSynth
- IdeaPod
- tips
- UI
- activity
- air
- AIR本 Hello Air World
- andtroid
- Apple Store
- arduino
- AudioRecord
- bluetooth
- Funnel
- Gainer
- intent
- iphone
- ipod touch
- LED
- Lydian Chromatic Concept
- mapview
- mediarecorder
- Pen
- permission
- private trainer
- recoroid
- SD
- TelephonyManager
- TimePickerDialog
- YUREX
- アプリ
- ウェブで一発当てる方法
- ハッカソン
- マイク
- リリース
- ロクナナ
- ワークショップ
- 音楽
- 楽器
- 自己紹介
- 自己紹介
- 書籍
- 青山ブックセンター
- 閃考会議室
- 店舗
- 明和電機
- 録音


![_level0 [Flash Developers Blog]](/img/bnr_level0.gif)


コメントを投稿する