手把手教你安卓入门(三 完)"/>
手把手教你安卓入门(三 完)
3.2.4 计算功能
当用户点击“=”按钮的时候,开始计算。
我们将使用第三方计算库Arity
对表达式进行计算。Arity
库文件可以在安豆网提供的下载地址进行下载。
下载完成后,
- 将下载的
arity-2.1.2.jar
复制到项目工程所在的Calulator\app\libs
目录下,如果这个目录不存在,就自己创建一个; - 在Android Studio左边的项目浏览区,选择
Project
视图; - 在
app->libs->arity-2.1.2,jar
上点击右键,选择Add as Library...
; - 在弹出的选择框中,点击
OK
。
利用第三方库,对运算表达式进行计算,
- 获取表达式区域的内容;
- 创建第三方库Arity提供的
Symbols
对象,使用它的evl()
方法,计算表达式的内容; - 将计算结果显示到计算结果区域,并清空表达式区域;
- 如果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 美化显示区域
在布局文件
activity_main.xml
中,给整个界面增加一个背景颜色#FF4B5459
,使用android:background
属性设置,这里的颜色是采用AARRGGBB的形式进行定义的;<LinearLayout xmlns:android=""xmlns:tools=""android:layout_width="match_parent"android:layout_height="match_parent"tools:context="com.anddle.calculator.MainActivity"android:orientation="vertical"android:background="#FF4B5459"> </LinearLayout>
给结果显示区域和表达式显示区域之间,增加一条间隔线,高度设置为
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>
显示区域的字体颜色通过
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。
打开
res\values\colors.xml
文件,定义没有按下按钮
时背景的颜色为#D0DCE3
,按下按钮
时背景的颜色为#BED1DB
;<resources>...... <color name="colorBtnNormal">#D0DCE3</color><color name="colorBtnPressed">#BED1DB</color> </resources>
在
res\drawable\
目录下,点击右键,启动创建drawable resource的向导;创建selector drawable的xml文件,文件名为
button_selector
;根据
Button
是否被按下的状态android:state_pressed
,分别为它们设置不同的颜色,android:state_pressed=true
,说明当前按钮被按下,android:state_pressed=false
,说明当前按钮没有被按下;设置颜色使用@color
关键字,并加上之前在colors.xml中定义的颜色的名字;xml
<selector xmlns:android="">
<item android:state_pressed="false" android:drawable="@color/colorBtnNormal"/>
<item android:state_pressed="true" android:drawable="@color/colorBtnPressed"/>
</selector>
给
Button
的android: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
就可以了。
打开
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>
为所有
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 添加中文语言支持
安卓系统,支持多国语言。在这一节,我们将添加中文支持。
在
res
目录下,点击右键,启动创建android resource的向导;在
File name
栏,输入strings.xml
,再选中下方的locale
,添加到右边;选中
zh
,代表中文;在创建出来的中文的
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编程中购买相关硬件。同时也感谢大家对我们这些码农的支持。
*最后再次感谢各位读者对安豆
的支持,谢谢:)
/*******************************************************************/
更多推荐
手把手教你安卓入门(三 完)
发布评论