你是否有过这样的经历,当你在手机上看到一段你特别喜欢的文字内容的时候,随之而来的是你下意识的长按,然后出现复制选项,然后粘贴到你的记事本上进入自己的收藏夹。如图所示像这样一个小菜单。
在安卓开发者们的设计下一切看起来都是那么的自然,但是,你可知道,你在屏幕上的每一个自然地点击都是经过人家辛苦设计制作好的。你想知道背后的具体操作吗?亦或许学会如何制作这个长按一段文字就出现复制的神奇操作吗?那就让小编来教你实现这个小菜单吧!
首先打开我们的AndroidStdio切换到安卓视图:
在安卓中对于菜单资源文件通常识放在/res/menu当中,而在资源文件夹res中,这个menu文件我我们需要自己创建。
然后在新建的menu文件目录中新建menu.xml文件用来设置菜单选项具体内容的
在菜单资源文件中我们可以看到根元素通常使用<menu><menu/>标记,而在此标记中包含有多个<item><item/>标记,他们用于定义菜单项。在这里我给大家总结一下
属性 | 描述 |
---|---|
android:id | 用于为菜单项设置id,也是唯一标识 |
android:title | 用于为菜单设置标题 |
android:alphabeticShortcut | 用于为菜单项指定字符快捷键 |
android:numericShortcut | 用于为菜单项指定数字快捷键 |
android:icon | 用于为菜单项指定图标 |
android:enabled | 用于指定该菜单项是否可用 |
android:checkable | 用于指定该菜单项是否可选 |
android:checked | 用于指定该菜单项是否已被选中 |
android:visble | 用于指定该菜单项是否可见 |
然后在res/layout/activity_main下设计好UI布局:
在这里主要设计对第一段文字进行操作:
然后到java目录下的mainactivity类进行动态操作
public class MainActivity extends AppCompatActivity {
TextView introduce;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//第一步:为文本框注册上下文菜单
introduce = (TextView) findViewById(R.id.introduce);//获取介绍TextView组件
registerForContextMenu(introduce);//为文本框注册上下文菜单
}
//第二步操作:重写onCreateContextMenu()方法。创建一个上下文菜单
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
MenuInflater inflater = new MenuInflater(this);//创建一个MenuInflate对象
inflater.inflate(R.menu.menu,menu);//解析菜单文件
}
//第三步:重写onContextItemSelected()方法,指定各个菜单项被选择时,所应做的处理
@Override
public boolean onContextItemSelected(@NonNull MenuItem item) {
//这里使用switch语句进行操作
switch (item.getItemId()){//当选中介绍文字的复制菜单项时
case R.id.menu_open:
Toast.makeText(MainActivity.this, "后台打开", Toast.LENGTH_SHORT).show();
break;
case R.id.menu_window://选中新窗口打开
Toast.makeText(MainActivity.this, "新窗口打开", Toast.LENGTH_SHORT).show();
break;
case R.id.menu_link://选中复制链接菜单项时
Toast.makeText(MainActivity.this, "已复制复制链接", Toast.LENGTH_SHORT).show();
break;
case R.id.menu_copy://选中自由复制项时
Toast.makeText(MainActivity.this, "已复制", Toast.LENGTH_SHORT).show();
break;
}
return true;
}
这样一个小巧的菜单选项就做好了,打开模拟器看看效果:
还是与原图感觉还挺像的,只不过菜单还没有进行微调!好了,小编就分享到这里,希望感兴趣的小伙伴看完我的这边文章后能够自己独立做出一个小菜单。好啦,下期再见!