zoukankan      html  css  js  c++  java
  • Android基础-UI界面(项目实战 点菜界面) 1.EditText 2.SeekBar 3.CheckBox 4.ToggleButton 5.RadioGroup 6.Button 7.TextView 8.ImageView

    界面 设置采用了线性布局

    第一个是TextView 

    第二个是线性布局

    使用的控件有1.EditText 2.SeekBar 3.CheckBox 4.ToggleButton 5.RadioGroup 6.Button 7.TextView  8.ImageView 

                        

    <?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:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:background="#B9B9FF"
            android:gravity="center_horizontal"
            android:text="开始选餐"
            android:textSize="32sp" />
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="center_horizontal"
            android:layout_marginTop="15dp"
            android:orientation="vertical">
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:orientation="vertical"
                android:layout_weight="1">
    
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="15dp">
                    <TextView
                        android:layout_width="50dp"
                        android:layout_height="match_parent"
                        android:textSize="22sp"
                        android:text="姓名"
                        android:gravity="center_vertical"/>
                    <EditText
                        android:id="@+id/mEditName"
                        android:layout_width="230dp"
                        android:layout_height="match_parent"
                        android:hint="请输入姓名" />
                </LinearLayout>
    
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="15dp"
                    android:orientation="horizontal">
                    <TextView
                        android:layout_width="50dp"
                        android:layout_height="match_parent"
                        android:textSize="22sp"
                        android:text="性别"
                        android:gravity="center_vertical"/>
                    <RadioGroup
                        android:id="@+id/mRadioSex"
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"
                        android:orientation="horizontal">
                        <RadioButton
                            android:id="@+id/male"
                            android:checked="true"
                            android:layout_width="70dp"
                            android:layout_height="match_parent"
                            android:text="男"/>
    
                        <RadioButton
                            android:id="@+id/female"
                            android:layout_width="70dp"
                            android:layout_height="match_parent"
                            android:text="女"/>
    
                    </RadioGroup>
                </LinearLayout>
    
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="15dp"
                    android:orientation="horizontal">
                    <TextView
                        android:layout_width="50dp"
                        android:layout_height="match_parent"
                        android:textSize="22sp"
                        android:text="喜好"
                        android:gravity="center_vertical"/>
                    <CheckBox
                        android:id="@+id/isHotCheck"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="辣"/>
                    <CheckBox
                        android:id="@+id/isFishCheck"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="海鲜"/>
                    <CheckBox
                        android:id="@+id/isSoulCheck"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="酸"/>
                </LinearLayout>
    
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="15dp"
                    android:orientation="horizontal">
                    <TextView
                        android:layout_width="50dp"
                        android:layout_height="match_parent"
                        android:textSize="22sp"
                        android:text="预算"
                        android:gravity="center_vertical"/>
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"
                        android:gravity="center_vertical">
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="0元"/>
                        <SeekBar
                            android:id="@+id/PriceSeekBar"
                            android:layout_width="0dp"
                            android:layout_height="wrap_content"
                            android:layout_weight="1"
                            />
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="100元"
                            />
                    </LinearLayout>
                </LinearLayout>
    
                <Button
                    android:id="@+id/selectFood"
                    android:layout_width="220dp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_horizontal"
                    android:layout_marginTop="15dp"
                    android:text="寻找菜品"
                    app:backgroundTint="#E1D6D6" />
            </LinearLayout>
    
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="1"
                android:orientation="vertical">
    
                    <ImageView
                        android:id="@+id/imageFood"
                        android:layout_height="0dp"
                        android:layout_width="match_parent"
                        android:layout_weight="3"/>
    
                    <ToggleButton
                        android:id="@+id/showToggleButton"
                        android:layout_width="200dp"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center_horizontal"
                        android:layout_marginTop="15dp"
                        android:checked="true"
                        android:textOn="显示信息"
                        android:textOff="下一个"
                        app:backgroundTint="#E1D6D6" />
    
            </LinearLayout>
        </LinearLayout>
    </LinearLayout>

    Java代码

    第一步:初始化数据(init)用于获得控件

    第二步:添加数据(initData)添加菜谱的数据 

    第三步:  设置按钮点击事件(setListener)

    MainActivity.java

    package com.example.ofoodselection;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.os.Bundle;
    import android.text.Editable;
    import android.text.TextWatcher;
    import android.view.View;
    import android.widget.Button;
    import android.widget.CheckBox;
    import android.widget.CompoundButton;
    import android.widget.EditText;
    import android.widget.ImageView;
    import android.widget.RadioGroup;
    import android.widget.SeekBar;
    import android.widget.Toast;
    import android.widget.ToggleButton;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class MainActivity extends AppCompatActivity {
    
        private EditText mEditName;
        private RadioGroup mRadioSex;
        private CheckBox mIsHotCheck;
        private CheckBox mIsFishCheck;
        private CheckBox mIsSoulCheck;
        private SeekBar mPriceSeekBar;
        private Button mSelectFood;
        private ImageView mImageFood;
        private ToggleButton mShowToggleButton;
        private List<Food> mFoods;
        private List<Food> mFoodsResult;
        private Person mPerson;
        private Boolean mFish = false;
        private Boolean mHot = false;
        private Boolean mSoul = false;
        private int mPrice;
        private int mCurrentFoodIndex;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            //初始化按钮
            init();
            //初始化数据
            initData();
            //设置监听事件
            setListener();
    
        }
    
        private void setListener() {
            mEditName.addTextChangedListener(new TextWatcher() {
                @Override
                public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    
                }
    
                @Override
                public void onTextChanged(CharSequence s, int start, int before, int count) {
    
                }
    
                @Override
                public void afterTextChanged(Editable s) {
                    mPerson.setName(s.toString());
                }
            });
    
            mRadioSex.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(RadioGroup group, int checkedId) {
                    switch (checkedId) {
                        case R.id.male:
                            mPerson.setSex("男");
                        case R.id.female:
                            mPerson.setSex("女");
                    }
                }
            });
    
            mIsHotCheck.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                    mHot = isChecked;
                }
            });
    
            mIsFishCheck.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                    mFish = isChecked;
                }
            });
    
            mIsSoulCheck.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                    mSoul = isChecked;
                }
            });
            mPriceSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
                @Override
                public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
    
                }
    
                @Override
                public void onStartTrackingTouch(SeekBar seekBar) {
    
                }
    
                @Override
                public void onStopTrackingTouch(SeekBar seekBar) {
                    mPrice = seekBar.getProgress();
                    Toast.makeText(MainActivity.this, "价格:" + mPrice, Toast.LENGTH_SHORT).show();
                }
            });
    
            mSelectFood.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    findFood();
                }
            });
    
            mShowToggleButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (mShowToggleButton.isChecked()){
                        mCurrentFoodIndex++;
                        if (mCurrentFoodIndex < mFoodsResult.size()) {
                            mImageFood.setImageResource(mFoodsResult.get(mCurrentFoodIndex).getPic());
                        }else{
                            Toast.makeText(MainActivity.this, "没有菜品了", Toast.LENGTH_SHORT).show();
                            mImageFood.setImageResource(R.drawable.ic_launcher_foreground);
                        }
                    } else {
                        if (mCurrentFoodIndex < mFoodsResult.size()) {
                            Toast.makeText(MainActivity.this, "菜品:" + mFoodsResult.get(mCurrentFoodIndex).getName() + "姓名:" + mPerson.getName() + "性别:" + mPerson.getSex(), Toast.LENGTH_SHORT).show();
                        }
                    }
                }
            });
        }
    
        private void findFood() {
            if (mFoodsResult == null) {
                mFoodsResult = new ArrayList<>();
            }
            mShowToggleButton.setChecked(true);
            mFoodsResult.clear();
            for (int i = 0; i < mFoods.size(); i++) {
                Food food = mFoods.get(i);
                if(food.getPrice() < mPrice &&
                        ((food.isHot() == mHot && food.isHot())
                                || (food.isFish() == mFish && food.isFish())
                                || (food.isSoul() == mSoul && food.isSoul())
                                || (food.isFish() == mFish && food.isHot() == mHot && food.isSoul() == mSoul)))
                {
                    mFoodsResult.add(food);
                }
            }
            mCurrentFoodIndex = 0;
            if (mFoodsResult.size() > mCurrentFoodIndex) {
                mImageFood.setImageResource(mFoodsResult.get(mCurrentFoodIndex).getPic());
            } else{
                mImageFood.setImageResource(R.drawable.ic_launcher_foreground);
                Toast.makeText(MainActivity.this, "没有菜品了", Toast.LENGTH_SHORT).show();
            }
    
        }
    
        public void initData() {
            mFoods = new ArrayList<>();
    
            mFoods.add(new Food("麻辣香锅", 55, R.drawable.malaxiangguo, true, false, false));
            mFoods.add(new Food("水煮鱼", 48, R.drawable.shuizhuyu, true, true, false));
            mFoods.add(new Food("麻辣火锅", 80, R.drawable.malahuoguo, true, true, false));
            mFoods.add(new Food("清蒸鲈鱼", 68, R.drawable.qingzhengluyu, false, true, false));
            mFoods.add(new Food("桂林米粉", 15, R.drawable.guilin, false, false, false));
            mFoods.add(new Food("上汤娃娃菜", 28, R.drawable.wawacai, false, false, false));
            mFoods.add(new Food("红烧肉", 60, R.drawable.hongshaorou, false, false, false));
            mFoods.add(new Food("木须肉", 40, R.drawable.muxurou, false, false, false));
            mFoods.add(new Food("酸菜牛肉面", 35, R.drawable.suncainiuroumian, false, false, true));
            mFoods.add(new Food("西芹炒百合", 38, R.drawable.xiqin, false, false, false));
            mFoods.add(new Food("酸辣汤", 40, R.drawable.suanlatang, true, false, true));
    
            mPerson = new Person();
    
            mPerson.setSex("男");
        }
    
        public void init() {
            mEditName = findViewById(R.id.mEditName);
            mRadioSex = findViewById(R.id.mRadioSex);
            mIsHotCheck = findViewById(R.id.isHotCheck);
            mIsFishCheck = findViewById(R.id.isFishCheck);
            mIsSoulCheck = findViewById(R.id.isSoulCheck);
            mPriceSeekBar = findViewById(R.id.PriceSeekBar);
            mSelectFood = findViewById(R.id.selectFood);
            mImageFood = findViewById(R.id.imageFood);
            mShowToggleButton = findViewById(R.id.showToggleButton);
    
    
        }
    }

    Food.java 属性(名字,价格,图片id, 辣,海鲜,酸)

    package com.example.ofoodselection;
    
    public class Food {
    
        private String name;
        private int price;
        private int pic;
        private boolean hot;
        private boolean fish;
        private boolean soul;
        public Food(String name, int price, int pic, boolean hot, boolean fish, boolean soul) {
            this.name = name;
            this.price = price;
            this.pic = pic;
            this.hot = hot;
            this.fish = fish;
            this.soul = soul;
        }
    
    
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getPrice() {
            return price;
        }
    
        public void setPrice(int price) {
            this.price = price;
        }
    
        public int getPic() {
            return pic;
        }
    
        public void setPic(int pic) {
            this.pic = pic;
        }
    
        public boolean isHot() {
            return hot;
        }
    
        public void setHot(boolean hot) {
            this.hot = hot;
        }
    
        public boolean isFish() {
            return fish;
        }
    
        public void setFish(boolean fish) {
            this.fish = fish;
        }
    
        public boolean isSoul() {
            return soul;
        }
    
        public void setSoul(boolean soul) {
            this.soul = soul;
        }
    }

    Person.java 属性 名字 性别 

    package com.example.ofoodselection;
    
    public class Person {
    
        private String name;
        private String sex;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getSex() {
            return sex;
        }
    
        public void setSex(String sex) {
            this.sex = sex;
        }
    
    
    
    }

  • 相关阅读:
    Mycat适合场景及不适合场景
    solr与Elasticsearch对比
    分布式搜索之搭建Solrcloud(Solr集群)
    Mysql索引最左匹配原则
    CAS实现单点登录SSO执行原理及部署
    Spring Cloud,Dubbo及HSF对比
    Dubbo支持的协议的详解
    Dubbo架构设计详解
    几种分布式锁的实现方式
    深入分析volatile的实现原理
  • 原文地址:https://www.cnblogs.com/my-love-is-python/p/14553091.html
Copyright © 2011-2022 走看看