zoukankan      html  css  js  c++  java
  • 030 Android 第三方开源下拉框:NiceSpinner的使用+自定义Button样式+shape绘制控件背景图+图片选择器(selector)

    1.NiceSpinner下拉框控件介绍

    Android原生的下拉框Spinner基本上可以满足Android开发对于下拉选项的设计需求,但现在越来越流行的下拉框不满足于Android原生提供的下拉框Spinner所提供的设计样式,而改用自定制或者第三方设计的下拉框Spinner。NiceSpinner是一个第三方开源的下拉框Spinner。

    2.使用步骤

    (1)build.gradle(project)中一段代码替换为如下内容:(android studio工程的标配)

    buildscript {
        
        repositories {
            google()
            maven{url 'http://maven.aliyun.com/nexus/content/groups/public/'}
            maven { url "https://jitpack.io" }
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:3.2.0'
            // NOTE: Do not place your application dependencies here; they belong
            // in the individual module build.gradle files
        }
    }
    
    allprojects {
        repositories {
            maven{url 'http://maven.aliyun.com/nexus/content/groups/public/'}
            google()
            maven { url "https://jitpack.io" }
        }
    }

    (2)build.gradle(app)中添加依赖

    dependencies {
        implementation 'com.github.arcadefire:nice-spinner:1.4'
    }

    3.NiceSpinner下拉框控件的属性分析

    You can add attributes to customize the view. Available attributes:

    用户可以在xml文件布局中添加以下表格中的属性到NiceSpinner控件中,对NiceSpinner进行设置。

    arrowTint color 设置下拉箭头上的颜色
    hideArrow boolean
    设置是显示还是隐藏下拉箭头
    arrowDrawable reference set the drawable of the drop-down arrow
    textTint color 设置文本颜色
    dropDownListPaddingBottom dimension 设置下拉列表的底部填充(即设置下拉框控件的高度)

    4.使用案例

    (1)xml文件页面布局

    <1>主界面页面布局文件:activity_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"
        android:gravity="center"
        tools:context=".MainActivity">
    
        <!--app:arrowTint="@color/red" 设置下拉箭头的颜色-->
        <!--android:backgroundTint="@color/gray" 设置下拉框整体的颜色-->
        <!--app:textTint="@color/blue" 设置下拉框字体的颜色-->
        <!--android:backgroundTint="@color/pink" 设置整个空间的背景颜色-->
        <org.angmarch.views.NiceSpinner
            android:id="@+id/nice_spinner"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:arrowTint="@color/red"
            app:textTint="@color/blue"
            android:layout_margin="16dp"/>
    
        <Button
            android:id="@+id/bt_getvalue"
            android:text="获取选中值"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    
    </LinearLayout>

    <2>shape绘制NiceSpinner控件的背景图

    平常在开发当中,通常会遇到这样的情况,就是会给控件增加一个背景,比如button,textview等!可以说shape就是一个形状定义工具。是xml绘图当中非常重要的一个工具。

    使用shape一般是用来定义形状的,可以在xml上绘图,意思就是shape的表现形式就是一个xml文件,这个xml文件一般是放在drawable文件目录下,然后可以直接引用作为控件的背景。

    shape_nicespinner.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android" >
        <!-- view背景色 -->
        <solid android:color="#52a2e2" />
        <!-- 边框颜色 宽度 -->
        <stroke
            android:width="1dip"
            android:color="#52a2e2" />
        <!-- 边框圆角 -->
        <corners
            android:bottomRightRadius="6dp"
            android:topRightRadius="6dp"
            android:bottomLeftRadius="6dp"
            android:topLeftRadius="6dp"/>
    </shape>

    shape_button_bg_normal.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android" >
        <!-- view背景色 -->
        <solid android:color="@color/pink" />
        <!-- 边框颜色 宽度 -->
        <stroke
            android:width="1dip"
            android:color="@color/pink" />
        <!-- 边框圆角 -->
        <corners
            android:bottomRightRadius="15dp"
            android:topRightRadius="15dp"
            android:bottomLeftRadius="15dp"
            android:topLeftRadius="15dp"/>
    </shape>

    shape_button_bg_press.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android" >
        <!-- view背景色 -->
        <solid android:color="@color/blue" />
        <!-- 边框颜色 宽度 -->
        <stroke
            android:width="1dip"
            android:color="@color/blue" />
        <!-- 边框圆角 -->
        <corners
            android:bottomRightRadius="15dp"
            android:topRightRadius="15dp"
            android:bottomLeftRadius="15dp"
            android:topLeftRadius="15dp"/>
    </shape>

    <3>图片选择器selector应用

    selector_button.xml

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <!--选中用蓝色的图-->
        <item android:state_pressed="true" android:drawable="@drawable/shape_button_bg_press"></item>
        <!--未选中用粉色的图-->
        <item android:drawable="@drawable/shape_button_bg_normal"></item>
    </selector>

    (2)java后台

    package com.example.administrator.test64nicespinner;
    
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.Toast;
    
    import org.angmarch.views.NiceSpinner;
    
    import java.util.Arrays;
    import java.util.LinkedList;
    import java.util.List;
    
    public class MainActivity extends AppCompatActivity {
    
        Button bt_getvalue;
        NiceSpinner niceSpinner;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            initUI();
        }
    
        private void initUI() {
            bt_getvalue = findViewById(R.id.bt_getvalue);
            bt_getvalue.setBackgroundResource(R.drawable.selector_button); //给button设置自定义样式
            bt_getvalue.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Toast.makeText(getApplicationContext(),niceSpinner.getText(),Toast.LENGTH_SHORT).show();
                }
            });
            niceSpinner = findViewById(R.id.nice_spinner);
            List<String> dataset = new LinkedList<>(Arrays.asList("One", "Two", "Three", "Four", "Five"));
            niceSpinner.attachDataSource(dataset); //设置下拉框要显示的数据集合
            niceSpinner.setBackgroundResource(R.drawable.shape_nicespinner); //设置控件的形状和背景
        }
    }

    5.效果图

  • 相关阅读:
    ER图
    uml图
    第一个迭代任务的制作
    软件测试
    实训记录
    UML系列图——ER图
    UML系列图——用例图
    第一个迭代任务进度
    第一个迭代任务
    需求分析——WBS
  • 原文地址:https://www.cnblogs.com/luckyplj/p/10876418.html
Copyright © 2011-2022 走看看