「这是我参与11月更文挑战的第14天,活动详情查看:2021最后一次更文挑战」
调用摄像头拍照并显示图片
添加一个Activity
CameraActivity
package com.example.uicomponenttest;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.provider.MediaStore;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
public class CameraActivity extends AppCompatActivity {
private final int CAMERA_RESULT=10;
private Button button_camera;
private ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_camera);
initView();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
Log.d("getImage","YES");
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode){
case CAMERA_RESULT:
if(resultCode==RESULT_OK){
Bitmap bitmap =(Bitmap)data.getExtras().get("data");
imageView.setImageBitmap(bitmap);
}
break;
}
}
protected void initView(){
imageView=findViewById(R.id.camera);
button_camera=findViewById(R.id.use_camera);
button_camera.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent =new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
Log.d("getImage","YES");
startActivityForResult(intent,CAMERA_RESULT);
}
});
}
}
activity_camera.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".CameraActivity"
android:orientation="vertical">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/use_camera"
android:text="启用摄像头"/>
<ImageView
android:layout_width="300dp"
android:layout_height="300dp"
android:layout_gravity="center"
android:layout_marginTop="10dp"
android:id="@+id/camera"/>
</LinearLayout>
注
最好先在Oncreate 中写initView() 否则代码量一大很容易忘.(先把逻辑搭好,再去实现细节)
实现一个注册界面并且将输入的信息输出.
RegisterActivity
package com.example.uicomponenttest;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.material.chip.ChipGroup;
public class RegisterActivity extends AppCompatActivity implements View.OnClickListener {
private Button submit,cancel;
private EditText name,age,phone,address;
private RadioGroup radioGroup;
private CheckBox pe,music,literature,travel;
private TextView tot_text;
String gender;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
initView();
}
private void initView() {
submit=findViewById(R.id.submit);
cancel=findViewById(R.id.cancel);
submit.setOnClickListener(this);
cancel.setOnClickListener(this);
name=findViewById(R.id.et_name);
age=findViewById(R.id.et_age);
radioGroup=findViewById(R.id.rg_gender);
phone=findViewById(R.id.et_phone);
address=findViewById(R.id.et_address);
pe=findViewById(R.id.pe);
music=findViewById(R.id.music);
literature=findViewById(R.id.literature);
travel=findViewById(R.id.travel);
tot_text=findViewById(R.id.tot_text);
CompoundButton.OnCheckedChangeListener checkedChangeListener=new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
switch (buttonView.getId()){
case R.id.pe:
if(isChecked){
Toast.makeText(RegisterActivity.this,"体育",Toast.LENGTH_SHORT).show();
}
break;
case R.id.music:
if(isChecked){
Toast.makeText(RegisterActivity.this,"音乐",Toast.LENGTH_SHORT).show();
}
break;
case R.id.literature:
if(isChecked){
Toast.makeText(RegisterActivity.this,"文学",Toast.LENGTH_SHORT).show();
}
break;
case R.id.travel:
if(isChecked){
Toast.makeText(RegisterActivity.this,"旅行",Toast.LENGTH_SHORT).show();
}
break;
}
}
};
pe.setOnCheckedChangeListener(checkedChangeListener);
music.setOnCheckedChangeListener(checkedChangeListener);
literature.setOnCheckedChangeListener(checkedChangeListener);
music.setOnCheckedChangeListener(checkedChangeListener);
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
RadioButton radioButton =findViewById(checkedId);
gender=radioButton.getText().toString();
}
});
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.submit:
StringBuilder hobby=new StringBuilder();
if(pe.isChecked()){
hobby.append(pe.getText().toString().trim()+" ");
}
if(music.isChecked()){
hobby.append(music.getText().toString().trim()+" ");
}
if(literature.isChecked()){
hobby.append(literature.getText().toString().trim()+" ");
}
if(travel.isChecked()){
hobby.append(travel.getText().toString().trim()+" ");
}
StringBuilder information=new StringBuilder();
information.append(name.getText().toString().trim()+"\n");
information.append(age.getText().toString().trim()+"\n");
information.append(phone.getText().toString().trim()+"\n");
information.append(address.getText().toString().trim()+"\n");
tot_text.setText(information+gender+"\n"+hobby);
break;
case R.id.cancel:
break;
}
}
}
activity_register.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".RegisterActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:id="@+id/first_line"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/ra_name"
android:text="姓名: "
/>
<EditText
android:layout_width="0dp"
android:layout_weight="0.3"
android:layout_height="wrap_content"
android:id="@+id/et_name"
android:maxLines="1"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="年龄"/>
<EditText
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.3"
android:maxLines="1"
android:id="@+id/et_age"
android:inputType="number"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="电话:"
/>
<EditText
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.3"
android:id="@+id/et_phone"
android:maxLines="1"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="住址"
/>
<EditText
android:layout_width="0dp"
android:layout_height="wrap_content"
android:maxLines="1"
android:id="@+id/et_address"
android:layout_weight="0.3"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:orientation="horizontal"
android:gravity="center"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="性别: "
/>
<RadioGroup
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/rg_gender"
android:orientation="horizontal">
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/rg_gender_male"
android:text="男"/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/rg_gender_female"
android:text="女"/>
</RadioGroup>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="爱好"/>
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="体育"
android:id="@+id/pe"/>
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="音乐"
android:id="@+id/music"/>
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="文学"
android:id="@+id/literature"/>
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="旅行"
android:id="@+id/travel"/>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:layout_gravity="center_horizontal"
>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="提交"
android:layout_marginRight="10dp"
android:id="@+id/submit"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/cancel"
android:text="取消"/>
</LinearLayout>
<TextView
android:layout_width="match_parent"
android:id="@+id/tot_text"
android:layout_height="match_parent"/>
</LinearLayout>