高级控件

1.自动完成文本控件

在搜索引擎(百度、搜狗)输入几个文字,会出来一些提示。可以减少用户的输入,提高程序的效率。刚才看到的自动提示,ajax技术。

1.1AotoCompleteTextView

​ 取消下拉:Esc或BackSpace键

步骤:

1.定义一个字符串数组(有后台了,从后台读取),用于保存自动提示的数据。

2.将此字符串数组放入到数组适配器(ArrayAdapter)。

3.利用AutoCompleteTextView的setAdapter()方法,将字符串数组加入到AutoCompleteTextView对象中,设置自动完成文本控件的适配器。

2.MutilAutoCompleteTextView

 <TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="自动完成文本框实例"android:textSize="20dp"/><!--加入实例--><AutoCompleteTextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:id="@+id/myAuto"android:hint="请输入您需要的城市"/><!--加入多行    --><MultiAutoCompleteTextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:id="@+id/myMulti"android:hint="请输入您需要的城市名称"/>

后台代码:

package com.aaa.zyg001;
// 这个是包的定义
//import导入相关的类;
import androidx.appcompat.app.AppCompatActivity;import android.graphics.Color;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.KeyEvent;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.MultiAutoCompleteTextView;
import android.widget.RadioGroup;
import android.widget.Switch;
import android.widget.TextView;
import android.widget.ToggleButton;import org.w3c.dom.Text;import java.util.Calendar;
//直接这个类,实现一个抽象类的抽象方法
public class MainActivity extends AppCompatActivity {//1.定义字符串数组;String[]arr={"郑州","安阳","洛阳","驻马店","安庆","安溪","安阳西","安阳东"};AutoCompleteTextView myAuto;MultiAutoCompleteTextView myMulti;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//获取内容//1.当前对象,单行项目行;填充内容ArrayAdapter<String>adapter=new ArrayAdapter<>(this, android.R.layout.simple_dropdown_item_1line,arr);
//        System.out.println(adapter+"-------");myAuto=(AutoCompleteTextView)findViewById(R.id.myAuto);myMulti=(MultiAutoCompleteTextView)findViewById(R.id.myMulti);System.out.println(myAuto+"======");myAuto.setAdapter(adapter);//设置显示自动提示需要的字符串myAuto.setThreshold(1);//-------------------------------------------------------------myMulti.setAdapter(adapter);//用来区分不同的子串;myMulti.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());myMulti.setThreshold(1);}
}

效果图:

2.下拉列表控件

Spinner,当用户单击该控件的时候,弹出选择列表供用户选择,且只能选择一项。同网页中的Select,同C#中的Combox。

使用步骤:

1.先定义一个字符串数组,用于保存下拉列表的数据;在实际使用中,可以从数据库获取数据;

2.将此字符串数组存入数组适配器(ArrayAdapter)。

3.利用Spinner的setAdapter()方法,将适配器加入到Spinner对象中,设置自动完成文本框的适配器。

属性:

spinnerMode 设置下拉列表的模式;dialog或者dropdown

dropDownWidth getDropDownWidth()

​ setDropDownWidth(int pix) 设置下拉框的宽度

gravity getGravity()/setGravity() 设置选定项目的对齐方式

事件

​ setOnItemSelectedListener(AdapterView.OnItemSelectedListener) 当列表被选中时触发的事件


<!--设计界面    --><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:id="@+id/tv"android:text="请选择城市"android:textSize="20dp"/><Spinnerandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:id="@+id/citySp"android:spinnerMode="dropdown"/><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:id="@+id/tv_city"android:textSize="20dp"/>

后台代码

  //1.变量和数据的声明TextView tv_city;Spinner citySp;//字符串数组String[]arr={"深圳","东莞","珠海","哈尔滨"};//获取内容tv_city=(TextView) findViewById(R.id.tv_city);citySp=(Spinner) findViewById(R.id.citySp);//适配器:和自动完成文本一致ArrayAdapter<String>adapter=new ArrayAdapter<>(this, android.R.layout.simple_spinner_item,arr);citySp.setAdapter(adapter);//下拉列表的事件citySp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){@Overridepublic void onItemSelected(AdapterView<?> parent, View view, int position,long id) {//当我们在下拉列表上单击tv_city.setText(arr[position]);}@Overridepublic void onNothingSelected(AdapterView<?> adapterView) {}});

效果图:

3.进度条和滑块

进度条:

用于某些资源的加载、文件下载和大量数据处理等,使用进度条为用户提供明确的操作结束时间,让用户能够了解目前程序的进度及其状态。

3.1 ProgressBar

属性:

max getMax() setMax() 设置或获取进度条的上限

progress getProgress() setProgress() 设置或获取进度条的进度

 <TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="文件下载进度"android:textSize="20dp"/><ProgressBarandroid:layout_width="match_parent"android:layout_height="wrap_content"android:id="@+id/fileDown"style="?android:attr/progressBarStyleHorizontal"/><ProgressBarandroid:layout_width="match_parent"android:layout_height="wrap_content"/><Buttonandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="模拟文件下载"android:id="@+id/btn_progress"/>

后台代码

public class MainActivity extends AppCompatActivity {//1.变量ProgressBar fileDown;Button btnProgress;int progress=0;     //进度为0int max=102400;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//============================fileDown=(ProgressBar) findViewById(R.id.fileDown);btnProgress=(Button)findViewById(R.id.btn_progress);//设置进度条的最大值fileDown.setMax(max);//设置按钮的事件btnProgress.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {//一步一步来int seed=max-progress;Random random=new Random();int current=random.nextInt(seed);progress=progress+current;fileDown.setProgress(progress);}});}
}

运行效果:

nt seed=max-progress;
Random random=new Random();
int current=random.nextInt(seed);

            progress=progress+current;fileDown.setProgress(progress);}});}

}


运行效果:![在这里插入图片描述](https://img-blog.csdnimg.cn/d8593d6b74d24504b62c84d7694e1f38.png#pic_center)**4.滑块案例**SeekBar控件,用来接收用户输入的控件,类似于拖动条,可以直观的显示用户需要的数据。可以显示数值,也可以设置标度。设置音量,使用滑块。```xml<TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="调节音量"android:textSize="20dp"/><SeekBarandroid:layout_width="match_parent"android:layout_height="wrap_content"android:id="@+id/sk_vol"/><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:id="@+id/tv_cur"/>

后台代码

public class MainActivity extends AppCompatActivity {//1.设计变量 对象SeekBar sk_vol;AudioManager myAudio;   //声音管理对象;TextView tv_cur;        //当前声音的提示@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//-------------------------------------------------sk_vol=(SeekBar) findViewById(R.id.sk_vol);tv_cur=(TextView)findViewById(R.id.tv_cur);//获取系统声音服务;myAudio=(AudioManager) getSystemService(Context.AUDIO_SERVICE);//音乐流声音最大值int maxVol=myAudio.getStreamMaxVolume(AudioManager.STREAM_MUSIC);//当前系统声音;int sysVol=myAudio.getStreamVolume(AudioManager.STREAM_MUSIC);//绑定到滑块sk_vol.setMax(maxVol);sk_vol.setProgress(sysVol);sk_vol.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {@Overridepublic void onProgressChanged(SeekBar seekBar, int i, boolean b) {//当滑动的时候,不能划到负数int tempInt=seekBar.getProgress();if(tempInt<1)tempInt=1;myAudio.setStreamVolume(AudioManager.STREAM_MUSIC,tempInt,0);tv_cur.setText("当前音量:"+tempInt);}@Overridepublic void onStartTrackingTouch(SeekBar seekBar) {}@Overridepublic void onStopTrackingTouch(SeekBar seekBar) {}});}
}

显示效果

5.列表视图

listView是一个常用的控件,会根据屏幕大小,把具体的内容以列表的形式显示出来,例如电话本、通信记录等。

属性

choiceMode 选择模式:list没有选择模式:none;singleChoice 一项选中;multipleChoice:多项选中。

divider: 项目之间用某个图形或颜色来分割。

dividerHeight 分割符的高度。

方法

setOnItemClickLister(AdapterView.OnItemClickListener) 列表项被单击时触发的事件

setOnItemSelectedListener(AdapterView.OnItemSelectedListener) 当列表项改变时被触发的事件

getCheckedItemIds() 返回检查项目标识的集合

4个xml界面文件

1.activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="列表视图案例"android:textSize="20dp"/><Buttonandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:id="@+id/btn_arr"android:text="使用ArrayAdapter为ListView绑定数据"/><Buttonandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:id="@+id/btn_simple"android:text="使用SimpleAdapter为ListView绑定数据"/>
</LinearLayout>

2.arrayadapter.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="这是一个ArrayAdapter的案例"android:textSize="20dp"/><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:id="@+id/tv_content"/><!--    arrayList,分割颜色;#5555555,行高5px--><ListViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:id="@+id/arrayList"android:divider="#555555"android:dividerHeight="5px"/>
</LinearLayout>

3.simpleadapter.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent">
<!--    设计界面--><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="热歌排行榜"android:textSize="20dp"/><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="horizontal"><TextViewandroid:layout_width="0dp"android:layout_height="wrap_content"android:text="歌曲"android:layout_weight="1"/><TextViewandroid:layout_width="0dp"android:layout_height="wrap_content"android:text="歌手"android:layout_weight="1"/><TextViewandroid:layout_width="0dp"android:layout_height="wrap_content"android:text="时长"android:layout_weight="1"/></LinearLayout><ListViewandroid:layout_width="fill_parent"android:layout_height="fill_parent"android:divider="#555555"android:dividerHeight="1dp"android:id="@+id/simpleAdapter"/>
</LinearLayout>

4.list.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="horizontal"android:layout_width="fill_parent"android:layout_height="fill_parent"><!-- 设计界面   --><TextViewandroid:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:id="@+id/song_name"/><TextViewandroid:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:id="@+id/singer"/><TextViewandroid:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:id="@+id/album"/>
<!--    横向线性布局,4个TextView--><TextViewandroid:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:id="@+id/duration"/>
</LinearLayout>

3个java代码

1.MainActivity.java

package com.aaa.zyg001;
// 这个是包的定义
//import导入相关的类;
import androidx.appcompat.app.AppCompatActivity;import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.media.AudioManager;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.KeyEvent;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.MultiAutoCompleteTextView;
import android.widget.ProgressBar;
import android.widget.RadioGroup;
import android.widget.SeekBar;
import android.widget.Spinner;
import android.widget.Switch;
import android.widget.TextView;
import android.widget.ToggleButton;import org.w3c.dom.Text;import java.util.Calendar;
import java.util.Random;//直接这个类,实现一个抽象类的抽象方法
public class MainActivity extends AppCompatActivity {Button btn_ArrayAdapter;Button btn_SimpleAdapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//======数组适配器初始化;参数:this当前对象;1行;数组内容//获取变量对应的控件btn_ArrayAdapter=(Button)findViewById(R.id.btn_arr);btn_SimpleAdapter=(Button)findViewById(R.id.btn_simple);//下面是监听事件btn_ArrayAdapter.setOnClickListener(new View.OnClickListener(){/*** 需要用到后面的技术点;* @param view*/@Overridepublic void onClick(View view) {Intent intent=new Intent();//需要增加该类intent.setClass(MainActivity.this,ArrayAdapterActivity.class);//启动;startActivity(intent);}});btn_SimpleAdapter.setOnClickListener(new Button.OnClickListener(){@Overridepublic void onClick(View view) {Intent intent=new Intent();//需要增加该类intent.setClass(MainActivity.this,SimpleAdapterActivity.class);//启动;startActivity(intent);}});}
}

2.ArrayAdapterActivity.java

package com.aaa.zyg001;import android.app.Activity;
import android.os.Bundle;
import android.os.PersistableBundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;public class ArrayAdapterActivity extends AppCompatActivity {/* 定义我们需要的类的对象*/ListView listView;ArrayAdapter<String>adapter;TextView tv_Content;//复制也行,不复制也可以;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//猜测是加载某个xml文件,设置界面视图setContentView(R.layout.arrayadapter);//----------------------------------------listView=(ListView) findViewById(R.id.arrayList);//星期数组final String[] weekList={"周一","周二","周三","周四","周五","周六","周日"};adapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,weekList);listView.setAdapter(adapter);//设置监听事件;listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {tv_Content=(TextView) findViewById(R.id.tv_content);tv_Content.setText("您的选择是:"+weekList[position]);}});}
}

3.SimpleAdapterActivity.java

package com.aaa.zyg001;import android.app.Activity;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.SimpleAdapter;import androidx.annotation.Nullable;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;public class SimpleAdapterActivity extends Activity {//1.声明变量String[]songs=new String[]{"国歌","歌唱祖国","夏天的风","无人之岛"};String[]singer=new String[]{"聂耳","无","Uu","任然"};String[]albums=new String[]{"国歌","歌唱祖国","夏天的风","无人之岛"};String[]duratioins=new String[]{"3:56","3:17","4:45","4:37"};ListView listView;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.simpleadapter);//获取布局xml//listView=(ListView) findViewById(R.id.simpleAdapter);//泛型+Map集合List<Map<String,Object>> listItem=new ArrayList<Map<String,Object>>();for(int i=0;i<songs.length;i++){Map<String,Object>item=new HashMap<String,Object>();item.put("song",songs[i]);item.put("singer",singer[i]);item.put("album",albums[i]);item.put("duration",duratioins[i]);listItem.add(item);}SimpleAdapter  myAdapter=new SimpleAdapter(getApplicationContext(),listItem,R.layout.list,new String[]{"song","singer","album","duration"},new int[]{R.id.song_name,R.id.singer,R.id.album,R.id.duration});//绑定listView.setAdapter(myAdapter);}
}

1个整合配置文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.aaa.zyg001"><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/Theme.Zyg001"><activityandroid:name=".MainActivity"android:exported="true"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><!--再启动其他的两个activity        --><activity android:name=".ArrayAdapterActivity"></activity><activity android:name=".SimpleAdapterActivity"></activity><!--定义结束   activity        --></application></manifest>

效果图:


Android从入门到进阶之高级控件相关推荐

  1. 2022 最新 Android 基础教程,从开发入门到项目实战【b站动脑学院】学习笔记——第八章:高级控件

    本章介绍了App开发常用的一些高级控件用法,主要包括:如何使用下拉框及其适配器.如何使用列表 类视图及其适配器.如何使用翻页类视图及其适配器.如何使用碎片及其适配器等.然后结合本章所学 的知识,演示了 ...

  2. RecyclerView高级控件-附实例【android专题】

    RecyclerView高级控件 RecyclerView是Android 及其重要的一个高级UI控件,使用频率及其的高,APP的90%以上的页面都会使用的到.由于其出色的性能和插拔式的架构设计,被全 ...

  3. Android高级控件(二)——SurfaceView实现GIF动画架包,播放GIF动画,自己实现功能的初体现...

    Android高级控件(二)--SurfaceView实现GIF动画架包,播放GIF动画,自己实现功能的初体现 写这个的原因呢,也是因为项目中用到了gif动画,虽然网上有很多的架包可以实现,不过我们还 ...

  4. 《移动项目实践》实验报告——Android高级控件

    实验目的 1.熟悉App开发常用的一些高级控件及相关工具,主要包括日期时间控件的用法.列表类视图及其适配器的用法.翻页类视图及其适配器的用法.碎片及其适配器的用法等: 2.熟悉四大组件之一广播Broa ...

  5. VR 终极选购指南:入门、进阶与高端

    若你重回上世纪 90 年代读读 VR,你会发现这个词意涵颇广:从电影<天才割草人>的虚拟空间刺激系统,到电脑屏幕上的3D模型,什么都有.然而发展到今天,VR 简单明了:除某些特定情况,它等 ...

  6. Android高级控件----AdapterView与Adapter详解

    在J2EE中提供过一种非常好的框架--MVC框架,实现原理:数据模型M(Model)存放数据,利用控制器C(Controller)将数据显示在视图V(View)上.在Android中有这样一种高级控件 ...

  7. Android高级控件(一)——ListView绑定CheckBox实现全选,增加和删除等功能

    Android高级控件(一)--ListView绑定CheckBox实现全选,增加和删除等功能 这个控件还是挺复杂的,也是项目中应该算是比较常用的了,所以写了一个小Demo来讲讲,主要是自定义adap ...

  8. Android高级控件(四)——VideoView 实现引导页播放视频欢迎效果,超级简单却十分的炫酷

    Android高级控件(四)--VideoView 实现引导页播放视频欢迎效果,超级简单却十分的炫酷 是不是感觉QQ空间什么的每次新版本更新那炫炫的引导页就特别的激动,哈哈,其实他实现起来真的很简单很 ...

  9. 嗨CE系列教程全套(入门,进阶,高阶)游戏驱动反调试

    嗨CE系列教程全套(入门,进阶,高阶)游戏驱动反调试等 1.入门教程5课 1.如何修改游戏 2.快速找到基址和指针 3.通过一个地址快速找到其他地址 4.制作一个简易修改器 5.一些重要的小技巧和理论 ...

最新文章

  1. 史上最强GAN被谷歌超越!标注数据少用90%,造假效果却更逼真
  2. 彻底理解cookie,session,localStorage(附代码)
  3. python3环境变量_配置环境变量切换到python3.7
  4. ant实例 jmeter_Jmeter+ant搭建环境
  5. Openflow协议规范
  6. How to show only next line after the matched one?
  7. Mac电脑风扇转速调节工具Macs Fan Control
  8. [FAQ15840]MT2503系列充电电流问题
  9. 一篇详细实用的IDEA插件开发指南
  10. Windows+WSL+DockerDesktop下安装OpenV2X
  11. 双目标定(三)标定流程(含矫正)
  12. 如何编写一个投票功能的智能合约
  13. linux下为php添加GD库(重新编译php)
  14. Win7 + VirtualBox 安装 MacOS X 10.9 Mavericks 操作步骤
  15. 陀螺仪重力感应(the gyroscope gravity induction)and (core Motion Framework)
  16. itext 5 根据模板生成PDF util类
  17. Windows找不到servicemsc文件怎么办?
  18. 计算机类对身体要求,旅游管理专业对身体条件的要求
  19. Debug模式 控制台调试指令
  20. c语言按给定成绩查询,C语言学生成绩管理系统(简易版)

热门文章

  1. JavaScript 使用[]读取对象属性
  2. idea console中文乱码_idea控制台tomcat中文乱码的处理方法
  3. hdu 2255二分图最大权值匹配的KM 算法
  4. vue_组件_非prop特性
  5. 【测试点分析】1072 开学寄语 (20分)_42行代码AC
  6. 为什么B+树比B树更适合做数据库索引
  7. InnoDB 的索引模型
  8. led大屏按实际尺寸设计画面_年会活动要用LED大屏还是投影?专业行家都是看这些数据。...
  9. Python爬虫 解析库的使用
  10. Linux启动容器端口,docker安装 创建镜像 启动容器 的 使用方法