国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android開發(fā)之計(jì)算器GridLayout布局實(shí)現(xiàn)方法示例

2019-12-12 00:16:11
字體:
供稿:網(wǎng)友

本文實(shí)例講述了Android開發(fā)之計(jì)算器GridLayout布局實(shí)現(xiàn)方法。分享給大家供大家參考,具體如下:

運(yùn)行效果:

Demo 下載地址:https://github.com/LonglyWolf/Calculator

或者點(diǎn)擊此處本站下載

按鈕布局實(shí)現(xiàn):

一個(gè)Linearlayout 嵌套三個(gè)TextView 最下方的顯示當(dāng)前計(jì)算式。上面為先前的計(jì)算式。

Gridview 網(wǎng)格布局排布按鈕

<?xml version="1.0" encoding="utf-8"?><GridLayout  xmlns:android="http://schemas.android.com/apk/res/android"  android:layout_width="match_parent"  android:layout_height="match_parent"  android:rowCount="7"  android:columnCount="4"  android:id="@+id/root"  android:background="@color/buttonBackgroundBlack"  android:padding="5dp">  <LinearLayout    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:orientation="vertical"    android:layout_columnSpan="4">    <TextView      android:id="@+id/textview_up"      android:layout_width="match_parent"      android:layout_height="60dp"      android:layout_columnSpan="4"      android:layout_gravity="right"      android:background="#ff525252"      android:padding="3pt"      android:singleLine="true"      android:gravity="right"      android:textColor="#66ffffff"      android:textSize="25sp" />    <TextView      android:id="@+id/textview_down"      android:layout_width="match_parent"      android:layout_height="60dp"      android:layout_columnSpan="4"      android:layout_gravity="right"      android:background="#ff525252"      android:padding="3pt"      android:singleLine="true"      android:gravity="right"      android:textColor="#66ffffff"      android:textSize="25sp" />    <TextView      android:id="@+id/textview"      android:layout_width="match_parent"      android:layout_height="75dp"      android:layout_columnSpan="4"      android:layout_gravity="right"      android:background="#ff525252"      android:padding="3pt"      android:gravity="right"      android:singleLine="true"      android:textColor="#eee"      android:textSize="40sp"      android:maxLines="10"/>  </LinearLayout></GridLayout>

算法實(shí)現(xiàn):

在這里 我先將輸入的 中綴表達(dá)式,轉(zhuǎn)為后綴表達(dá)式,再用后綴表達(dá)式進(jìn)行了計(jì)算。

具體實(shí)現(xiàn)參照前面一篇:http://m.survivalescaperooms.com/article/158331.htm

這里給大家提供另一種更簡單的思路:

如果不要求算法,Java中已經(jīng)自定義了:ScriptEngineManager類,我們可以直接調(diào)用它的方法,求得TextView上計(jì)算式的值

ScriptEngineManager scriptEngineManager = new ScriptEngineManager();ScriptEngine scriptEngine = scriptEngineManager.getEngineByName("nashorn");String expression = tv.getText().toString;try {  String result = String.valueOf(scriptEngine.eval(expression));  System.out.println(result);} catch (ScriptException e) {  Toast.makeText(MainActivity.this,"請(qǐng)正確輸入",Toast.LENGTH_SHORT).show();  e.printStackTrace();}

關(guān)于括號(hào)自動(dòng)匹配:

設(shè)一個(gè)Flag,判斷前一個(gè)字符是什么,空或者運(yùn)算符就輸出“(”,然后falg++

否則輸出“)” falg-- 最后輸入完成,計(jì)算前直接檢查一下falg是否為0即可:

最后講下原式的取回:

很多人計(jì)算的時(shí)候,會(huì)輸入錯(cuò)誤,這是需要取回計(jì)算式

實(shí)現(xiàn)很簡單,一個(gè)點(diǎn)擊事件的事

比如說點(diǎn)完最頂上的TextView ,就把你當(dāng)前的TextView.setText()就搞定了

具體算法實(shí)現(xiàn)可以參考我開頭給出的 Demo

更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android控件用法總結(jié)》、《Android開發(fā)入門與進(jìn)階教程》、《Android視圖View技巧總結(jié)》、《Android編程之a(chǎn)ctivity操作技巧總結(jié)》、《Android數(shù)據(jù)庫操作技巧總結(jié)》及《Android資源操作技巧匯總

希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 龙岩市| 五寨县| 磴口县| 阳高县| 固原市| 凤翔县| 左贡县| 南京市| 中阳县| 晋江市| 通州市| 康乐县| 大冶市| 德钦县| 河东区| 卓资县| 资源县| 凤冈县| 安平县| 凉城县| 贵德县| 锡林郭勒盟| 抚松县| 阿城市| 镶黄旗| 乌鲁木齐县| 昌都县| 綦江县| 高密市| 盈江县| 庆元县| SHOW| 鄂州市| 雅江县| 广平县| 龙南县| 怀安县| 会宁县| 金秀| 黄梅县| 永福县|