Android从入门到进阶之高级控件
高級控件
1.自動完成文本控件
在搜索引擎(百度、搜狗)輸入幾個文字,會出來一些提示??梢詼p少用戶的輸入,提高程序的效率。剛才看到的自動提示,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);
}
運行效果:**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从入门到进阶之高级控件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 零基础学前端开发技术之第七章 浮动塌陷
- 下一篇: cordova自定义android插件,