比菜鸟更进一步(1):Style文件和toolbar的使用

本文详细介绍了在Android开发中使用Style文件的方法,包括如何定义颜色和样式,以及如何在布局中应用这些样式。同时,文章阐述了如何使用升级版的toolbar替代传统的actionbar,并提供了具体的实现步骤和示例代码。此外,还讲解了如何在toolbar上添加图标及按钮,以及如何使这些图标响应用户操作。通过本文的学习,开发者将能够更高效地定制和优化Android应用的界面。

比菜鸟更进一步(1):Style文件和toolbar的使用

公告板
学习安卓开发已经很久了,并且自己也做了不少东西了,一直觉得网络上的教程杂乱无章并且非常难以入门,没有实战的快感,所以开始写一些博客,希望能从简单到复杂,真真切切地让无从下手的朋友们按部就班地最快捷地做出自己的手机应用。

首先是安卓开发中的Style使用。

如何使用style文件

江湖上有句传言:想用style,你得先知道style文件在哪。(欲练此功,xxxx);

我实在不想告诉你:style.xml 文件位于 res/value/style.xml

在这个style文件里面可以定义各种你需要的颜色和样式,类似于CSS。
比如这样:

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <!-- toolbaractionbar)颜色 -->
        <item name="colorPrimary">#558B2F</item>
        <!-- 状态栏颜色 -->
        <item name="colorPrimaryDark">#33691E</item>
        <!-- 窗口的背景颜色 -->
        <item name="android:windowBackground">@color/background_material_light</item>
    </style>

</resources>

在style里定义的颜色应该如何使用?

style里定义的文件其实就是一个可以直接拿来用的属性了,具体使用是这样的:
看下面这个Toolbar文件里面的这一行:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
    android:layout_width="match_parent"
    android:layout_height="56dp"
    android:id="@+id/toolbar"
    android:background="?attr/colorPrimary"
    xmlns:android="http://schemas.android.com/apk/res/android">
</android.support.v7.widget.Toolbar>

android:background=”?attr/colorPrimary”
这一行其实就是调用了style文件里的colorPrimary项所指定的颜色

Toolbar如何使用

首先来说,toolbar是Actionbar的升级版,要使用Toolbar的话首先要丢弃Actionbar,所以先选用一个NoActionBar的主题才是真的。比如在自己的Style.xml文件里面继承NoActionBar主题:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">

当你的主题没有actionbar之后,可以去新建一个Layout文件,在这个文件里面声明你的Toolbar:注意使用v7的包

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
    android:layout_width="match_parent"
    android:layout_height="56dp"
    android:id="@+id/toolbar"
    android:background="?attr/colorPrimary"
    xmlns:android="http://schemas.android.com/apk/res/android">
</android.support.v7.widget.Toolbar>

之后就可以在任何Layout文件里随意include这个toolbar了:


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:paddingTop="6dp"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:padding="16dp">
    <!-- 在这里可以include你的Toolbar,其实在别的地方也行 -->
    <include layout="@layout/toolbar"></include>

    <TextView
        android:id="@+id/drawerList_text"
        android:gravity="center_vertical"
        android:paddingLeft="16dp"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="56dp"
        android:text="这个东西没有用,只是放在这里当教材。"
        />
</LinearLayout>

如何使Toolbar工作起来

当然了,仅仅在Layouyt里面引用一下是不够的,我们还需要使它工作起来,这很容易,只需要简单的设置,在你的Activity文件的onCreate方法里:

        mToolbar = (Toolbar) findViewById(R.id.toolbar);//获得实例
        mToolbar.setTitle("Miko");//设置标题
        setSupportActionBar(mToolbar);//把Toolbar当作ActionBar绑定

这样就可以了。当然Toolbar还有很多选项可以设置,这里我就不多说了,可以去官方网站上查一下。

在Toolbar上面添加一些图标

有一个条当然是不够的。除非你喝了周星星的毒药“我爱一条柴”。现在这个Toolbar似乎已经有样子了,但是看起来就TM像死机了一样,没有按钮有个毛用。所以需要添加一些按钮了。
添加按钮需要用到menu文件。
menu文件你可以自己创建一个。然后你就可以在里面尽情的添加图标和按钮了。就像这样:

<menu 
    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" tools:context=".MainActivity">
    <item 
        android:id="@+id/action_settings"
        android:title="@string/action_settings"
        android:orderInCategory="1" app:showAsAction="never" />
    <item 
        android:id="@+id/action_mails" 
        android:title="@string/action_emails"
        android:icon="@drawable/ic_action_email"     
        android:orderInCategory="1" app:showAsAction="always" />
</menu>

这里面有一些必须要说明的,id,title这些顾名思义。重要的是orderInCategoryapp:showAsAction 这两个属性。
orderInCategory:是表示这个选项的重要程度,1为最重要,100为最不重要,当你的Toolbar上的空间不足以显示所有图标时,最不重要的图标会被优先隐藏。好拗口……
app:showAsAction :表示是不是总是显示在Toolbar上面,可以总显示,也可以当空间足够时显示,或者永远不显示。

当你设计好你的menu文件以后,就可以在你的Activity文件里面设置它了。需要创建一个方法,是这个样子的:

    //不用考虑这么多,你可以照抄这些代码,因为这都是系统自动生成的。
    //inflate()里面的两个参数,第一个是你刚才设计的menu文件,第二个你就照这么写就行了,我们的
    //目的是迅速的使用,并不喜欢深究,如果你想搞的明白些,网上有很多文章写的非常清楚 :)

    public boolean onCreateOptionsMenu(Menu menu) {

        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

好了,这样图标就显示到你的Toolbar上面了。

当你点击图标的时候,会发生什么?

图标设置好了不行,还得可以点击,不然这就成了一幅画,很傻缺的。具体操作你可以这样来:

public boolean onOptionsItemSelected(MenuItem item) {
        // 首先你要明白,这个方法也是系统自动生成的。如果没有,你可以自己重写它。
        //switch方法我相信不用多说,这毕竟是Java的基础了。
        // 你可以回头看看刚才我写的menu文件。
        int id = item.getItemId();
        switch (id){
            case R.id.action_mails://注意到这个id了吗?这个id是我刚才在我的menu文件里设置的
                //Toast这行代码可以在屏幕上显示一个小消息。这个以后再说,你现在可以尝试一下。
                Toast.makeText(this,"这里是显示邮件的",Toast.LENGTH_SHORT).show();                
                break;
            case R.id.action_settings://这个id也是
                Toast.makeText(this,"这里是显示设置的",Toast.LENGTH_SHORT).show();
                break;
            default:return super.onOptionsItemSelected(item);
        }

        return super.onOptionsItemSelected(item);
    }

好了,就是这样。然后运行它吧。

考虑柔性负荷的综合能源系统低碳经济优化调度【考虑碳交易机制】(Matlab代码实现)内容概要:本文围绕“考虑柔性负荷的综合能源系统低碳经济优化调度”展开,重点研究在碳交易机制下如何实现综合能源系统的低碳化与经济性协同优化。通过构建包含风电、光伏、储能、柔性负荷等多种能源形式的系统模型,结合碳交易成本与能源调度成本,提出优化调度策略,以降低碳排放并提升系统运行经济性。文中采用Matlab进行仿真代码实现,验证了所提模型在平衡能源供需、平抑可再生能源波动、引导柔性负荷参与调度等方面的有效性,为低碳能源系统的设计与运行提供了技术支撑。; 适合人群:具备一定电力系统、能源系统背景,熟悉Matlab编程,从事能源优化、低碳调度、综合能源系统等相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①研究碳交易机制对综合能源系统调度决策的影响;②实现柔性负荷在削峰填谷、促进可再生能源消纳中的作用;③掌握基于Matlab的能源系统建模与优化求解方法;④为实际综合能源项目提供低碳经济调度方案参考。; 阅读建议:建议读者结合Matlab代码深入理解模型构建与求解过程,重点关注目标函数设计、约束条件设置及碳交易成本的量化方式,可进一步扩展至多能互补、需求响应等场景进行二次开发与仿真验证。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值