在运行时平移视频
答
如果你想在整个屏幕上移动你的视图,它的可能性。假设这确实是你的要求,这是你可以做的。使视图成为相对布局的孩子。每次你想移动视图,获取子视图的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);
}
}
我无法看到屏幕上的按钮。我完全按照上面的方法进行测试,因为该代码位于onClick()中,所以我无法测试运动,因为该代码位于onClick() – Namratha 2010-07-22 05:52:35
表面视图是否会移至屏幕右侧以维护捕获的图片,或者表面视图的移动是否会切断图片?我想要后者 – Namratha 2010-07-22 07:52:36
您可以减少预览大小。我在相对较大的屏幕设备中检查了这个。你可以用其他方式模拟按钮的动作(onTouch事件,定时器等)。 随着视图移出设备屏幕的范围,您会看到裁剪后的视图。 – aniait 2010-07-22 09:22:03