티스토리 뷰
728x90
gplayer.xml
<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <!-- <SurfaceView android:id="@+id/gplayer_surfaceview" android:layout_height="fill_parent" android:layout_width="fill_parent"> </SurfaceView> --> <com.grubin.main.GrubinVideoView android:id="@+id/gplayer_surfaceview" android:layout_width="fill_parent" android:layout_height="fill_parent" > </com.grubin.main.GrubinVideoView> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="top" android:orientation="vertical" > <ImageButton xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/btnBack" style="@style/MediaButton.Back" android:layout_gravity="right" android:layout_margin="20dip" /> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1" android:orientation="vertical" /> <LinearLayout android:id="@+id/layoutController" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" /> </LinearLayout> </FrameLayout>
VideoController.java
package com.grubin.main; import android.content.Context; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.ImageButton; import android.widget.LinearLayout; public class VideoController extends MediaController2 { private Button searchButton; private ImageButton mPushButton; private View.OnClickListener mPushListener; Context _context; private int screenWidth; private int screenHeight; public VideoController(Context context, boolean useFastForward, LinearLayout layout) { super(context, useFastForward, layout); _context = context; } public VideoController(Context context, AttributeSet attrs) { super(context, attrs); _context = context; } public VideoController(Context context, LinearLayout layout) { super(context, layout); _context = context; } public void setScreenSize(int screenWidth, int screenHeight) { this.screenWidth = screenWidth; this.screenHeight = screenHeight; } @Override public void setAnchorView(View view) { super.setAnchorView(view); LinearLayout L1 = (LinearLayout) getChildAt(0); for (int i = 0; i < L1.getChildCount(); i++) { View v = L1.getChildAt(i); if (v instanceof LinearLayout) { LinearLayout buttons = (LinearLayout) v; buttons.addView(makePushButton(L1)); break; } } /** * 0 : 컨트롤러 전체 * 1 : 컨트롤 버튼 * 2 : 탐색 바 */ //this.getc /* LinearLayout layout = (LinearLayout) getChildAt(0); // LinearLayout button = (LinearLayout)layout.getChildAt(1); // LinearLayout seek = (LinearLayout)layout.getChildAt(2); //view.getParent() LayoutInflater inf = (LayoutInflater) _context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); LinearLayout linear = (LinearLayout) inf.inflate(R.layout.gplayer_controller, null); layout.addView(linear, 0); */ } /* @Override public void hide() { } */ /** * Super ugly hack */ public void extend() { LinearLayout L1 = (LinearLayout) getChildAt(0); for (int i = 0; i < L1.getChildCount(); i++) { View v = L1.getChildAt(i); if (v instanceof LinearLayout) { LinearLayout buttons = (LinearLayout) v; buttons.addView(makePushButton(L1)); break; } } } protected View makePushButton(ViewGroup parent) { LayoutInflater inflate = (LayoutInflater) LayoutInflater.from(_context); mPushButton = (ImageButton) inflate.inflate(R.layout.push_button, parent, false); if (mPushListener != null) mPushButton.setOnClickListener(mPushListener); return mPushButton; } public void setPushListener(View.OnClickListener push) { mPushListener = push; if (mPushButton != null) { mPushButton.setOnClickListener(mPushListener); } } }
MainActivity.java
@Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.gplayer); // getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); // surfaceView = (GrubinVideoView) findViewById(R.id.gplayer_surfaceview); surfaceHolder = surfaceView.getHolder(); surfaceHolder.addCallback(this); surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); mediaPlayer = new MediaPlayer(); mediaPlayer.setOnCompletionListener(this); mediaPlayer.setOnErrorListener(this); mediaPlayer.setOnInfoListener(this); mediaPlayer.setOnPreparedListener(this); mediaPlayer.setOnSeekCompleteListener(this); mediaPlayer.setOnVideoSizeChangedListener(this); btnBack = (ImageButton) findViewById(R.id.btnBack); btnBack.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { GPlayer.this.finish(); } }); mediaController = (new VideoController(this, (LinearLayout)findViewById(R.id.layoutController)) { @Override public void hide() { btnBack.setVisibility(View.INVISIBLE); super.hide(); } }); mediaController.setPushListener(new View.OnClickListener() { public void onClick(View v) { GPlayer.this.finish(); } }); Intent intent = getIntent(); playURI = intent.getStringExtra("url"); try { mediaPlayer.setDataSource(playURI); } catch (IllegalArgumentException e) { Log.v(LOGTAG, e.getMessage()); finish(); } catch (IllegalStateException e) { Log.v(LOGTAG, e.getMessage()); finish(); } catch (IOException e) { Log.v(LOGTAG, e.getMessage()); finish(); } currentDisplay = getWindowManager().getDefaultDisplay(); // mediaController.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { GPlayer.this.finish(); } }); } @Override public boolean onTouchEvent(MotionEvent ev) { Log.i("xxx", "onTouchEvent=" + ev.getAction()); if(ev.getAction() == MotionEvent.ACTION_DOWN) { /* Toast.makeText(this, "ev.getX()="+ev.getX() + "/" + btnBack.getLeft(), Toast.LENGTH_SHORT).show(); */ /* Toast.makeText(this, "btnBack.isShown()="+btnBack.isShown(), Toast.LENGTH_SHORT).show(); if (btnBack.isShown()) { // if (btnBack.getVisibility() == View.VISIBLE) { btnBack.setVisibility(View.INVISIBLE); } else { btnBack.setVisibility(View.VISIBLE); } */ if (mediaController.isShowing()) { mediaController.hide(); Log.v(LOGTAG, "mediaController.hide()"); } else { try { btnBack.setVisibility(View.VISIBLE); mediaController.show(10000); } catch (Exception e) { Log.e(LOGTAG,e.toString(),e); } Log.v(LOGTAG, "mediaController.show()"); } } return false; }
댓글
300x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 전예희
- oracle
- koba2010
- SAS
- Delphi
- 동경
- 레이싱모델 익스트림 포토 페스티벌
- JavaScript
- flex
- NDK
- Spring
- KOBA
- ubuntu
- ble
- 서울오토살롱
- Xcode
- Linux
- 튜닝쇼 2008
- 지스타2007
- ffmpeg
- MySQL
- Delphi Tip
- Mac
- sas2009
- android
- 송주경
- BPI-M4
- Java
- Spring MVC
- 일본여행
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함