2011年6月21日火曜日

youtubeっぽくseek中は動画を止めたかった その2

やっぱり自前で作らずに止めたかったので、childviewからむりやりseekbarを抜き出して止めることにした。
 private void findSeekBar(ViewGroup vg){
  for(int i=0; i < vg.getChildCount(); i++){
   View v = vg.getChildAt(i);
   if(v instanceof SeekBar){
    sb = (SeekBar)v;
   } else if (v instanceof ViewGroup) {
    findSeekBar((ViewGroup)v);
   }
  }
}
でみつけて、
seekBar.setOnTouchListener(new OnTouchListener() {
   @Override
   public boolean onTouch(View v, MotionEvent event) {
    if(myListener!=null)myListener.onDragStart();
    dragging = true;
    return false;
   }
});
ドラッグの終了判定は前回のまま。

ただ、OSのソースが変わるとだめになるからどうなんだろう。

2011年6月13日月曜日

youtubeっぽくseek中は動画を止めたかった

MediaControllerの個別のパーツはprivateで作ってあるので、いじるなという事かなと。
それならばどうすれば・・・
きっとどこかで横取り出来るのだろうと思って調べたら、
それらしいのがあったので試してみた。
            @Override 
            public boolean dispatchTouchEvent(MotionEvent ev) { 
                 super.dispatchTouchEvent(ev);
                 if(ev.getAction() == MotionEvent.ACTION_DOWN){
                     video.pause();
                 } else if(ev.getAction() == MotionEvent.ACTION_UP){
                     video.start();
                 }
                 return onTouchEvent(ev);
            } 
このソースだと、view全体に対してeventを拾うので、関係ない所でタッチしてもハンドリングしてしまうので、駄目。
どうやら自作する方が早いみたいだなという結論に。

2011年6月4日土曜日

video viewの配置

video viewを継承してmy viewを作ったらレイアウトが崩れた。
はまったけど、実は、これだけでOKだった。

TableRow row = (TableRow)findViewById(R.id.video_row);
row.setGravity(Gravity.CENTER);

table layoutの中に入れていたのがハマった原因。