Если вы хотите переместить ваше представление по всему экрану, это возможно. Предполагая, что это действительно ваше требование, вот что вы могли бы сделать. Сделайте вид дочерним от Relative Layout. Каждый раз, когда вы хотите переместить представление, получите RelativeLayout.LayoutParams дочернего представления, измените соответствующие поля и установите его как LayoutParam дочернего представления.
Если вы делаете это для SurfaceView (необходимого для воспроизведения видео), вы получаете обратный вызов surfaceChanged при каждом изменении поля.
Вот пример кода, который я сделал для действия CameraPreview API Demos, который делает то же самое. SurfaceView перемещается слева направо. Надеюсь, это поможет.
С уважением,
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);
}
}