我在對話框中顯示VideoView,並且附加了媒體控件。對話框中的Android媒體控制器
但是當我嘗試點擊媒體控件(播放,搜索欄等)時,對話框被取消。
媒體控制按鈕不會被輕敲,而是將輕敲寄存器作爲外接觸到對話框。
任何人都可以幫助我嗎?
什麼其實我是想實現如下:
1)顯示在彈出的視頻背景模糊的圖像。 2)檢測VideoView外的任何水龍頭,並彈出「取消??」消息給用戶。
我在對話框中顯示VideoView,並且附加了媒體控件。對話框中的Android媒體控制器
但是當我嘗試點擊媒體控件(播放,搜索欄等)時,對話框被取消。
媒體控制按鈕不會被輕敲,而是將輕敲寄存器作爲外接觸到對話框。
任何人都可以幫助我嗎?
什麼其實我是想實現如下:
1)顯示在彈出的視頻背景模糊的圖像。 2)檢測VideoView外的任何水龍頭,並彈出「取消??」消息給用戶。
我發現了一種不同的方式來實現我想要的。
我置於videoview在一個單獨的活性,並設置爲主題中表現爲
機器人活性:主題=「@風格/ Theme.Transparent」
和增加了以下在res /值/ styles.xml
<style name="Theme.Transparent" parent="android:Theme">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@color/transparent1</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
<item name="android:backgroundDimEnabled">true</item>
</style>
下一I overrided所述的onTouchEvent功能如下:
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
int[] l = new int[2];
v.getLocationInWindow(l);
int x = l[0];
int y = l[1];
int w = v.getWidth();
int h = v.getHeight();
if ((int) event.getX() > x && (int) event.getX() < (x + w)
&& (int) event.getY() > y && (int) event.getY() < (y + h)) {
// touch is inside the videoview
} else {
// touch is outside the videoview
}
break;
case MotionEvent.ACTION_MOVE:
break;
case MotionEvent.ACTION_UP:
break;
}
return false;
}
其中「v」是videoview。
佈局看對話框這樣,
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<VideoView
android:id="@+id/videoview"
android:layout_width="640dp"
android:layout_height="400dp"
android:layout_centerInParent="true" >
</VideoView>
<FrameLayout
android:id="@+id/videoViewWrapper"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true" >
</FrameLayout>
</RelativeLayout>
在Dilalog Frgament使videoview的情況下,
mVideoView = (VideoView) view.findViewById(R.id.videoview);
下一組視頻從本地或URI播放使用視頻網址,在那之後,使用setOnPreparedListener監聽器並設置媒體控制器,
mVideoView.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
// TODO Auto-generated method stub
mp.setOnVideoSizeChangedListener(new OnVideoSizeChangedListener() {
@Override
public void onVideoSizeChanged(MediaPlayer mp,
int width, int height) {
/*
* add media controller
*/
mc = new MediaController(MainActivity.this);
mVideoView.setMediaController(mc);
/*
* and set its position on screen
*/
mc.setAnchorView(mVideoView);
((ViewGroup) mc.getParent()).removeView(mc);
((FrameLayout) findViewById(R.id.videoViewWrapper))
.addView(mc);
mc.setVisibility(View.VISIBLE);
}
});
mVideoView.start();
}
});