2015-08-16 39 views
0

我想VideoView的頂部(覆蓋)上顯示TextView,它不會發生。我有一個FrameLayout內的兩個元素,在VideoView下面有TextView位置。根據我的理解,這應該放在首位。TextView不覆蓋在FrameLayout裏面的VideoView

我嘗試了以編程方式添加TextView並刪除VideoView的其他功能的各種方法,例如onTouchListener()。

有沒有人有任何建議如何解決這個問題或重疊視圖的解釋可以幫助我解決這個問題?任何幫助將不勝感激。下面我已經發布代碼:

activity_splash.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context="com.androidtitan.hotspots.Activity.SplashActivity"> 

<VideoView 
    android:id="@+id/splashVideo" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 

<TextView android:id="@+id/splashTitle" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="center_horizontal" 
    android:layout_marginTop="25dp" 
    android:text="placeholder text" 
    android:textSize="60dp" 
    android:textStyle="bold" 
    android:textColor="@android:color/black"/> 

SplashActivity.java

package com.androidtitan.hotspots.Activity; 

import android.app.Activity; 
import android.content.Intent; 
import android.media.MediaPlayer; 
import android.net.Uri; 
import android.os.Bundle; 
import android.util.DisplayMetrics; 
import android.util.Log; 
import android.view.MotionEvent; 
import android.view.View; 
import android.widget.FrameLayout; 
import android.widget.TextView; 
import android.widget.VideoView; 

import com.androidtitan.hotspots.R; 

public class SplashActivity extends Activity { 
private static final String TAG = "hotspots"; 

TextView titleTextView; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_splash); 

    titleTextView = (TextView) findViewById(R.id.splashTitle); 

    try{ 
     splashScreen(); 

    } catch (Exception e) { 
     //todo: we could display a picture here as an alternative 
     Log.e(TAG, String.valueOf(e)); 
    } 

    //this returns 
    if(titleTextView.isShown()) { 
     Log.e(TAG, "titleTextView.isShown()"); 
    } 
    else { 
     Log.e(TAG, "NOT SHOWN"); 
    } 



} 

@Override 
public boolean onTouchEvent(MotionEvent ev) { 
    return false; 
} 

public void splashScreen() { 
    VideoView videoHolder = new VideoView(this); 
    setContentView(videoHolder); 
    Uri video = Uri.parse("android.resource://" + getPackageName() + "/" 
      + R.raw.splash); 
    videoHolder.setVideoURI(video); 
    videoHolder.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
     public void onCompletion(MediaPlayer mp) { 
      jumpMain(); //jump to the next Activity 
     } 
    }); 


    DisplayMetrics metrics = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(metrics); 
    videoHolder.setLayoutParams(new FrameLayout.LayoutParams(metrics.widthPixels, metrics.heightPixels)); 

    videoHolder.start(); 

    videoHolder.setOnTouchListener(new View.OnTouchListener() { 

     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      ((VideoView) v).stopPlayback(); 
      jumpMain(); 
      return true; 
     } 
    }); 
} 

private synchronized void jumpMain() { 
    Intent intent = new Intent(SplashActivity.this, ChampionActivity.class); 
    startActivity(intent); 
    finish(); 
} 

}

回答

0

您正在創建一個新的VideoView,而不是使用一個在您的XML佈局中,並調用setContentView來替換XML首先加載新視頻視圖的佈局。這就是它失敗的原因。不要撥打setContentView兩次並更改您的代碼,如下所示

public void splashScreen() { 
    VideoView videoHolder = (VideoView) findViewById(R.id.splashVideo); 

    Uri video = Uri.parse("android.resource://" + getPackageName() + "/" 
     + R.raw.splash); 
    videoHolder.setVideoURI(video); 
    videoHolder.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
     public void onCompletion(MediaPlayer mp) { 
      jumpMain(); //jump to the next Activity 
     } 
    }); 


    DisplayMetrics metrics = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(metrics); 
    videoHolder.setLayoutParams(new FrameLayout.LayoutParams(metrics.widthPixels, metrics.heightPixels)); 

    videoHolder.start(); 

    videoHolder.setOnTouchListener(new View.OnTouchListener() { 

     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      ((VideoView) v).stopPlayback(); 
      jumpMain(); 
     return true; 
     } 
    }); 
} 
+0

This worked 100%Thank you! – androidtitan

相關問題