admin管理员组

文章数量:1630019

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!



既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

public boolean onPrepareOptionsMenu(Menu menu) 选项菜单显示前会调用该方法,可在这里进行菜单的调整(动态加载菜单列表)
public boolean onMenuOpened(int featureId, Menu menu) 选项菜单打开以后会调用这个方法


##### 2.1.2 案例


OptionsMenu.xml





//创建OptionsMenu
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//加载菜单资源
getMenuInflater().inflate(R.menu.optionmenu,menu);
return super.onCreateOptionsMenu(menu);
}

//OptionsMenu菜单项的选中方法
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()){
case R.id.save:
Toast.makeText(this,“保存”,Toast.LENGTH_SHORT).show();
break;
case R.id.setting:
Toast.makeText(this,“设置”,Toast.LENGTH_SHORT).show();
break;
case R.id.help:
Toast.makeText(this,“帮助”,Toast.LENGTH_SHORT).show();
break;
case R.id.exit:
finish();
break;
}
return super.onOptionsItemSelected(item);
}


#### 2.2 ContextMenu(上下文菜单)


长按某个view不放,就会在屏幕中间弹出ContextMenu。



public class MainActivity extends AppCompatActivity {
private Button btn;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

btn = findViewById(R.id.btn);
//1. 注册
registerForContextMenu(btn);
//2. 创建 覆盖onCreateContextMenu()方法
//3. 菜单项的操作 覆盖onContextItemSelected()方法
}

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
getMenuInflater().inflate(R.menu.contextmenu,menu);
super.onCreateContextMenu(menu, v, menuInfo);
}
//菜单项的操作
@Override
public boolean onContextItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()){
case R.id.add:
Toast.makeText(this,“添加”,Toast.LENGTH_SHORT).show();
break;
case R.id.delete:
Toast.makeText(this,“删除”,Toast.LENGTH_SHORT).show();
break;
}
return super.onContextItemSelected(item);
}


#### 2.3 PopupMenu(弹出式菜单)


在指定View下显示一个弹出菜单,而且他的菜单选项可以来自于Menu资源



Button btn2 = findViewById(R.id.btn2);
btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//1.实例化PopupMenu对象 (参数2:被锚定的view)
PopupMenu popupMenu = new PopupMenu(MainActivity.this, btn2);
//2.加载菜单资源:利用MenuInflater将Menu资源加载到PopupMenu.getMenu()所返回的Menu对象中
//将R.menu.xx对于的菜单资源加载到弹出式菜单中
popupMenu.getMenuInflater().inflate(R.menu.popupmenu,popupMenu.getMenu());
//3.为PopupMenu设置点击监听器
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()){
case R.id.copy:
Toast.makeText(MainActivity.this,“复制”,Toast.LENGTH_SHORT).show();
break;
case R.id.paste:
Toast.makeText(MainActivity.this,“粘贴”,Toast.LENGTH_SHORT).show();
break;
}
return false;
}
});
//4.千万不要忘记这一步,显示PopupMenu
popupMenu.show();
}
});


### 3 Android对话框处理


#### 3.1 提示对话框(AlertDialog)


![](https://img-blog.csdnimg/9e5a4aad4c2d4bd98345fdde2c07ec8e.png#pic_center)



AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(“提示”);//标题
builder.setMessage(“你确认退出程序吗?”);//提示语
builder.setPositiveButton(“确认”, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
builder.setNegativeButton(“取消”,null);
builder.show();//显示
/**

  • builder.show(); 相当于下面两行代码
  • AlertDialog dialog = builder.create();
  • dialog.show();
    */

#### 3.2 自定义对话框


自定义对话框步骤:


![](https://img-blog.csdnimg/99e068048031402e9770bff294b90ea3.png#pic_center)


* 1.设计自定义对话框样式 ——> dialog\_layout.xml



<?xml version="1.0" encoding="utf-8"?>









public class MyDialog extends Dialog {
public MyDialog(@NonNull Context context, int themeResId) {
super(context, themeResId);
//为对话框设置布局
setContentView(R.layout.dialog_layout);
findViewById(R.id.btn_no).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dismiss();
}
});
findViewById(R.id.btn_yes).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
System.exit(0);
}
});
}
}


* 2.设计style(去掉标题栏、背景等)




* 3.将第一步的布局应用到当前自定义对话框



setContentView(R.layout.dialog_layout);//为对话框设置布局


* 4.实例化对话框(参数1:环境上下文,参数2:第二步创建的style),并使用show()展示



MyDialog myDialog = new MyDialog(this,R.style.MyDialog);
myDialog.show();


#### 3.3 PopupWindow(悬浮框,也叫弹窗)


##### 3.3.1PopupWindow的使用步骤


* 1.准备弹窗所需的视图 popup\_layout.xml











View view = LayoutInflater.from(this).inflate(R.layout.popup_layout,null);


* 2.创建PopupWindow对象实例



参数1:用在弹窗中的view
参数2、参数3:弹窗的宽高
参数4:focusable,能否获取焦点
PopupWindow popupWindow = new PopupWindow(view, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT,true);

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!



既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取


[外链图片转存中…(img-GTqrA1Z8-1715632987301)]
[外链图片转存中…(img-DT5B3fSc-1715632987302)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

本文标签: 鸿蒙组件最新字节常用