Android App: 使用DrawerLayout 和 NavigationView 实现侧边栏菜单
package com.hsjdow.gancm;
import android.os.Bundle;
import android.view.View;
import android.view.Menu;
import com.google.android.material.snackbar.Snackbar;
import com.google.android.material.navigation.NavigationView;
import androidx.navigation.NavController;
import androidx.navigation.Navigation;
import androidx.navigation.ui.AppBarConfiguration;
import androidx.navigation.ui.NavigationUI;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.appcompat.app.AppCompatActivity;
import android.widget.EditText;
import com.hsjdow.gancm.databinding.ActivityMainBinding;
import com.hsjdow.gancm.ui.home.HomeFragment;
import android.app.DatePickerDialog;
import android.content.DialogInterface;
public class MainActivity extends AppCompatActivity {
private AppBarConfiguration mAppBarConfiguration;
private ActivityMainBinding binding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
setSupportActionBar(binding.appBarMain.toolbar);
binding.appBarMain.fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, '不知加什么.ing', Snackbar.LENGTH_LONG)
.setAction('Action', null).show();
}
});
DrawerLayout drawer = binding.drawerLayout;
NavigationView navigationView = binding.navView;
// Passing each menu ID as a set of Ids because each
// menu should be considered as top level destinations.
mAppBarConfiguration = new AppBarConfiguration.Builder(
R.id.nav_home, R.id.nav_gallery, R.id.nav_slideshow)
.setOpenableLayout(drawer)
.build();
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_content_main);
NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration);
NavigationUI.setupWithNavController(navigationView, navController);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onSupportNavigateUp() {
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_content_main);
return NavigationUI.navigateUp(navController, mAppBarConfiguration)
|| super.onSupportNavigateUp();
}
public void dow_imgone(View view) {
EditText editText = findViewById(R.id.edit_text);
String inputText = editText.getText().toString();
Snackbar.make(view, '输入框内容: ' + inputText, Snackbar.LENGTH_LONG)
.setAction('Action', null).show();
}
}
// 使用md3 弹窗申请存储权限内容:要在MainActivity的onCreate方法中添加申请存储权限的代码,可以使用AlertDialog或者PermissionUtils库来实现。
// 使用AlertDialog实现:
```java
import android.Manifest;
import android.content.DialogInterface;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
public class MainActivity extends AppCompatActivity {
private static final int PERMISSION_REQUEST_CODE = 123;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Check storage permission
if (!checkStoragePermission()) {
requestStoragePermission();
}
}
// Check if storage permission is granted
private boolean checkStoragePermission() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
int result = ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE);
return result == PackageManager.PERMISSION_GRANTED;
} else {
return true;
}
}
// Request storage permission
private void requestStoragePermission() {
if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
new AlertDialog.Builder(this)
.setTitle('Permission Required')
.setMessage('This app needs storage permission to function properly.')
.setPositiveButton('OK', new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, PERMISSION_REQUEST_CODE);
}
})
.setNegativeButton('Cancel', new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
})
.create()
.show();
} else {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, PERMISSION_REQUEST_CODE);
}
}
// Handle permission request result
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == PERMISSION_REQUEST_CODE) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// Permission granted
Toast.makeText(this, 'Storage permission granted', Toast.LENGTH_SHORT).show();
} else {
// Permission denied
Toast.makeText(this, 'Storage permission denied', Toast.LENGTH_SHORT).show();
}
}
}
public void dow_imgone(View view) {
EditText editText = findViewById(R.id.edit_text);
String inputText = editText.getText().toString();
Snackbar.make(view, '输入框内容: ' + inputText, Snackbar.LENGTH_LONG)
.setAction('Action', null).show();
}
}
// 使用PermissionUtils库实现:
import android.Manifest;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import com.hjq.permissions.OnPermission;
import com.hjq.permissions.Permission;
import com.hjq.permissions.XXPermissions;
import com.google.android.material.snackbar.Snackbar;
import java.util.List;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Request storage permission
XXPermissions.with(this)
.permission(Permission.WRITE_EXTERNAL_STORAGE)
.request(new OnPermission() {
@Override
public void hasPermission(List<String> granted, boolean all) {
if (all) {
// All permissions granted
Toast.makeText(MainActivity.this, 'Storage permission granted', Toast.LENGTH_SHORT).show();
} else {
// Some permissions denied
Toast.makeText(MainActivity.this, 'Some permissions denied', Toast.LENGTH_SHORT).show();
}
}
@Override
public void noPermission(List<String> denied, boolean never) {
if (never) {
// Some permissions denied and never ask again
Toast.makeText(MainActivity.this, 'Some permissions denied and never ask again', Toast.LENGTH_SHORT).show();
} else {
// Some permissions denied
Toast.makeText(MainActivity.this, 'Some permissions denied', Toast.LENGTH_SHORT).show();
}
}
});
}
public void dow_imgone(View view) {
EditText editText = findViewById(R.id.edit_text);
String inputText = editText.getText().toString();
Snackbar.make(view, '输入框内容: ' + inputText, Snackbar.LENGTH_LONG)
.setAction('Action', null).show();
}
}
请注意,使用PermissionUtils库需要添加以下依赖项:
implementation 'com.hjq:xxpermissions:10.0'
原文地址: https://www.cveoy.top/t/topic/iDVN 著作权归作者所有。请勿转载和采集!