在运行时平移视频

问题描述:

我想让视图在屏幕上移动。那可能吗?在运行时平移视频

换句话说,我想要平移是可能的,我认为这与视图有关。

如何做平移视频预览?

如果你想在整个屏幕上移动你的视图,它的可能性。假设这确实是你的要求,这是你可以做的。使视图成为相对布局的孩子。每次你想移动视图,获取子视图的RelativeLayout.LayoutParams,改变相关边距并将其设置为子视图的LayoutParam。

如果您正在对SurfaceView(需要播放视频)执行此操作,则每次更改边距时都会发生surfaceChanged回调。

下面是我为API Demos的CameraPreview活动做了相同的调整示例代码。 SurfaceView从左向右移动。希望这可以帮助。

Regards, Anirudh。

public class CameraPreview extends Activity { 
protected static final String TAG = "CameraPreview"; 
private Preview mPreview; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    // Hide the window title. 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 

    // Create our Preview view and set it as the content of our activity. 
    mPreview = new Preview(this); 
    mPreview.setId(100); 
    RelativeLayout mainLayout = new RelativeLayout(this); 
    RelativeLayout.LayoutParams mainLp = new RelativeLayout.LayoutParams(640, 480); 
    mainLp.leftMargin = 20; 

    mainLayout.addView(mPreview, mainLp); 

    Button btn = new Button(this); 
    btn.setOnClickListener(new OnClickListener(){ 

     public void onClick(View v) { 
      RelativeLayout.LayoutParams nLp = (LayoutParams) mPreview.getLayoutParams(); 
      nLp.leftMargin += 10; 
      Log.v(TAG,"nLp.leftMargin: " + nLp.leftMargin); 
      mPreview.setLayoutParams(nLp); 
     } 

    }); 
    btn.setText("Click me!"); 

    RelativeLayout.LayoutParams btnLp = new RelativeLayout.LayoutParams(
      RelativeLayout.LayoutParams.WRAP_CONTENT, 
      RelativeLayout.LayoutParams.WRAP_CONTENT); 
    btnLp.addRule(RelativeLayout.BELOW, mPreview.getId()); 

    mainLayout.addView(btn ,btnLp); 
    setContentView(mainLayout); 
} 

}

+0

我无法看到屏幕上的按钮。我完全按照上面的方法进行测试,因为该代码位于onClick()中,所以我无法测试运动,因为该代码位于onClick() – Namratha 2010-07-22 05:52:35

+0

表面视图是否会移至屏幕右侧以维护捕获的图片,或者表面视图的移动是否会切断图片?我想要后者 – Namratha 2010-07-22 07:52:36

+0

您可以减少预览大小。我在相对较大的屏幕设备中检查了这个。你可以用其他方式模拟按钮的动作(onTouch事件,定时器等)。 随着视图移出设备屏幕的范围,您会看到裁剪后的视图。 – aniait 2010-07-22 09:22:03