赞
踩
1. 小数点要能在没有数字的时候直接作为一个小数的开头输入;
2. 小数点可以作为一个小数的结尾;
3. 运算符后不能紧跟运算符;
4. 运算符前可以有数字、小数点、右括号;
5. 负数的符号限制在左括号之后或者表达式开头;
6. 右括号的插入必须是在当前表达式左括号的数量比右括号数量多的情况;
7. 小数点不能出现在一个数中两次;
8. 左括号之前必须有运算符或者表达式为空;
9. 运算符不能作为表达式开头除了负号。
1. 表达式展示需要注意显示的长度,如果过长会自动出现“...”在编辑框中,不太美观;
2. 结果展示保留了10位小数,可以处理一些3-3.3的计算问题;对科学计数法保留了6为小数,因为输出框太小了显示不全。
1. 先将表达式字符串中的操作数和运算符、括号等全部保存到一个列表中;
2.使用两个栈运算表达式的方法相信各位大佬都会,所以就不提了。
本计算器会实时给出当前表达式的运算结果,如果点击等号,就会在使用结果覆盖表达式。
- import android.media.MediaPlayer
- import androidx.appcompat.app.AppCompatActivity
- import android.os.Bundle
- import android.util.Log
- import android.widget.Button
- import android.widget.TextView
- import kotlin.math.round
-
-
- class Value(var flag: Boolean, var value: Double)
- class valueSign(var flag: Boolean, var value: Double, var sign: Char='0')
-
- class MainActivity : AppCompatActivity() {
- val sign = arrayListOf<Char>('+', '-', 'x', '/', '.', ')', '(', '%')
- val sign_ = arrayListOf<Char>('+', '-', 'x', '/', ')', '(', '%')
- val sign__ = arrayListOf<Char>('+', '-', 'x', '/', '(', '%')
- var gs = ""
- val len_1 = 9
-
- // 判断是否可以插入符号
- fun judgeInsertSign(text: String, ch: Char): Boolean {
- if (ch == '-' && (text == "" || text[text.length-1] == '(')) return true // 可以插入-号判断
- if (ch == ')') {
- var cnt = 0
- for (i in text) {
- if (i == '(') cnt += 1
- else if (i == ')') cnt -= 1
- }
- if (cnt < 1) return false
- } // 不可以插入右括号判断
- if (ch == '.' && text != "") {
- for (i in text.length-1 downTo 0) {
- if (text[i] in sign) {
- if (text[i] == '.') return false
- else break
- }
- }
- } // 不可以插入.判断
- if (ch == '.' && (text == "" || text[text.length-1] in sign__)) {
- return true
- } // 可以插入.判断
- if (text.length >= 2 && ch in sign__ && ch != '(' && text[text.length-1] == '.' && !(text[text.length-2] in sign)) {
- return true
- } // 可以在小数点后面插入运算符
- if (ch == '(' && (text == "" || text[text.length-1] in sign__)) { // 是否可以插入左括号判断
- return true
- }
- else if (ch == '(') return false
-
- if (text != "" && text[text.length-1] == ')' && ch != '(' && ch != '.') { // 给出可以插入的普通情况
- return true
- }
- if (ch == '=' && text != "" && text[text.length-1] == '.') {
- return true
- } // 在前一个小数点合法的情况下,准许运算
- if (text == "" || text[text.length-1] in sign) { // 给出不可以插入的普通情况
- return false
- }
- return true
- }
-
- // 提取展示的内容
- fun showGs(text: String): String {
- if (text.length <= len_1) {
- return text
- }
- return text.substring(text.length-len_1 until text.length)
- }
-
- // 判断符号优先性
- fun gle(fu1: Char, fu2: Char): Boolean {
- if ((fu2 == '+' || fu2 == '-') && fu1 != '(') return true
- if ((fu2 == '*' || fu2 == '/' || fu2 == '%') && fu1 != '(' && fu1 != '+' && fu1 != '-') return true
- return false
- }
-
- // 简单运算
- fun execute(a: Double, b: Double, fu: Char): Double {
- return when (fu) {
- '*' -> a * b
- '/' -> a / b
- '%' -> a % b
- '+' -> a + b
- else -> a - b
- }
- }
-
- // 运算
- fun getAnswer(gs: String): Value {
- Log.d("计算标志", "开始计算")
- // 首先判断能否进行运算
- var cnt = 0
- for (i in gs) {
- if (i == '(') cnt += 1
- else if (i == ')') cnt -= 1
- }
- if ((gs[gs.length-1] in sign__ && gs[gs.length-1] != '.') || (gs[gs.length-1] == '.' && (gs.length == 1 || gs[gs.length-2] in sign)) || cnt != 0)
- return Value(false, 0.0)
-
- // 预处理这个字符串
- val num_sign = mutableListOf<valueSign>()
- var temp = ""
- var last = ' '
- for (i in gs) {
- if (!(i == '+' && (last == 'e' || last == 'E')) && i in sign_) { // 添加判断为了解决1e+5形式的科学计数法形式的结果参与运算
- if (temp != "")
- num_sign.add(valueSign(true, temp.toDouble(), '0'))
- temp = ""
- var t = '0'
- if (i == 'x') t = '*'
- else t = i
-
- // 判断是否为负数
- if (t == '-' && (num_sign.size == 0 || num_sign[num_sign.size-1].sign == '(')) temp += '-'
- else num_sign.add(valueSign(false, 0.0, t))
- }
- else temp += i
- last = i
- }
-
- if (temp != "") num_sign.add(valueSign(true, temp.toDouble(), '0'))
-
- // 定义两个栈,一个符号栈,一个数字栈
- val num = mutableListOf<Double>()
- val sign = mutableListOf<Char>()
-
- // 循环遍历这个字符串
- for (ch in num_sign) {
- // 根据ch不同的值做出不同的处理
- when {
- ch.flag -> {
- num.add(ch.value) // 再放回去
- }
- else -> {
- when (ch.sign) {
- '*' -> {
- while (sign.size != 0 && gle(sign[sign.size-1], ch.sign)) {
- val fu = sign.removeAt(sign.size-1)
- val b = num.removeAt(num.size-1)
- val a = num.removeAt(num.size-1)
- if (b == 0.0 && (fu == '/' || fu == '%')) return Value(false, 0.0)
- num.add(execute(a, b, fu))
- }
- sign.add('*')
- }
- '%' -> {
- while (sign.size != 0 && gle(sign[sign.size-1], ch.sign)) {
- val fu = sign.removeAt(sign.size-1)
- val b = num.removeAt(num.size-1)
- val a = num.removeAt(num.size-1)
- if (b == 0.0 && (fu == '/' || fu == '%')) return Value(false, 0.0)
- num.add(execute(a, b, fu))
- }
- sign.add('%')
- }
- '/' -> {
- while (sign.size != 0 && gle(sign[sign.size-1], ch.sign)) {
- val fu = sign.removeAt(sign.size-1)
- val b = num.removeAt(num.size-1)
- val a = num.removeAt(num.size-1)
- if (b == 0.0 && (fu == '/' || fu == '%')) return Value(false, 0.0)
- num.add(execute(a, b, fu))
- }
- sign.add('/')
- }
- '(' -> sign.add('(')
- ')' -> {
- var fu = sign.removeAt(sign.size - 1)
- while (fu != '(') {
- val b = num.removeAt(num.size-1)
- val a = num.removeAt(num.size-1)
- if (b == 0.0 && (fu == '/' || fu == '%')) return Value(false, 0.0)
- num.add(execute(a, b, fu))
- fu = sign.removeAt(sign.size - 1)
- }
- }
- '+' -> {
- while (sign.size != 0 && gle(sign[sign.size-1], ch.sign)) {
- val fu = sign.removeAt(sign.size-1)
- val b = num.removeAt(num.size-1)
- val a = num.removeAt(num.size-1)
- if (b == 0.0 && (fu == '/' || fu == '%')) return Value(false, 0.0)
- num.add(execute(a, b, fu))
- }
- sign.add('+')
- }
- '-' -> {
- while (sign.size != 0 && gle(sign[sign.size-1], ch.sign)) {
- val fu = sign.removeAt(sign.size-1)
- val b = num.removeAt(num.size-1)
- val a = num.removeAt(num.size-1)
- if (b == 0.0 && (fu == '/' || fu == '%')) return Value(false, 0.0)
- num.add(execute(a, b, fu))
- }
- sign.add('-')
- }
- }
- }
- }
- }
-
- // 取出全部的内容得到运算结果
- while (sign.size != 0) {
- val fu = sign.removeAt(sign.size - 1)
- val b = num.removeAt(num.size-1)
- val a = num.removeAt(num.size-1)
- if (b == 0.0 && (fu == '/' || fu == '%')) return Value(false, 0.0)
- num.add(execute(a, b, fu))
- }
-
- return Value(true, round(num[0] * 1e10) / 1e10)
- }
-
- // 没按下一个按键就返回一个值
- fun showAns(ans: TextView) {
- if (judgeInsertSign(gs, '=')) {
- val temp = getAnswer(gs)
- if (temp.flag) {
- if (temp.value > 999999999) ans.text = "%.6e".format(temp.value)
- else ans.text = temp.value.toString()
- }
- else {
- ans.text = "Error"
- }
- }
- else {
- ans.text = "Error"
- }
- }
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_main)
-
- val text = findViewById<TextView>(R.id.calc)
- val ans = findViewById<TextView>(R.id.ans)
- val b_ = findViewById<Button>(R.id.b_)
- b_.setOnClickListener {
- if (judgeInsertSign(gs, '(')) {
- gs = "${gs}("
- showAns(ans)
- }
- text.text = showGs(gs)
-
- // 添加音效
- val mediaPlayer = MediaPlayer.create(this, R.raw.click)
- mediaPlayer.start()
- }
- val _b = findViewById<Button>(R.id._b)
- _b.setOnClickListener {
- if (judgeInsertSign(gs, ')')) {
- gs = "${gs})"
- showAns(ans)
- }
- text.text = showGs(gs)
-
- // 添加音效
- val mediaPlayer = MediaPlayer.create(this, R.raw.click)
- mediaPlayer.start()
- }
-
- val b1 = findViewById<Button>(R.id.b1)
- b1.setOnClickListener {
- gs = ""
- text.text = showGs(gs)
- ans.text = ""
-
- // 添加音效
- val mediaPlayer = MediaPlayer.create(this, R.raw.click)
- mediaPlayer.start()
- }
- val b2 = findViewById<Button>(R.id.b2)
- b2.setOnClickListener {
- if (judgeInsertSign(gs, '/')) {
- gs = "${gs}/"
- showAns(ans)
- }
- text.text = showGs(gs)
-
- // 添加音效
- val mediaPlayer = MediaPlayer.create(this, R.raw.click)
- mediaPlayer.start()
- }
- val b3 = findViewById<Button>(R.id.b3)
- b3.setOnClickListener {
- if (judgeInsertSign(gs, 'x')) {
- gs = "${gs}x"
- showAns(ans)
- }
- text.text = showGs(gs)
-
- // 添加音效
- val mediaPlayer = MediaPlayer.create(this, R.raw.click)
- mediaPlayer.start()
- }
- val b4 = findViewById<Button>(R.id.b4)
- b4.setOnClickListener {
- if (gs != "") {
- gs = gs.substring(0 until gs.length - 1)
- showAns(ans)
- }
- text.text = showGs(gs)
-
- // 添加音效
- val mediaPlayer = MediaPlayer.create(this, R.raw.click)
- mediaPlayer.start()
- }
- val b5 = findViewById<Button>(R.id.b5)
- b5.setOnClickListener {
- gs = "${gs}7"
- text.text = showGs(gs)
- showAns(ans)
-
- // 添加音效
- val mediaPlayer = MediaPlayer.create(this, R.raw.click)
- mediaPlayer.start()
- }
- val b6 = findViewById<Button>(R.id.b6)
- b6.setOnClickListener {
- gs = "${gs}8"
- text.text = showGs(gs)
- showAns(ans)
-
- // 添加音效
- val mediaPlayer = MediaPlayer.create(this, R.raw.click)
- mediaPlayer.start()
- }
- val b7 = findViewById<Button>(R.id.b7)
- b7.setOnClickListener {
- gs = "${gs}9"
- text.text = showGs(gs)
- showAns(ans)
-
- // 添加音效
- val mediaPlayer = MediaPlayer.create(this, R.raw.click)
- mediaPlayer.start()
- }
- val b8 = findViewById<Button>(R.id.b8)
- b8.setOnClickListener {
- if (judgeInsertSign(gs, '-')) {
- gs = "${gs}-"
- showAns(ans)
- }
- text.text = showGs(gs)
-
- // 添加音效
- val mediaPlayer = MediaPlayer.create(this, R.raw.click)
- mediaPlayer.start()
- }
- val b9 = findViewById<Button>(R.id.b9)
- b9.setOnClickListener {
- gs = "${gs}4"
- text.text = showGs(gs)
- showAns(ans)
-
- // 添加音效
- val mediaPlayer = MediaPlayer.create(this, R.raw.click)
- mediaPlayer.start()
- }
- val b10 = findViewById<Button>(R.id.b10)
- b10.setOnClickListener {
- gs = "${gs}5"
- text.text = showGs(gs)
- showAns(ans)
-
- // 添加音效
- val mediaPlayer = MediaPlayer.create(this, R.raw.click)
- mediaPlayer.start()
- }
- val b11 = findViewById<Button>(R.id.b11)
- b11.setOnClickListener {
- gs = "${gs}6"
- text.text = showGs(gs)
- showAns(ans)
-
- // 添加音效
- val mediaPlayer = MediaPlayer.create(this, R.raw.click)
- mediaPlayer.start()
- }
- val b12 = findViewById<Button>(R.id.b12)
- b12.setOnClickListener {
- if (judgeInsertSign(gs, '+')) {
- gs = "${gs}+"
- showAns(ans)
- }
- text.text = showGs(gs)
-
- // 添加音效
- val mediaPlayer = MediaPlayer.create(this, R.raw.click)
- mediaPlayer.start()
- }
- val b13 = findViewById<Button>(R.id.b13)
- b13.setOnClickListener {
- gs = "${gs}1"
- text.text = showGs(gs)
- showAns(ans)
-
- // 添加音效
- val mediaPlayer = MediaPlayer.create(this, R.raw.click)
- mediaPlayer.start()
- }
- val b14 = findViewById<Button>(R.id.b14)
- b14.setOnClickListener {
- gs = "${gs}2"
- text.text = showGs(gs)
- showAns(ans)
-
- // 添加音效
- val mediaPlayer = MediaPlayer.create(this, R.raw.click)
- mediaPlayer.start()
- }
- val b15 = findViewById<Button>(R.id.b15)
- b15.setOnClickListener {
- gs = "${gs}3"
- text.text = showGs(gs)
- showAns(ans)
-
- // 添加音效
- val mediaPlayer = MediaPlayer.create(this, R.raw.click)
- mediaPlayer.start()
- }
- val b16 = findViewById<Button>(R.id.b16)
- b16.setOnClickListener {
- if (judgeInsertSign(gs, '=')) {
- val temp = getAnswer(gs)
- if (temp.flag) {
- if (temp.value > 999999999) text.text = showGs("%11.6e".format(temp.value))
- else text.text = showGs(temp.value.toString())
- gs = ""
- ans.text = ""
- }
- else {
- ans.text = "Error"
- }
- }
- else {
- ans.text = "Error"
- }
-
- // 添加音效
- val mediaPlayer = MediaPlayer.create(this, R.raw.click)
- mediaPlayer.start()
- }
- val b17 = findViewById<Button>(R.id.b17)
- b17.setOnClickListener {
- if (judgeInsertSign(gs, '%')) {
- gs = "${gs}%"
- showAns(ans)
- }
- text.text = showGs(gs)
-
- // 添加音效
- val mediaPlayer = MediaPlayer.create(this, R.raw.click)
- mediaPlayer.start()
- }
- val b18 = findViewById<Button>(R.id.b18)
- b18.setOnClickListener {
- gs = "${gs}0"
- text.text = showGs(gs)
- showAns(ans)
-
- // 添加音效
- val mediaPlayer = MediaPlayer.create(this, R.raw.click)
- mediaPlayer.start()
- }
- val b19 = findViewById<Button>(R.id.b19)
- b19.setOnClickListener {
- if (judgeInsertSign(gs, '.')) {
- gs = "${gs}."
- showAns(ans)
- }
- text.text = showGs(gs)
-
- // 添加音效
- val mediaPlayer = MediaPlayer.create(this, R.raw.click)
- mediaPlayer.start()
- }
- }
- }
- <?xml version="1.0" encoding="utf-8"?>
- <RelativeLayout 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"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical"
- tools:context=".MainActivity">
-
- <TextView
- android:id="@+id/calc"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginHorizontal="5dp"
- android:layout_marginTop="10dp"
- android:layout_marginBottom="10dp"
- android:background="@android:drawable/editbox_background"
- android:gravity="right"
- android:singleLine="true"
- android:text=""
- android:textSize="60sp" />
-
- <LinearLayout
- android:id="@+id/linear1"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_below="@id/calc"
- android:layout_marginHorizontal="5dp">
-
- <Button
- android:id="@+id/b_"
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:text="("
- android:textSize="20sp"
- android:layout_weight="1"
- android:layout_marginEnd="9dp"/>
-
- <Button
- android:id="@+id/_b"
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:text=")"
- android:textSize="20sp"
- android:layout_weight="1"
- android:layout_marginEnd="9dp"/>
-
- <TextView
- android:id="@+id/ans"
- android:layout_width="185dp"
- android:layout_height="match_parent"
- android:background="@android:drawable/editbox_background"
- android:singleLine="true"
- android:paddingVertical="30dp"
- android:text=""
- android:textSize="20sp"
- android:layout_weight="2"
- android:gravity="right"/>
-
- </LinearLayout>
-
- <LinearLayout
- android:id="@+id/linear23"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="vertical"
- android:layout_alignParentBottom="true"
- android:layout_below="@id/linear1">
-
- <LinearLayout
- android:id="@+id/linear2"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_weight="3"
- android:orientation="vertical">
-
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:layout_marginHorizontal="5dp">
-
- <Button
- android:id="@+id/b1"
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:text="C"
- android:textSize="20sp"
- android:layout_weight="1"
- android:layout_marginEnd="9dp"/>
-
- <Button
- android:id="@+id/b2"
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:text="/"
- android:textSize="20sp"
- android:layout_weight="1"
- android:layout_marginEnd="9dp"/>
-
- <Button
- android:id="@+id/b3"
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:text="X"
- android:textSize="20sp"
- android:layout_weight="1"
- android:layout_marginEnd="9dp"/>
-
- <Button
- android:id="@+id/b4"
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:text="DEL"
- android:textSize="20sp"
- android:layout_weight="1"/>
-
- </LinearLayout>
-
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:layout_marginHorizontal="5dp">
-
- <Button
- android:id="@+id/b5"
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:text="7"
- android:textSize="20sp"
- android:layout_weight="1"
- android:layout_marginEnd="9dp"/>
-
- <Button
- android:id="@+id/b6"
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:text="8"
- android:textSize="20sp"
- android:layout_weight="1"
- android:layout_marginEnd="9dp"/>
-
- <Button
- android:id="@+id/b7"
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:text="9"
- android:textSize="20sp"
- android:layout_weight="1"
- android:layout_marginEnd="9dp"/>
-
- <Button
- android:id="@+id/b8"
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:text="—"
- android:textSize="20sp"
- android:layout_weight="1"/>
-
- </LinearLayout>
-
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:layout_marginHorizontal="5dp">
-
- <Button
- android:id="@+id/b9"
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:text="4"
- android:textSize="20sp"
- android:layout_weight="1"
- android:layout_marginEnd="9dp"/>
-
- <Button
- android:id="@+id/b10"
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:text="5"
- android:textSize="20sp"
- android:layout_weight="1"
- android:layout_marginEnd="9dp"/>
-
- <Button
- android:id="@+id/b11"
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:text="6"
- android:textSize="20sp"
- android:layout_weight="1"
- android:layout_marginEnd="9dp"/>
-
- <Button
- android:id="@+id/b12"
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:text="+"
- android:textSize="20sp"
- android:layout_weight="1"/>
-
- </LinearLayout>
-
-
-
- </LinearLayout>
-
- <LinearLayout
- android:id="@+id/linear3"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- android:layout_weight="2"
- android:layout_marginHorizontal="5dp">
-
- <LinearLayout
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:orientation="vertical"
- android:layout_weight="3">
-
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_weight="1">
-
- <Button
- android:id="@+id/b13"
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:text="1"
- android:textSize="20sp"
- android:layout_weight="1"
- android:layout_marginEnd="9dp"/>
-
- <Button
- android:id="@+id/b14"
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:text="2"
- android:textSize="20sp"
- android:layout_weight="1"
- android:layout_marginEnd="9dp"/>
-
- <Button
- android:id="@+id/b15"
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:text="3"
- android:textSize="20sp"
- android:layout_weight="1"
- android:layout_marginEnd="9dp"/>
-
- </LinearLayout>
-
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_weight="1">
-
- <Button
- android:id="@+id/b17"
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:text="%"
- android:textSize="20sp"
- android:layout_weight="1"
- android:layout_marginEnd="9dp"/>
-
- <Button
- android:id="@+id/b18"
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:text="0"
- android:textSize="20sp"
- android:layout_weight="1"
- android:layout_marginEnd="9dp"/>
-
- <Button
- android:id="@+id/b19"
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:text="."
- android:textSize="20sp"
- android:layout_weight="1"
- android:layout_marginEnd="9dp"/>
-
-
- </LinearLayout>
-
- </LinearLayout>
-
- <LinearLayout
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:layout_weight="1">
-
- <Button
- android:id="@+id/b16"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:text="="
- android:textSize="20sp"/>
-
- </LinearLayout>
-
- </LinearLayout>
-
- </LinearLayout>
-
- </RelativeLayout>
代码粗糙博君一笑。。。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。