您好我正在创建一个相机应用程序,我的第一个活动类似于Snapchat。
我已经按照Android相机开发教程(https://developer.android.com/guide/topics/media/camera.html)。
但不幸的是,它没有涵盖我想要的特定类型的按钮(像按钮这样的按钮)。
我想拥有像Snapchat这样的按钮。
这是我当前的视图xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<FrameLayout
android:id="@+id/camera_preview"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1" >
<Button
android:id="@+id/button_capture"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|center_vertical|center_horizontal"
android:text="capture" />
</FrameLayout>
</LinearLayout>
我的主要活动java:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Remove title bar
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
// Remove notification bar
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_main);
// Create an instance of Camera
mCamera = getCameraInstance(getApplicationContext());
// Create our Preview view and set it as the content of our activity.
mPreview = new CameraPreview(this, mCamera);
FrameLayout preview = (FrameLayout) findViewById(R.id.camera_preview);
preview.addView(mPreview);
// Add a listener to the Capture button
Button captureButton = (Button) findViewById(R.id.button_capture);
captureButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// get an image from the camera
mCamera.takePicture(null, null, mPicture);
}
});
}
我认为问题源于渲染xml布局后,教程添加
preview.addView(mPreview);
在布局上,我相信相机预览是在按钮上绘制的。
我只想到两个解决方案。
一个是在preview.addView(mPreview)之后以编程方式添加一个按钮;线。或者,如果有一些z-index我可以在按钮的xml代码上设置?
Snapchat按钮是图像按钮?我想我的整体问题是我如何创建像Snapchat app这样的按钮。
感谢您的时间。
答案 0 :(得分:1)
以编程方式将TMethod = procedure of object;
添加到captureButton
,方法与将FrameLayout
添加到布局的方式相同。
mPreview
FrameLayout的外观顺序非常重要,因为您无法手动设置视图的z-index。 z-index根据外观顺序自动设置。要添加到// Add mPreview to the layout first
// so we can build on top of it
FrameLayout preview = (FrameLayout) findViewById(R.id.camera_preview);
preview.addView(mPreview);
// Then captureButton will go on top of mPreview
Button captureButton = new Button(this);
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
FrameLayout.LayoutParams.WRAP_CONTENT,
FrameLayout.LayoutParams.WRAP_CONTENT,
Gravity.CENTER_VERTICAL | Gravity.RIGHT
);
captureButton.setLayoutParams(params);
preview.addView(captureButton);
的第一个视图将是底层(FrameLayout
)。连续的图层将构建在它之前的视图之上。
至于使按钮半透明,我建议创建一个drawable并执行类似
的操作mPreview