ปรับขนาด VideoView

ฉันกำลังพยายามกำหนดขนาดของ Android VideoView แบบไดนามิก ฉันได้ดู StackOverflow และอินเทอร์เน็ตแล้ว และวิธีแก้ปัญหาที่ดีที่สุดที่ฉันพบคือจาก ที่นี่ ฉันได้วางการใช้งานไว้ด้านล่าง:

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...");
    }
}

ปรับขนาดวิดีโอได้อย่างถูกต้องบนโปรแกรมจำลอง Android และ Motorola Droid X แต่ใน Motorola Droid นั้น VideoView จะปรับขนาด แต่วิดีโอที่เล่นใน VideoView จะไม่ปรับขนาด บน Motorola Droid หากตั้งค่า VideoView ให้มีมิติที่ใหญ่กว่าการเล่นวิดีโอ พื้นหลังสีดำจะปรากฏใน VideoView โดยมีวิดีโอเล่นอยู่ที่มุมซ้ายบนของ VideoView ที่ด้านบนของพื้นหลังสีดำ

เราจะปรับขนาด VideoView อย่างถูกต้องใน Android ได้อย่างไร

ขอบคุณแวนซ์


person Vance-Turner    schedule 14.06.2012    source แหล่งที่มา


คำตอบ (1)


การใช้งานของฉันทำงานดังนี้:

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 ใหม่ (และมิติข้อมูลใหม่)

person Ceetn    schedule 02.10.2012
comment
ฉันทดสอบมัน แต่มันครอบตัดวิดีโอแทนที่จะปรับขนาด! คุณมีความคิดบ้างไหม? - person boomz; 14.04.2013
comment
@boomz ในที่สุดฉันก็สร้างการใช้งานเมื่อฤดูร้อนที่แล้ว ดูที่ VideoPlayer จากโครงการ App Inventor (โค้ดการปรับขนาดเมื่อฤดูร้อนที่แล้วคืองานของฉัน) - person Vance-Turner; 07.06.2013