手把手教你安卓入门(三 完)
2016-05-23 21:51
555 查看
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="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>
给结果显示区域和表达式显示区域之间,增加一条间隔线,高度设置为
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="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>
给
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>
这里的string
app_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>
至此,中文语言的支持,添加完成。在设备上运行程序后,会看到现在“计算器”应用到名称已经变成中文的
计算器了。
/[b]*******************************************************************[/b]/
* 版权声明
* 本教程只在CSDN和安豆网发布,其他网站出现本教程均属侵权。
/[b]*******************************************************************[/b]/
后记
到此为止,安卓开发的整个过程,大体就完成了。相信通过上面的学习,大家对安卓开发已经有了一个快速的认识。接下来,安卓开发进一步的学习,就要靠各位自己探索了。应用开发完成后的编译对齐、APK签名等与对外发布相关的操作,这里就不再介绍了。大家可以参考别的资料。
在安豆网还有一份更加详细的介绍计算器应用设计的视频。那里面使用了更多的技术来深化目前这个计算器的改进,讲解得更加细致,欢迎大家参考。
/[b]*******************************************************************[/b]/
* 版权声明
* 本教程只在CSDN和安豆网发布,其他网站出现本教程均属侵权。
*另外,我们还推出了Arduino智能硬件相关的教程,您可以在我们的网店跟我学Arduino编程中购买相关硬件。同时也感谢大家对我们这些码农的支持。
*最后再次感谢各位读者对
安豆的支持,谢谢:)
/[b]*******************************************************************[/b]/
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories