1. 简介
Android应用开发是一个充满挑战和乐趣的过程。对于初学者来说,从零开始构建一个Android应用可能会感到有些困难。本文将为你提供50个实用的Android应用开发实例,帮助你快速入门。
2. 实例1:创建第一个Android应用
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
这是创建第一个Android应用的简单示例。在这个例子中,我们创建了一个名为MainActivity的类,它继承自AppCompatActivity。在onCreate方法中,我们设置了Activity的布局。
3. 实例2:布局文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello, Android!"
android:layout_centerInParent="true" />
</RelativeLayout>
在这个例子中,我们创建了一个布局文件,其中包含一个居中的文本视图。
4. 实例3:按钮点击事件
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "Button Clicked!", Toast.LENGTH_SHORT).show();
}
});
在这个例子中,我们为按钮设置了一个点击事件,当按钮被点击时,会显示一个Toast消息。
5. 实例4:使用Intent跳转Activity
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivity(intent);
在这个例子中,我们使用Intent跳转到了名为SecondActivity的Activity。
6. 实例5:使用SharedPreferences存储数据
SharedPreferences sharedPreferences = getSharedPreferences("MyPrefs", MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("name", "John Doe");
editor.apply();
在这个例子中,我们使用SharedPreferences存储了一个名为”name”的字符串。
7. 实例6:使用SQLite数据库存储数据
public class DBHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "MyDatabase.db";
private static final int DATABASE_VERSION = 1;
public DBHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS users");
onCreate(db);
}
}
在这个例子中,我们创建了一个SQLite数据库,并定义了一个名为users的表。
8. 实例7:使用RecyclerView显示列表数据
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private List<String> mData;
public MyAdapter(List<String> data) {
mData = data;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_view, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.textView.setText(mData.get(position));
}
@Override
public int getItemCount() {
return mData.size();
}
public static class ViewHolder extends RecyclerView.ViewHolder {
public TextView textView;
public ViewHolder(View itemView) {
super(itemView);
textView = itemView.findViewById(R.id.textView);
}
}
}
在这个例子中,我们创建了一个RecyclerView适配器,用于显示列表数据。
9. 实例8:使用Firebase实时数据库
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("message");
myRef.setValue("Hello, World!");
在这个例子中,我们使用Firebase实时数据库存储了一个名为”message”的数据。
10. 实例9:使用Google Maps API显示地图
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(new OnMapReadyCallback() {
@Override
public void onMapReady(GoogleMap googleMap) {
googleMap.addMarker(new MarkerOptions().position(new LatLng(37.7749, -122.4194)).title("San Francisco"));
googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(37.7749, -122.4194), 10));
}
});
在这个例子中,我们使用Google Maps API显示了一个地图,并在地图上添加了一个标记。
11. 实例10:使用Camera2 API拍照
CameraManager cameraManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
String cameraId = cameraManager.getCameraIdList()[0];
try {
CameraCharacteristics characteristics = cameraManager.getCameraCharacteristics(cameraId);
CameraDevice camera = cameraManager.openCamera(cameraId, new CameraDevice.StateCallback() {
@Override
public void onOpened(@NonNull CameraDevice camera) {
// Camera opened, start capturing images
}
@Override
public void onDisconnected(@NonNull CameraDevice camera) {
camera.close();
}
@Override
public void onError(@NonNull CameraDevice camera, int error) {
camera.close();
}
}, null);
} catch (CameraAccessException e) {
e.printStackTrace();
}
在这个例子中,我们使用Camera2 API拍照。
12. 实例11:使用Material Design组件
<androidx.cardview.widget.CardView xmlns:cardview="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="16dp"
cardview:cardCornerRadius="8dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="16dp"
android:text="Card View"
android:textColor="@android:color/white"
android:background="@color/colorPrimary" />
</androidx.cardview.widget.CardView>
在这个例子中,我们使用Material Design组件Card View创建了一个卡片。
13. 实例12:使用RecyclerView滑动删除
ItemTouchHelper.SimpleCallback swipeCallback = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT) {
@Override
public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
return false;
}
@Override
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
// Remove item from list
}
};
new ItemTouchHelper(swipeCallback).attachToRecyclerView(recyclerView);
在这个例子中,我们为RecyclerView添加了滑动删除功能。
14. 实例13:使用Bottom Navigation
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottom_navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="?android:attr/windowBackground"
app:menu="@menu/bottom_menu" />
在这个例子中,我们使用Bottom Navigation创建了一个底部导航栏。
15. 实例14:使用FloatingActionButton
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="16dp"
android:src="@drawable/ic_add"
app:layout_anchor="@id/bottom_navigation"
app:layout_anchorGravity="bottom|end" />
在这个例子中,我们使用FloatingActionButton创建了一个浮动按钮。
16. 实例15:使用Snackbar
Snackbar.make(coordinatorLayout, "Snackbar message", Snackbar.LENGTH_SHORT).show();
在这个例子中,我们使用Snackbar显示了一个消息。
17. 实例16:使用ProgressBar
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true" />
在这个例子中,我们使用ProgressBar显示了一个进度条。
18. 实例17:使用DatePickerDialog
DatePickerDialog datePickerDialog = new DatePickerDialog(
MainActivity.this,
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
// Handle date selection
}
},
year,
month,
day
);
datePickerDialog.show();
在这个例子中,我们使用DatePickerDialog创建了一个日期选择器。
19. 实例18:使用TimePickerDialog
TimePickerDialog timePickerDialog = new TimePickerDialog(
MainActivity.this,
new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hour, int minute) {
// Handle time selection
}
},
hour,
minute,
false
);
timePickerDialog.show();
在这个例子中,我们使用TimePickerDialog创建了一个时间选择器。
20. 实例19:使用RecyclerView滑动删除
ItemTouchHelper.SimpleCallback swipeCallback = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT) {
@Override
public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
return false;
}
@Override
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
// Remove item from list
}
};
new ItemTouchHelper(swipeCallback).attachToRecyclerView(recyclerView);
在这个例子中,我们为RecyclerView添加了滑动删除功能。
21. 实例20:使用Bottom Navigation
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottom_navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="?android:attr/windowBackground"
app:menu="@menu/bottom_menu" />
在这个例子中,我们使用Bottom Navigation创建了一个底部导航栏。
22. 实例21:使用FloatingActionButton
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="16dp"
android:src="@drawable/ic_add"
app:layout_anchor="@id/bottom_navigation"
app:layout_anchorGravity="bottom|end" />
在这个例子中,我们使用FloatingActionButton创建了一个浮动按钮。
23. 实例22:使用Snackbar
Snackbar.make(coordinatorLayout, "Snackbar message", Snackbar.LENGTH_SHORT).show();
在这个例子中,我们使用Snackbar显示了一个消息。
24. 实例23:使用ProgressBar
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true" />
在这个例子中,我们使用ProgressBar显示了一个进度条。
25. 实例24:使用DatePickerDialog
DatePickerDialog datePickerDialog = new DatePickerDialog(
MainActivity.this,
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
// Handle date selection
}
},
year,
month,
day
);
datePickerDialog.show();
在这个例子中,我们使用DatePickerDialog创建了一个日期选择器。
26. 实例25:使用TimePickerDialog
TimePickerDialog timePickerDialog = new TimePickerDialog(
MainActivity.this,
new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hour, int minute) {
// Handle time selection
}
},
hour,
minute,
false
);
timePickerDialog.show();
在这个例子中,我们使用TimePickerDialog创建了一个时间选择器。
27. 实例26:使用RecyclerView滑动删除
ItemTouchHelper.SimpleCallback swipeCallback = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT) {
@Override
public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
return false;
}
@Override
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
// Remove item from list
}
};
new ItemTouchHelper(swipeCallback).attachToRecyclerView(recyclerView);
在这个例子中,我们为RecyclerView添加了滑动删除功能。
28. 实例27:使用Bottom Navigation
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottom_navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="?android:attr/windowBackground"
app:menu="@menu/bottom_menu" />
在这个例子中,我们使用Bottom Navigation创建了一个底部导航栏。
29. 实例28:使用FloatingActionButton
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="16dp"
android:src="@drawable/ic_add"
app:layout_anchor="@id/bottom_navigation"
app:layout_anchorGravity="bottom|end" />
在这个例子中,我们使用FloatingActionButton创建了一个浮动按钮。
30. 实例29:使用Snackbar
Snackbar.make(coordinatorLayout, "Snackbar message", Snackbar.LENGTH_SHORT).show();
在这个例子中,我们使用Snackbar显示了一个消息。
31. 实例30:使用ProgressBar
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true" />
在这个例子中,我们使用ProgressBar显示了一个进度条。
32. 实例31:使用DatePickerDialog
DatePickerDialog datePickerDialog = new DatePickerDialog(
MainActivity.this,
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
// Handle date selection
}
},
year,
month,
day
);
datePickerDialog.show();
在这个例子中,我们使用DatePickerDialog创建了一个日期选择器。
33. 实例32:使用TimePickerDialog
TimePickerDialog timePickerDialog = new TimePickerDialog(
MainActivity.this,
new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hour, int minute) {
// Handle time selection
}
},
hour,
minute,
false
);
timePickerDialog.show();
在这个例子中,我们使用TimePickerDialog创建了一个时间选择器。
34. 实例33:使用RecyclerView滑动删除
ItemTouchHelper.SimpleCallback swipeCallback = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT) {
@Override
public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
return false;
}
@Override
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
// Remove item from list
}
};
new ItemTouchHelper(swipeCallback).attachToRecyclerView(recyclerView);
在这个例子中,我们为RecyclerView添加了滑动删除功能。
35. 实例34:使用Bottom Navigation
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottom_navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="?android:attr/windowBackground"
app:menu="@menu/bottom_menu" />
在这个例子中,我们使用Bottom Navigation创建了一个底部导航栏。
36. 实例35:使用FloatingActionButton
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="16dp"
android:src="@drawable/ic_add"
app:layout_anchor="@id/bottom_navigation"
app:layout_anchorGravity="bottom|end" />
在这个例子中,我们使用FloatingActionButton创建了一个浮动按钮。
37. 实例36:使用Snackbar
Snackbar.make(coordinatorLayout, "Snackbar message", Snackbar.LENGTH_SHORT).show();
在这个例子中,我们使用Snackbar显示了一个消息。
38. 实例37:使用ProgressBar
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true" />
在这个例子中,我们使用ProgressBar显示了一个进度条。
39. 实例38:使用DatePickerDialog
DatePickerDialog datePickerDialog = new DatePickerDialog(
MainActivity.this,
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
// Handle date selection
}
},
year,
month,
day
);
datePickerDialog.show();
在这个例子中,我们使用DatePickerDialog创建了一个日期选择器。
40. 实例39:使用TimePickerDialog
”`java TimePickerDialog timePickerDialog = new TimePickerDialog(
MainActivity.this,
new TimePickerDialog
