Android 菜单的使用
有时间就随笔记录自己遇到的问题和所学的知识哈。
这是对本牛崽知识的提升也可以给其他牛牛们来点鸡汤和开胃菜。
菜单Menu的创建
首先menu是属于布局的嘛,所以嘞,咱们得在res(也就是布局资源)创建一个menu资源文件,然后在menu里头创建main.xml,不用担心找不到xml,如果Android Studio没问题一般都是自动提示你。
创建好了就可以开始用菜单了,菜单大家应该都见过,就比如扣扣界面的右上角的+,就是个菜单。
为啥要出现菜单?你想想,有那么多功能,手机屏幕本来就小,所以我们得把一些不是很核心的界面放到一个角落包起来,要用的时候点开找到就可以跳过去设置了。(纯属本人理解哈,有错纠错别打脸,无错就幸免了)。
开始代码环节
本牛崽这次的随笔内容就是在上次那个界面的基础上写的,毕竟是个合成的过程,又不是java算法程序。效果就是图中:(后面两张是点击add,remove产生的哦)
闲话不说上结构
首先MainActivity是不能少的,第一个图片就是它,然后操作菜单也是在MainActivity里。主要牵扯到:
public boolean onCreateOptionsMenu(Menu menu)
public boolean onOptionsItemSelected(@NonNull MenuItem item)
一个是创建选择按钮,一个是跳转选择,字面意思应该看得出来的。
创建代码就是:
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main,menu);
return true;
}
通过 getMenuInflater()方法能够得到 MenuInflater 对象,再调用它的 inflate()方法 就可以给当前活动创建菜单了。inflate()方法接收两个参数,
第一个参数用于指定我们通过哪 一个资源文件来创建菜单,这里当然传入 R.menu.main。第二个参数用于指定我们的菜单项将 添加到哪一个Menu对象当中,
这里直接使用onCreateOptionsMenu()方法中传入的menu参数。 然后给这个方法返回 true,表示允许创建的菜单显示出来,如果返回了 false,创建的菜单将
无法显示。
书中原话,意思就是用来调用并创建方法我估计是为了给跳转选择提供参数的,因为跳转选择中有switch供选择(本牛崽第一次学,自己的见解,不喜勿喷);
接着贴onOptionsItemSelected
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()){
case R.id.add1:
Toast.makeText(this,"add",Toast.LENGTH_LONG).show();
Intent i=new Intent(MainActivity.this,Main3Activity.class);
Toast.makeText(MainActivity.this,"你已进入add",Toast.LENGTH_LONG).show();
startActivity(i);
break;
case R.id.remove1:
Toast.makeText(this,"remove",Toast.LENGTH_LONG).show();
Intent in=new Intent(MainActivity.this,Main2Activity.class);
Toast.makeText(MainActivity.this,"你已进入remove",Toast.LENGTH_LONG).show();
startActivity(in);
break;
default:break;
}
return true;
}
我呢,创建了其他两个活动,给他们add,remove使用,item.getItemId()就是判断你点击的是哪个按钮,那个add1是我的名字,这个得去main.xml里面拖,
都是xml,main肯定也是布局文件,所以我是直接拖的;
我就直接拖了两个菜单选项进去,然后改名字。add1是id名字,本窗口的名字还是Add和Remove哈!
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:title="Add"
android:id="@+id/add1"/>
<item android:title="Remove"
android:id="@+id/remove1"/>
</menu>
补充下,带+就是新建一个id,不带+就是改写。
这就是今天上午学的啦,有时间就随笔下,巩固自己也可能造福他人,让更多的牛崽崽变大牛吧!奥利给。
顺便在这补充下:关于监听器,跳跃网站的方法,一些和我一样水平的牛崽崽可能已经学过了,但是为了巩固自己的知识,本牛崽打算再说一遍:
ImageView iv=findViewById(R.id.iv1);
iv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i=new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse("https://www.luogu.com.cn"));
startActivity(i);
}
});
技术可能不到家,就创了个图片按钮,点一下就跳转到洛谷去了,嘿嘿。
具体的主要是Intent.ACTION_VIEW,其他的还有很多,
iv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i=new Intent(Intent.ACTION_DIAL);
i.setData(Uri.parse("tel:1008611"));
startActivity(i);
}
});
各位,打个1008611话费流量直通车压压惊吧!
效果如图:
点一下我的那个皮卡丘,就跳过来了哈
虚拟机嘛,肯定打不通的嘛,所以我就准备连接上自己的手机,来一波操作,欣赏下安卓的魅力啦!
我这边是小米的手机,反正连接手机很简单,先找到MIUI的版本信息,长按就可以开启开发者选项,找到开发者选项(我直接让小爱同学开,哈哈)
把USB的调试都打开就好啦,然后插入数据线就会自动更换模拟器(废话,真手机来了还要你模拟器干嘛,果断踢开。。。)
然后本牛崽就开始啦:
不用我出手,自己踢开了。
奥,本牛崽是电信的卡,打移动肯定不行啦,小姐姐好无情:
您好,请您使用移动手机电话拨打,谢谢使用,再见
0:06闪了两下就挂了。
好了,补充 的一些隐式Intent就说完了,我觉得很有趣,希望各位和我一个水平或者比我差那么一点点火候的牛崽崽们好好学哈。
最好是培养兴趣,兴趣是最好的老师,首先想对一个东西感兴趣就得对它好奇,
对人也是一样,如果想让异性对你感兴趣,就创造机会和能力让 她/他 对你产生好奇吧!