为应用条增加动作

这篇具有很好参考价值的文章主要介绍了为应用条增加动作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

大多数应用中都可能会为应用条增加动作,动作是应用条中的一些按钮或文本,可以单击它们来做一些事情。
这里为应用条增加一个创建订单的按钮,单击这个按钮时,将会启动一个OrderActivity的新活动。
创建一个新活动名为OrderActivity,其布局名为activity_order。该布局使用和MainActivity中相同的布局。activity_order代码如下:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".OrderActivity">
    
    <include
        layout="@layout/toolbar_main"
        android:id = "@+id/toolbar"
        />

</androidx.constraintlayout.widget.ConstraintLayout>

更新OrderActivity.java

package com.hfad.bitsandpizzas;

import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import android.os.Bundle;

public class OrderActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_order);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
    }
}

为活动的标题在string.xml中增加一个字符串资源

   <string name="create_order">Create Order</string>

增加标签来改变应用条文本
修改AndroidManifest.xml如下:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

    <application
        android:allowBackup="true"
        android:dataExtractionRules="@xml/data_extraction_rules"
        android:fullBackupContent="@xml/backup_rules"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.BitsAndPizzas"
        tools:targetApi="31">

        <activity
            android:name=".OrderActivity"
            android:label="@string/create_order"
            android:exported="false" />
        
        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

其中主要增加了两个android:label标签,其主要告知Android应用条中显示什么文本。

为应用条增加动作的步骤
1、为动作增加图标和文本资源
2、在菜单资源文件中定义动作(这会告诉Android你希望应用条上有哪些动作)
3、让活动将这个菜单资源增加到应用条(为此要实现onCreateOptionsMenu方法)
4、增加代码,指定单击时要完成哪个动作(为此要实现onOptionsItemSelected方法)

一、增加动作的资源
https://dogriffiths.github.io/HeadFirstAndroid/resources/bitsandpizzas.zip
在上面的链接中下载图标,将其添加到AS工程的drawable-hdpi,drawable-mdpi,drawable-xhdpi, drawable-xxxhdpi文件夹中,没有这些文件夹就创建。
将以下代码添加进strings.xml文件中:

<string name="create_order_title">Create Order</string>

二、创建菜单资源文件夹
在AS工程中app/src/main/res/menu中创建一个名为menu_main.xml的新的菜单资源文件夹,所有新的菜单资源文件都放在这个文件夹中,将menu_main.xml文件的内容替换如下:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:title="@string/create_order_title"
        android:id="@+id/action_create_order"
        android:icon="@drawable/ic_add_white_24dp"
        android:orderInCategory="1"
        app:showAsAction="ifRoom" />
</menu>

菜单资源文件有一个menu元素作为它的根元素,其中可以有多个item元素,每个item元素描述一个不同的动作,动作包含很多属性,可以确定这个动作在应用条上如何显示,如它的图标和文本。
控制动作的外观
1、创建应用条上显示一个动作时,很可能把它显示为一个图标,图标可以是任何drawable资源,使用android:icon进行设置。
2、有时候Android无法显示动作的图标,这可能是因为动作没有图标,或因为动作显示在应用条的溢出区而不是主区,所以最好为动作设置一个标题,使得动作可以显示为一小段文本而不是图标。可以使用android:title属性设置动作的标题。
3、如果应用条包含多个动作,你可能希望指定它们出现的顺序。为此,要使用orderInCategorys属性,数值低的动作会在数值高的动作之前显示。
4、最后,shwoAsAction属性用于指示是否希望这一项出现在应用条中。这个属性可以是以下值:
ifRoom:如果有空间,将这个菜单项放在应用条中,如果没有空间,就放在溢出区中。
withText:包含这个菜单项的标题文本。
never:放到溢出区,永远都不放在主应用区。
always:总是把这一项放到主应用条区,这个值要少用,如果很多项都使用这个属性可能会互相重叠。

三、为应用增加菜单
实现MainActivity中的onCreateOptionsMenu方法。

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return super.onCreateOptionsMenu(menu);
    }

实现该方法之后,会把你的菜单资源文件增加到应用条,也就是inflate,这说明它会创建一个menu对象,这是菜单资源文件的一个Java表示,菜单资源文件包含的所有动作会转换为MenuItem。再把这些菜单项增加到应用条。

四、用onOptionsItemSelected方法响应单击动作项
单击应用条上的一个动作时,要让活动做出反应,需要在活动上实现onOptionsItemSelected方法。

 public boolean onOptionsItemSelected(@NonNull MenuItem item) {
        //MenuItem对象是应用条上所单击的动作。
        //根据得到的动作的ID做出相应的动作
        switch (item.getItemId()) {
            case R.id.action_create_order:
                Intent intent = new Intent(this, OrderActivity.class);
                startActivity(intent);
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

下面是完整的MainActivity:文章来源地址https://www.toymoban.com/news/detail-681823.html

package com.hfad.bitsandpizzas;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;

import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

public class MainActivity extends AppCompatActivity {

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

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(@NonNull MenuItem item) {
        //MenuItem对象是应用条上所单击的动作。
        //根据得到的动作的ID做出相应的动作
        switch (item.getItemId()) {
            case R.id.action_create_order:
                Intent intent = new Intent(this, OrderActivity.class);
                startActivity(intent);
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }
}

到了这里,关于为应用条增加动作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 头条Android高级开发岗二面:按下手机的-Home-键,有哪些动作和事件发生?

    void InputManager::initialize() { mReaderThread = new InputReaderThread(mReader); mDispatcherThread = new InputDispatcherThread(mDispatcher); } 我们可以看到,在 InputManager 里准备好了 mReader、mDispatcher,以及相关的两个线程,那么接下来当然就是把线程跑起来,好去读事件和分发事件。 启动事件读取和分发线

    2024年04月11日
    浏览(65)
  • 高通Android12增加自定义实体按键

    2024年01月17日
    浏览(45)
  • Android 9.0 无源码app增加授予相关权限

    在9.0的系统rom产品开发中,对于一些无源码app需要增加一些权限,比如悬浮窗权限,由于app内部没申请这个权限,所以需要系统适配默认授予这个权限, 就需要在PMS解析安装app的时候 授予悬浮窗权限就可以了 在pms管理解析安装app中,是通过PackageManage的getPackageArchiveInfo()实

    2024年02月02日
    浏览(44)
  • Android 工厂模式增加Type-A功能测试

    Android 工厂模式增加Type-A功能测试 收到客户需求想要增加Type-A测试项来验证Type-A功能,具体功能实现参照如下: /vendor/freeme/packages/apps/FreemeFactoryTest/src/com/freeme/factory/usb/TypeAUSB.java       重新编译验证,修改生效,工厂模式Type-A功能验证通过

    2024年02月08日
    浏览(36)
  • Android 13.0 SystemUI增加低电量弹窗功能

    在13.0系统定制开发rom的产品时,对于低电量提醒也是个很好的体验,由于产品要求在低电量的时候增加个弹窗提醒用户电量低及时充电,所以就开发了这个功能 在SystemUI的启动流程,在SystemServer的startOtherServices方法中,会启动SystemUIService服务,SystemUIService服务的onCreate方法会

    2024年02月05日
    浏览(44)
  • Android P 9.0 增加以太网静态IP功能

    1、vendormediatekproprietarypackagesappsMtkSettingsresxmlnetwork_and_internet.xml 在 mobile_network_settings 和 tether_settings 之间增加如上代码, 对应的 icon 资源文件是我从 SystemUI 中拷贝过来的,稍微调整了下大小,也贴给你们吧 2、vendormediatekproprietarypackagesappsMtkSettingsresdrawableic_ethern

    2024年02月22日
    浏览(56)
  • Android 13.0 SystemUI下拉状态栏背景增加高斯模糊背景

    在13.0的产品开发中,发现现在很多产品都是高斯模糊背景的,这种高斯模糊背景看起来效果很不错,产品开发需要SystemUI下拉状态栏背景也是高斯模糊背景,所以就要来实现下拉状态栏高斯模糊背景 在系统systemui,其实它的布局结构是比较复杂,里面管理各种服务,导航栏,

    2024年02月05日
    浏览(158)
  • Android 自定义view 中增加属性,初始化时读取

    因为自定义View 有正向和反向两个状态,所以需要在初始化时区分加载哪个layout 在Android中,要在自定义View中增加属性,你需要完成以下步骤: 在res/values/attrs.xml文件中定义属性。 在自定义View的构造函数中获取这些属性。 在布局文件中使用这些属性。 attrs.xml: 自定义VIEW 中

    2024年04月25日
    浏览(42)
  • Android 天气APP(二十三)增加灾害预警、优化主页面UI

    先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7 深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前! 因此收集整理了一份《2024年最新Android移动开发全套学习资

    2024年04月26日
    浏览(36)
  • Android 给广播接收器增加权限(permission)或signature签名权限

    一. 普通权限 1.添加权限         当普通广播接收器需要增加权限时,需要在广播接收器所在的AndroidManifest.xml 文件中添加权限: 注:我查到的资料是 在广播接收器所在的AndroidManifest.xml 文件中添加permission 就行了,uses-permission是添加在广播发送方的,但在我实际调试中我发

    2024年02月07日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包