返回顶部

收藏

演示用Groovy开发Android程序,实现一个IOS风格计算器界面(无计算器逻辑)

更多
package com.aruis.android.androidhomework1

import android.app.Activity
import android.graphics.Color
import android.os.Bundle
import android.util.DisplayMetrics
import android.util.TypedValue
import android.view.View
import android.view.ViewGroup
import android.widget.LinearLayout
import android.widget.LinearLayout.LayoutParams
import android.widget.TextView

public class MainActivity extends Activity {

    TextView textView;

    List buttonContents = [
            [E.AC, E.PN, E.PER, E.DIVIDE],
            [E.SEVEN, E.EIGHT, E.NINE, E.MULTIPLY],
            [E.FOUR, E.FIVE, E.SIX, E.MINUS],
            [E.ONE, E.TWO, E.THREE, E.PLUS],
            [E.ZERO, E.POINT, E.EQUAL]
    ]

    List buttonList = [];

    Long zeros = 1000000000000000
    Long zeros00 = zeros * 100

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.setContentView(R.layout.activity_main)

        DisplayMetrics dm = new DisplayMetrics()
        getWindowManager().getDefaultDisplay().getMetrics(dm)

        LayoutParams linearLayoutParams = new LayoutParams(LayoutParams.MATCH_PARENT, 0, 1)
        LayoutParams layoutParams_zero = new LayoutParams(0, LayoutParams.MATCH_PARENT, 2)
        LayoutParams layoutParams = new LayoutParams(0, LayoutParams.MATCH_PARENT, 1)

        textView = findViewById(R.id.textView)
        text = '0'
        int i = 0

        buttonContents.each {
            LinearLayout _layout = new LinearLayout(this);
            _layout.orientation = LinearLayout.HORIZONTAL

            _layout.layoutParams = linearLayoutParams
            int j = 0
            it.each { e ->
                MyButton btn = new MyButton(this, e);

                btn.layoutParams = e == E.ZERO ? layoutParams_zero : layoutParams
                btn.textSize = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 20, dm)

                if (j == 3 || (i == 4 && j == 2)) {
                    btn.backgroundResource = R.drawable.button_style_right
                    btn.textColor = Color.WHITE
                } else if (i == 0) {
                    btn.backgroundResource = R.drawable.button_style_top
                } else {
                    btn.backgroundResource = R.drawable.button_style
                }

                btn.setOnClickListener(clickListener)

                buttonList.add(btn)
                _layout.addView(btn)
                j++
            }
            ViewGroup contentParent = (ViewGroup) findViewById(16908290); //可以取得 activity_main.xml指定的布局
            LinearLayout _view = contentParent.getChildAt(0)
            _view.addView(_layout)
            i++
        }
    }

    /**
     * 计算功能未实现
     */
    View.OnClickListener clickListener = new View.OnClickListener() {
        @Override
        void onClick(View view) {
            E data = view.data;
            switch (data) {
                case E.AC:
                    text = '0'
                    break
                case E.PN:
                    if (text.indexOf('-') == 0)
                        text = text.substring(1)
                    else
                        text = '-' + text
                    break
                case E.PER:
                    text = text != '0' ? (text.toFloat() * zeros) / zeros00 : '0'//逻辑尚有bug
                    break
                case E.POINT:
                    if (text.indexOf('.') > -1)
                        break;
                case (E.POINT..E.NINE):
                    if (text == '0' && data.toString() != '.')
                        text = data.toString()
                    else
                        text += data.toString()
                    break
            }

        }
    }

    def setText(String s) {
        textView.text = s
    }

    String getText() {
        return textView.text
    }

}

标签:groovy

收藏

0人收藏

支持

0

反对

0

相关聚客文章
  1. TiuVe2 发表 2018-09-04 14:15:19 按钮条件逻辑配置化的可选技术方案
  2. 炒饭 发表 2015-11-25 03:20:12 用git布署网站的方法
  3. 炒饭 发表 2015-11-25 03:20:12 用git布署网站的方法
  4. 博主 发表 2018-04-25 06:46:00 Groovy Grape
  5. 博主 发表 2018-04-26 12:23:00 Groovy Ratpack
  6. 博主 发表 2018-04-26 12:23:00 Groovy Ratpack
  7. 博主 发表 2018-04-25 06:46:00 Groovy Grape
  8. 博主 发表 2018-02-07 09:05:17 IDEA 通过数据库生成 Nutz 实体类
  9. TiuVe2 发表 2018-01-06 13:23:06 使用 yaml+groovy 实现 Java 代码可配置化
  10. 博主 发表 2015-10-02 00:00:00 精通 Groovy
  11. 炒饭 发表 2015-11-25 03:20:12 用git布署网站的方法
  12. 炒饭 发表 2015-11-25 03:20:12 用git布署网站的方法

发表评论