android - एंड्रॉइड स्केलिंग वीडियो समर्थन करता है?




video android-videoview (5)

एक वीडियो व्यू का उपयोग करना एंड्रॉइड के लिए स्केल फैक्टर सेट करना संभव है? डिफ़ॉल्ट रूप से वीडियो दृश्य वीडियो के एन्कोडेड रिज़ॉल्यूशन को फिट करने के लिए स्वयं का आकार बदलता है। क्या मैं एक वीडियो को एक छोटे या बड़े आय में प्रस्तुत करने के लिए एंड्रॉइड को मजबूर कर सकता हूं?


डिफ़ॉल्ट रूप से वीडियो दृश्य वीडियो के एन्कोडेड रिज़ॉल्यूशन को फिट करने के लिए स्वयं का आकार बदलता है।

VideoView (या MediaPlayer साथ उपयोग के लिए SurfaceView ) वह आकार होगा जो आप इसे अपने लेआउट में बताएंगे। उस स्थान के भीतर , वीडियो पहलू अनुपात को बनाए रखते हुए जितना संभव हो सके उतना बड़ा खेलेंगे।

क्या मैं एक वीडियो को एक छोटे या बड़े आय में प्रस्तुत करने के लिए एंड्रॉइड को मजबूर कर सकता हूं?

हां: अपना VideoView इच्छित आकार VideoView , और एंड्रॉइड VideoView के आकार को फिट करने के लिए VideoView


(मुझे पता है कि यह बहुत पुराना सवाल है, लेकिन आयामों को नियंत्रित करने का एक और तरीका है, जिसे यहां वर्णित नहीं किया गया है, शायद किसी को यह उपयोगी लगेगा।)

अपने लेआउट में अपनी खुद की MyVideoView क्लास घोषित करें और अपना खुद का माप () विधि लिखें। यहां मूल दृश्य के आयामों तक फैले वीडियो को चलाने का तरीका बताया गया है:


public class MyVideoView extends VideoView {
 @Override
 protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
  int width = getDefaultSize(0, widthMeasureSpec);
  int height = getDefaultSize(0, heightMeasureSpec);

  setMeasuredDimension(width, height);
 }
}

मुझे लगता है कि जब एक रिलेवेटिवआउट के अंदर एक वीडियो व्यू रखा जाता है, तो वीडियो वीडियोव्यू की निर्दिष्ट ऊंचाई और चौड़ाई (वीडियो पहलू अनुपात के बावजूद) फिट करने के लिए ऊंचाई और चौड़ाई दोनों को फैलाता है। हालांकि, जब मैं फ़्रेमलेआउट में वीडियो व्यू डालता हूं, तब तक वीडियो ऊंचाई और चौड़ाई तक फैलाता है जब तक कि यह वीडियो व्यू की निर्दिष्ट ऊंचाई या चौड़ाई से मेल नहीं खाता (यानी यह पहलू अनुपात को तोड़ता नहीं है)। अजीब, मुझे पता है, लेकिन मुझे यही मिला!


मैं इसे हासिल करने की भी कोशिश कर रहा हूं और अब तक यह ठीक काम करता है। विचार वीडियो दृश्य के लिए setLayoutParams का उपयोग करना और आकार निर्दिष्ट करना है। यह सिर्फ एक साधारण टुकड़ा है लेकिन यह विचार देता है। लेआउटपार्म लाइनों की जांच करें।

VideoView mVideoView = new VideoView(this);

//intermediate code

mVideoView.setVideoPath("/sdcard/VIDEO0007.3gp");
MediaController mController = new MediaController(this);
mVideoView.setMediaController(mController);
mController.setOnTouchListener(new View.OnTouchListener() {

public boolean onTouch(View v, MotionEvent event) {
    int width = mVideoView.getMeasuredWidth();
    int height = mVideoView.getMeasuredHeight();
    //we add 10 pixels to the current size of the video view every time you touch     
    //the media controller.
    LayoutParams params = new LinearLayout.LayoutParams(width+10, height+10);
    mVideoView.setLayoutParams(params);

    return true;
}
});

mVideoView.requestFocus();
mVideoView.start();

FeelGoods जवाब करने के लिए।

लेआउट () विधि के बिना " सेंटरक्रॉप" स्केल प्रकार बेहतर है, लेकिन वीडियो व्यू फ़्रेमलेआउट में होना चाहिए।

@Override
public void layout(int l, int t, int r, int b) {
    super.layout(l + leftAdjustment, t + topAdjustment, r + leftAdjustment, b + topAdjustment);
}




android-videoview