当前位置: 首页 > news >正文

Android Studio简易项目|随机选择器(类似转盘)

一、背景

为了强化对flowlayout流式布局的理解和简易安卓项目架构结构的理解,写一个小项目,随机选择器,控制可见等

二、项目代码

2.1流式布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"android:padding="8dp"android:background="@drawable/item_background"><TextViewandroid:id="@+id/textView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textColor="@android:color/white"android:textSize="16sp"/>
</LinearLayout>
2.2布局文件
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"xmlns:app="http://schemas.android.com/apk/res-auto"><androidx.constraintlayout.widget.ConstraintLayoutandroid:id="@+id/tip"android:layout_width="wrap_content"android:layout_height="wrap_content"app:layout_constraintTop_toTopOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintEnd_toEndOf="parent"><EditTextandroid:id="@+id/tip_title"android:layout_width="200dp"android:layout_height="50dp"android:hint="@string/btn_edit"android:gravity="center"app:layout_constraintStart_toStartOf="parent"app:layout_constraintBottom_toBottomOf="parent"></EditText><android.widget.Buttonandroid:id="@+id/btn_save"android:layout_width="80dp"android:layout_height="40dp"android:layout_marginStart="@dimen/margin_200"android:layout_marginBottom="8dp"android:background="@drawable/btn_background"android:text="@string/btn_save"android:textColor="@color/white"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.0"app:layout_constraintStart_toEndOf="@+id/tip_title"></android.widget.Button></androidx.constraintlayout.widget.ConstraintLayout><com.google.android.material.internal.FlowLayoutandroid:id="@+id/flowLayout"android:layout_width="match_parent"android:layout_height="wrap_content"android:padding="16dp"android:orientation="horizontal"app:lineSpacing="@dimen/margin_80"android:layout_marginTop="@dimen/margin_100"app:layout_constraintTop_toBottomOf="@+id/tip"app:layout_constraintStart_toStartOf="parent"app:layout_constraintEnd_toEndOf="parent"></com.google.android.material.internal.FlowLayout><androidx.constraintlayout.widget.ConstraintLayoutandroid:id="@+id/selector"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="@dimen/margin_100"app:layout_constraintTop_toBottomOf="@id/flowLayout"app:layout_constraintStart_toStartOf="parent"app:layout_constraintEnd_toEndOf="parent"><android.widget.Buttonandroid:id="@+id/btn_random"android:layout_width="100dp"android:layout_height="80dp"android:textColor="@color/white"android:background="@drawable/btn_background"android:text="@string/btn_choose"app:layout_constraintTop_toTopOf="parent"app:layout_constraintStart_toStartOf="parent"></android.widget.Button><android.widget.Buttonandroid:id="@+id/btn_clear"android:layout_width="100dp"android:layout_height="80dp"android:textColor="@color/white"android:background="@drawable/btn_background"android:text="@string/btn_clear"android:layout_marginStart="60dp"app:layout_constraintTop_toTopOf="parent"app:layout_constraintStart_toEndOf="@+id/btn_random"></android.widget.Button></androidx.constraintlayout.widget.ConstraintLayout><androidx.constraintlayout.widget.ConstraintLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="@dimen/margin_400"app:layout_constraintTop_toBottomOf="@+id/selector"app:layout_constraintStart_toStartOf="parent"app:layout_constraintEnd_toEndOf="parent"android:id="@+id/sel_show"><TextViewandroid:id="@+id/sel_text"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/sel_ans"android:visibility="gone"android:textColor="@color/black"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"></TextView><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/sel_ans"android:visibility="gone"android:layout_marginStart="@dimen/margin_400"android:background="@drawable/btn_background"app:layout_constraintStart_toEndOf="@+id/sel_text"app:layout_constraintTop_toTopOf="parent"></TextView></androidx.constraintlayout.widget.ConstraintLayout></androidx.constraintlayout.widget.ConstraintLayout>
2.3 主要代码
package com.example.javatestwithleetcode.ui;import android.annotation.SuppressLint;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;import androidx.appcompat.app.AppCompatActivity;import com.example.javatestwithleetcode.R;
import com.example.javatestwithleetcode.utils.StringUtils;
import com.example.javatestwithleetcode.utils.ToastUtils;
import com.google.android.material.internal.FlowLayout;
import java.util.ArrayList;
import java.util.Random;public class MainActivity extends AppCompatActivity {private FlowLayout flowLayout;private ArrayList<String> dataList;private Button button;private Button save_btn;private EditText editText;private Button clear_btn;private TextView sel_ans;private TextView sel_title;@SuppressLint("ResourceAsColor")@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);initDatas();//也可以用implements然后switch-case 也可以拆开放三个方法里button.setOnClickListener(view -> {Random random=new Random();int i= random.nextInt(dataList.size());
//            ToastUtils.showToast(dataList.get(i));sel_ans.setText(dataList.get(i));sel_ans.setVisibility(View.VISIBLE);sel_title.setVisibility(View.VISIBLE);});save_btn.setOnClickListener(v->{editText=(EditText) findViewById(R.id.tip_title);if(StringUtils.isNotEmpty(editText.getText().toString()) ){dataList.add(editText.getText().toString());editText.setText("");// 将数据添加到FlowLayoutaddDataToFlowLayout(dataList);}else{ToastUtils.showToast("请输入后再保存");}});clear_btn.setOnClickListener(v->{dataList.clear();flowLayout.removeAllViews();sel_ans.setVisibility(View.GONE);sel_title.setVisibility(View.GONE);});}private void addDataToFlowLayout(ArrayList<String> dataList) {if(dataList.isEmpty()){return;}flowLayout.removeAllViews();LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT);layoutParams.setMargins(0, 0, getResources().getDimensionPixelSize(R.dimen.margin_100), 0);LayoutInflater inflater = LayoutInflater.from(this);for (String data : dataList) {View view = inflater.inflate(R.layout.item_flowlayout, flowLayout, false);TextView textView = view.findViewById(R.id.textView);textView.setText(data);textView.setPadding(getResources().getDimensionPixelSize(R.dimen.margin_40), getResources().getDimensionPixelSize(R.dimen.margin_40), getResources().getDimensionPixelSize(R.dimen.margin_40), getResources().getDimensionPixelSize(R.dimen.margin_40));textView.setSingleLine();textView.setTextColor(getResources().getColor(R.color.white));textView.setLayoutParams(layoutParams);flowLayout.addView(view,layoutParams);}}private void initDatas(){setContentView(R.layout.activity_main);dataList = new ArrayList<>();flowLayout = findViewById(R.id.flowLayout);sel_ans=(TextView) findViewById(R.id.sel_ans);sel_title=(TextView) findViewById(R.id.sel_text);sel_ans.setPadding(getResources().getDimensionPixelSize(R.dimen.margin_80),getResources().getDimensionPixelSize(R.dimen.margin_80),getResources().getDimensionPixelSize(R.dimen.margin_80),getResources().getDimensionPixelSize(R.dimen.margin_80));button =(Button) findViewById(R.id.btn_random);save_btn=(Button) findViewById(R.id.btn_save);clear_btn=(Button) findViewById(R.id.btn_clear);}
}

资源文件和mainfest还有工具类不作详细解释。

三、项目截图

图片放不出来。。。

四、重点

添加flowlayout,以及设置可见性,加强了对android studio项目中的textview edittext button的更深的认知,点击触发条件等,以及对constraintlayout,linerlayout和flowlayout也有了更深刻的认知


http://www.mrgr.cn/news/50067.html

相关文章:

  • 获取京东商品历史价格接口item_history_price介绍
  • 最大化似然估计?你知道什么叫”似然“吗?
  • Spring 实现 3 种异步流式接口,干掉接口超时烦恼
  • 预训练模型的使用方法
  • 如何在node.js中做快速傅立叶变换-(频谱)
  • SLAM中的加权最小二乘法
  • 解析:ARM 工业计算机在光伏储能中的关键作用
  • Skywalking介绍,Skywalking 9.4 安装,SpringBoot集成Skywalking
  • gbase8s之建表相关问题
  • C语言:在Visual Studio中使用C语言scanf输入%s出现的栈溢出问题
  • 量子噪声与量子操作
  • 谷歌浏览器主题和皮肤设置教程
  • Jetpack-ViewModel+LiveData+DataBinding
  • docker删除容器要怎么操作?如何保障容器安全!
  • leetcode哈希表(二)-两个数组的交集
  • 图新地球移动端(外业精灵)产品入门指南
  • js的基础问题
  • 今日最佳WAF雷池社区版,tengine问题解决办法
  • Mongo开启执行splitVector命令
  • 部署带证书的docker高可用的私有仓库harbor