2012-06-14 13 views
8

मैं गतिशील रूप से एंड्रॉइड वीडियो व्यू के आकार को सेट करने का प्रयास कर रहा हूं। मैंने स्टैक ओवरफ्लो के साथ-साथ इंटरनेट पर भी देखा है; और मैंने पाया सबसे अच्छा समाधान here से था। मैं नीचे मेरी कार्यान्वयन डाल दिया है:वीडियो दृश्य का आकार बदलें

public class ResizableVideoView extends VideoView { 

    public ResizableVideoView(Context c) { 
     super(c); 
    } 

    private int mVideoWidth = 100; 
    private int mVideoHeight = 100; 

    public void changeVideoSize(int width, int height) { 
     mVideoWidth = width;  
     mVideoHeight = height; 

     // not sure whether it is useful or not but safe to do so 
     getHolder().setFixedSize(width, height); 

     forceLayout(); 
     invalidate(); // very important, so that onMeasure will be triggered 
    } 

    public void onMeasure(int specwidth, int specheight) { 
     Log.i("onMeasure","On Measure has been called"); 
     setMeasuredDimension(mVideoWidth, mVideoHeight); 
    } 

    public void onDraw(Canvas c) { 
     super.onDraw(c); 
     Log.i("onDraw","Drawing..."); 
    } 
} 

वीडियो एंड्रॉयड एमुलेटर पर और साथ ही एक मोटोरोला Droid एक्स पर सही ढंग से आकार बदलता है; लेकिन मोटोरोला Droid पर, VideoView का आकार बदलता है लेकिन वीडियो व्यू में चल रहा वीडियो आकार बदलता नहीं है। मोटोरोला Droid पर, यदि वीडियो व्यू वीडियो प्लेइंग की तुलना में बड़े आयाम पर सेट किया गया है, तो वीडियोव्यू में काले रंग की पृष्ठभूमि के शीर्ष वीडियो बाएं कोने में चल रहे वीडियो के साथ वीडियोव्यू में एक काला पृष्ठभूमि दिखाई देती है।

एंड्रॉइड में एक वीडियो व्यू का सही आकार कैसे बदलता है?

धन्यवाद, वेंस

उत्तर

3

मेरे कार्यान्वयन इस तरह काम करता है:

RelativeLayout.LayoutParams videoviewlp = new RelativeLayout.LayoutParams(newwidth, newheight); 
    videoviewlp.addRule(RelativeLayout.CENTER_HORIZONTAL, RelativeLayout.TRUE); 
    videoviewlp.addRule(RelativeLayout.CENTER_VERTICAL, RelativeLayout.TRUE); 
    videoview.setLayoutParams(videoviewlp); 
    videoview.invalidate(); 

videoview अमान्य करके, आप पूरे videoview नई LayoutParams (और नए आयाम) का उपयोग कर पुनः बनाने का यह बाध्य करेगा।

+0

मैं इसका परीक्षण करता हूं। लेकिन यह आकार बदलने के बजाय वीडियो फसल! क्या तुम्हारे पास कोई विचार है? – boomz

+1

@ बुमज़ मैंने अंततः पिछले गर्मियों में एक कार्यान्वयन बनाया। [VideoPlayer] पर एक नज़र डालें (https://github.com/Vance-Turner/appinventor-sources/blob/master/appinventor/components/src/com/google/appinventor/components/runtime/VideoPlayer.java) कक्षा ऐप इनवेंटर प्रोजेक्ट से (पिछले ग्रीष्मकाल के रूप में आकार बदलने वाला कोड मेरा काम था)। –