手把手教你安卓入门(三 完)

3.2.4 计算功能

当用户点击“”按钮的时候,开始计算。

我们将使用第三方计算库Arity对表达式进行计算。Arity库文件可以在安豆网提供的下载地址进行下载。

下载完成后,

  1. 将下载的arity-2.1.2.jar复制到项目工程所在的Calulator\app\libs目录下,如果这个目录不存在,就自己创建一个;
  2. 在Android Studio左边的项目浏览区,选择Project视图;
  3. app->libs->arity-2.1.2,jar上点击右键,选择Add as Library...
  4. 在弹出的选择框中,点击OK

利用第三方库,对运算表达式进行计算,

  1. 获取表达式区域的内容;
  2. 创建第三方库Arity提供的Symbols对象,使用它的evl()方法,计算表达式的内容;
  3. 将计算结果显示到计算结果区域,并清空表达式区域;
  4. 如果Arity不能根据提供的计算表达式进行计算,会抛出异常。因此使用try...catch抓住异常,用Toast类给用户一个内容为错误!的提示。
public void onClick(View view)
{
        switch (view.getId()) {
            ......
            case R.id.btn_equ: {
                TextView formula = (TextView) findViewById(R.id.formula_area);
                String strContent = formula.getText().toString();

                try {
                    Symbols s = new Symbols();
                    double res = s.eval(strContent);

                    TextView result = (TextView) findViewById(R.id.result_area);
                    result.setText(String.valueOf(res));

                    formula.setText("");

                } catch (SyntaxException e) {
                    Toast.makeText(MainActivity.this, “错误!”, Toast.LENGTH_SHORT).show();
                }
            }
            break;       
        }
}

至此,一个具有计算功能的计算器就已经出现了。

3.3 计算器界面美化

这一节,我们将对粗糙的计算器界面进行美化。

3.3.1 美化显示区域

  1. 在布局文件activity_main.xml中,给整个界面增加一个背景颜色#FF4B5459,使用android:background属性设置,这里的颜色是采用AARRGGBB的形式进行定义的;

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.anddle.calculator.MainActivity"
        android:orientation="vertical"
        android:background="#FF4B5459">
    </LinearLayout>
  2. 给结果显示区域和表达式显示区域之间,增加一条间隔线,高度设置为5dp,用颜色“#FF5C6265”;

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="vertical">
    
        <TextView
            android:id="@+id/result_area"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"/>
    
        <View
            android:layout_width="match_parent"
            android:layout_height="5dp"
            android:background="#FF5C6265" />
    
        <TextView
            android:id="@+id/formula_area"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"/>
    
    </LinearLayout>
  3. 显示区域的字体颜色通过android:textColor属性设置成白色#FFFFFFFF;字体大小通过android:textSize属性设置成45sp;通过android:gravity属性让文字位于左边居中显示;显示区域的页边距通过android:padding属性设置成5dp

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="vertical">
    
        <TextView
            android:id="@+id/result_area"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:textColor="#FFFFFFFF"
            android:textSize="45sp"
            android:gravity="center_vertical|right"
            android:padding="5dp"/>
    
        <View
            android:layout_width="match_parent"
            android:layout_height="5dp"
            android:background="#FF5C6265" />
    
        <TextView
            android:id="@+id/formula_area"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:textColor="#FFFFFFFF"
            android:textSize="45sp"
            android:gravity="center_vertical|right"
            android:padding="5dp"/>
    
    </LinearLayout>

3.3.2 美化键盘区域

修改Button的字体大小和字体颜色,与修改TextView的字体大小和字体颜色完全一样。

<TableRow android:layout_weight="1">
    <Button android:id="@+id/btn_c" 
        android:text="C" 
        android:onClick="onClick"
        android:textColor="#FF000000"
        android:textSize="35sp"/>
    ......
</TableRow>

修改Button的按键背景效果,需要使用selector drawble。

  1. 打开res\values\colors.xml文件,定义没有按下按钮时背景的颜色为#D0DCE3按下按钮时背景的颜色为#BED1DB

    <resources>
        ......    
        <color name="colorBtnNormal">#D0DCE3</color>
        <color name="colorBtnPressed">#BED1DB</color>
    </resources>
  2. res\drawable\目录下,点击右键,启动创建drawable resource的向导;

  3. 创建selector drawable的xml文件,文件名为button_selector

  4. 根据Button是否被按下的状态android:state_pressed,分别为它们设置不同的颜色,android:state_pressed=true,说明当前按钮被按下,android:state_pressed=false,说明当前按钮没有被按下;设置颜色使用@color关键字,并加上之前在colors.xml中定义的颜色的名字;

    xml
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="false" android:drawable="@color/colorBtnNormal"/>
    <item android:state_pressed="true" android:drawable="@color/colorBtnPressed"/>
    </selector>

  5. Buttonandroid:background属性,使用drawable selector,

    <TableRow android:layout_weight="1">
            <Button android:id="@+id/btn_c" 
                android:text="C" 
                android:onClick="onClick"
                android:textColor="#FF000000"
                android:textSize="35sp"
                android:background="@drawable/button_selector"/>
            ......
    </TableRow>

为了减少修改每个Button的工作量,可以将Button的这种显示效果定义成一种style,为“计算器”应用中的所有Button设置这种style就可以了。

  1. 打开res\values\styles.xml文件,将Button的共同特性定义成一个style---BtnStyle;此外,为了键盘美观,通过定义android:layout_margin属性,增加了每个按钮的间距。

    <resources>
        ......
        <style name="BtnStyle">
            <item name="android:layout_height">match_parent</item>
            <item name="android:layout_margin">0.5dp</item>
            <item name="android:textSize">35sp</item>
            <item name="android:textColor">#FF000000</item>
            <item name="android:background">@drawable/button_selector</item>
        </style>
    </resources>
  2. 为所有Button通过style属性,添加一种BtnStyle风格;

    <TableRow android:layout_weight="1">
            <Button android:id="@+id/btn_c" android:text="C" android:onClick="onClick" style="@style/BtnStyle" />
            <Button android:id="@+id/btn_del" android:text="DEL" android:onClick="onClick" style="@style/BtnStyle"/>
            <Button android:id="@+id/btn_dot" android:text="." android:onClick="onClick" style="@style/BtnStyle"/>
            <Button android:id="@+id/btn_add" android:text="+" android:onClick="onClick" style="@style/BtnStyle"/>
    </TableRow>

至此,计算器界面美化完成。

3.4 添加中文语言支持

安卓系统,支持多国语言。在这一节,我们将添加中文支持。

  1. res目录下,点击右键,启动创建android resource的向导;

  2. File name栏,输入strings.xml,再选中下方的locale,添加到右边;

  3. 选中zh,代表中文;

  4. 在创建出来的中文的res\values-zh\strings.xml文件中,仿照res\values\strings.xml的内容,添加中文语言;

    <resources>
        <string name="app_name">计算器</string>
    </resources>

这里的stringapp_name,在AndroidManifest.xml文件中被使用,它使用android:label属性,指定了这个应用的名称。

<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

至此,中文语言的支持,添加完成。在设备上运行程序后,会看到现在“计算器”应用到名称已经变成中文的计算器了。

/*******************************************************************/
* 版权声明
* 本教程只在CSDN安豆网发布,其他网站出现本教程均属侵权。
/*******************************************************************/

后记

到此为止,安卓开发的整个过程,大体就完成了。相信通过上面的学习,大家对安卓开发已经有了一个快速的认识。接下来,安卓开发进一步的学习,就要靠各位自己探索了。

应用开发完成后的编译对齐、APK签名等与对外发布相关的操作,这里就不再介绍了。大家可以参考别的资料。

安豆网还有一份更加详细的介绍计算器应用设计的视频。那里面使用了更多的技术来深化目前这个计算器的改进,讲解得更加细致,欢迎大家参考。


/*******************************************************************/
* 版权声明
* 本教程只在CSDN安豆网发布,其他网站出现本教程均属侵权。

*另外,我们还推出了Arduino智能硬件相关的教程,您可以在我们的网店跟我学Arduino编程中购买相关硬件。同时也感谢大家对我们这些码农的支持。

*最后再次感谢各位读者对安豆的支持,谢谢:)
/*******************************************************************/

  • 11
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值