家庭记账本app进度之下拉框和数字转轮的相关应用

这次主要是悬系的下拉框Spinner和数字转轮NumberPicker的使用。先分析相关的用到的知识点。

在Android中,用string-array是一种简单的提取XML资源文件数据的方法。
  例子如下:

  把相应的数据放到values文件夹的arrays.xml文件里

<?xml version="1.0" encoding="utf-8"?>
  <resources>
      <string-array name="city">
          <item>丰台区</item>
          <item>石景山区</item>
          <item>海淀区</item>
          <item>漳州市</item>
          <item>朝阳区</item>
      </string-array>
  </resources>

  然后在Activity里,直接使用
  Resources res =getResources();
  String[] city=res.getStringArray(R.array.city);
  即可取得string-array name="city"下的所有item数据,简单又方便的一种方法

对于

private AdapterView.OnItemSelectedListener spnSexOnItemSelected=new AdapterView.OnItemSelectedListener() {}中的相关参数的知识点:
  1. parent 发生选中事件的 AbsListView。
  2. view AbsListView 中被选中的视图。
  3. position 视图在一览中的位置(索引)。
  4. id 被点击条目的行 ID。
private AdapterView.OnItemSelectedListener spnSexOnItemSelected=new AdapterView.OnItemSelectedListener() {    @Override    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {        msSex=parent.getSelectedItem().toString();    }是用来确定下拉框中对应的被选中的哪一项。具体相关的实现代码如下:MainActivity.java
package com.example.myapplicationhome;
import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.NumberPicker;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Spinner;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    private NumberPicker mNumPickerAge;
    private Button mBtnOk;
    private TextView mTxtR,mTxtAge;
    private Spinner mSpnSex;
    private String msSex;

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

        mTxtAge=(TextView)findViewById(R.id.txtAge);
        mTxtAge.setText("25");

        mNumPickerAge=(NumberPicker)findViewById(R.id.numPickerAge);

        mNumPickerAge.setMinValue(0);
        mNumPickerAge.setMaxValue(200);
        mNumPickerAge.setValue(25);

        mNumPickerAge.setOnValueChangedListener(numPickerAgeOnValueChange);

        mBtnOk=(Button)findViewById(R.id.btnOk);
        mTxtR=(TextView)findViewById(R.id.txtR);

        mBtnOk.setOnClickListener(btnOkOnClick);
        mSpnSex=(Spinner)findViewById(R.id.spnSex);
        mSpnSex.setOnItemSelectedListener(spnSexOnItemSelected);

    }

    private View.OnClickListener btnOkOnClick =new View.OnClickListener(){
        @Override
        public void onClick(View v) {
            int iAge=mNumPickerAge.getValue();
            String strSug=getString(R.string.result);

            if(msSex.equals(getString(R.string.sex_male)))
            {
                if(iAge<28)
                    strSug+=getString(R.string.sug_not_hurry);
                else if(iAge>33)
                    strSug+=getString(R.string.sug_get_married);
                else
                    strSug+=getString(R.string.sug_find_couple);
            }
            else
            {
                if(iAge<25)
                    strSug+=getString(R.string.sug_not_hurry);
                else if(iAge>30)
                    strSug+=getString(R.string.sug_get_married);
                else
                    strSug+=getString(R.string.sug_find_couple);
            }
            mTxtR.setText(strSug);
        }
    };

    private AdapterView.OnItemSelectedListener spnSexOnItemSelected=new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            msSex=parent.getSelectedItem().toString();
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    };
    private NumberPicker.OnValueChangeListener numPickerAgeOnValueChange=new NumberPicker.OnValueChangeListener() {
        @Override
        public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
            mTxtAge.setText(String.valueOf(newVal));
        }
    };
}

strings.xml

<resources>
    <string name="app_name">婚姻建议程序</string>
    <string name="sex">性别:</string>
    <string name="age">年龄:</string>
    <string name="btn_ok">确定</string>
    <string name="result">最终诊断结果:</string>
    <string name="edt_age_hint">(输入年龄)</string>
    <string name="sug_not_hurry">还不急</string>
    <string name="sug_get_married">你废了!</string>
    <string name="sug_find_couple">开始找对象。</string>
    <string name="sex_male">男</string>
    <string-array name="sex_list">
        <item>男</item>
        <item>女</item>
    </string-array>
    <string name="spn_sex_list_prompt">请选择性别</string>

</resources>

activaty_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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/sex"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/sex"
        android:textSize="25sp" />
    <Spinner
        android:id="@+id/spnSex"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:entries="@array/sex_list"
        android:spinnerMode="dialog"
        android:prompt="@string/spn_sex_list_prompt" />
    <TextView
        android:id="@+id/age"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/age"
        android:textSize="25sp" />
    <TextView
        android:id="@+id/txtAge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="0"
        android:textSize="25sp" />
    <NumberPicker
        android:id="@+id/numPickerAge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="left" />
    <Button
        android:id="@+id/btnOk"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:background="#4CAF50"
        android:text="@string/btn_ok" />

    <TextView
        android:id="@+id/txtR"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/result"
        android:textSize="25sp" />
</LinearLayout>

具体的实验结果如下:

原文地址:https://www.cnblogs.com/dazhi151/p/12243406.html

时间: 2024-08-29 16:14:07

家庭记账本app进度之下拉框和数字转轮的相关应用的相关文章

家庭记账本app进度之android中AlertDialog的相关应用以及对日期时间的相关操作(应用alertdialog使用的谈话框)

对于AlertDialog的相关知识: 1.创建构造器AlertDialog.Builder的对象:    2.通过构造器对象调用setTitle.setMessage.setIcon等方法构造对话框的标题.信息和图标等内容:    3.根据需要调用setPositive/Negative/NeutralButton()方法设置正面按钮.负面按钮和中立按钮:    4.调用构造器对象的create方法创建AlertDialog对象:    5.AlertDialog对象调用show方法,让对话框

家庭记账本app进度之ui相关概念控制ui界面与布局管理

ui就是用户界面设计的意思. 首先是view,view相当于窗户上的玻璃. 1.android:id属性.android:id="@+id/user".他的id是user前面的@+id是固定的写法. 2.android.background.当应用图片资源的时候这样写需要经名字为bg的相关图片般存在mi pmap这个里面才可以使用. 这样是设置背景颜色.后边是16进制的颜色 3.android.padding属性设置上下左右四个方向的内边距 这样写就是上下左右都一样这是分别进行设置的.

进度2_家庭记账本App

今天在昨天的基础上,相继完成了三个页面的布局和显示情况: 新增加的xml文件如下: activity_add.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/a

家庭版记账本app进度之对于按钮的点击事件以及线性布局以及(alertdialog)等相关内容的应用测试

通过线性布局,制作出连个按钮还有文本输入框以及嘴上放的标题文本进行信息的相关显示,完后最后的信息的输入,之后在屏幕的的下方进行显示 当点击第一个按钮的时候,在下方就会简单的出现你自己刚刚输入的相关信息.主要是训练的是对于客户输入信息的一个简单的获取, 并进行比较见得的在屏幕上输出.具体的结果截屏如下: 最后对alertdialog进行相关的应用 AlertDialog可以在当前页面弹出一个对话框,在所有界面元素之上,可以屏蔽掉界面其他控件的交互能力,因此AlertDialog一般用于提示一些非常

家庭记账本app实现登录注册界面以及仿微信操作界面(共4个实现一个)遇到了麻烦

今天学习了数据的创建,以及关于数据库的相关操作. 今天主要是实现了对于数据库的增加和查找. 具体的代码如下: 首先是数据库的创建: DBOpenMessage.java package com.example.thetrueappwen; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; im

家庭记账本Android登录界面

MainActivity.java package com.example.logindemo; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onC

App列表之下拉刷新

Android的ListView是应用最广的一个组件,功能强大,扩展性灵活(不局限于ListView本身一个类),前面的文章有介绍分组,拖拽,3D立体,游标,圆角,而今天我们要介绍的是另外一个扩展ListView:下拉刷新的ListView.    下拉刷新界面最初流行于iphone应用界面,如图: 然后在Android中也逐渐被应用,比如微博,资讯类.    所以,今天要实现的结果应该也是类似的,先贴出最终完成效果,如下图,接下来我们一步一步实现. 1. 流程分析    下拉刷新最主要的流程是

Python自动化之下拉框,隐藏标签定位 代码&报错解决

python自动化:下拉框定位方法之select标签 style="display: none;"报错selenium.common.exceptions.ElementNotVisibleException: Message: element not visible: Element is not currently visible and may not be manipulated 界面源码:(禅道为例)排查:1)因为是隐藏的,需要操作其可见才可定位 2)若还是无法定位,请查看前

ASP.NET MVC之下拉框绑定四种方式(十)

前言 上两节我们讲了文件上传的问题,关于这个上传的问题还未结束,我也在花时间做做分割大文件处理以及显示进度的问题,到时完成的话再发表,为了不耽误学习MVC其他内容的计划,我们今天开始好好讲讲关于MVC中下拉框中绑定枚举的几种方式. 话题引入 一般在下拉框中绑定数据的话,分为几种情况. (1)下拉框中的数据是写死的,我们直接给出死代码即可. (2)下拉框中的数据从数据库中读取出来,从而进行显示. (3)下拉框中直接用枚举显示. (4)下拉框中一个选择的值改变另外一个下拉框中的值. 关于下拉框中绑定