Android基本控制元件使用
1.TextView配置
<TextViewandroid:id="@+id/text_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_weight="1"
android:textColor="#00ff00"
android:text="This is TextView" />
layout_width和layout_height屬性可選值有:match_parent(當前控制元件的大小和父佈局的大小一樣)
rap_content(讓當前控制元件的大小能夠剛好包含住裡面的內容)
gravity屬性選擇center表示文字在垂直和水平方向都居中對齊
textSize屬性指定文字的大小
textColor屬性指定文字的顏色
2.Button
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" //相對於佈局,居中
android:layout_margin="5dip" //指定控制元件在上下左右方向上偏移的距離
android:background="@drawable/back_bg" //用於為佈局或控制元件指定一個背景
android:text="Back"
android:textColor="#fff"
/>
實現對按鈕點選事件的監聽方法有兩種:
(1)使用匿名類,在onCreate中實現:
public class MainActivity extends Activity
{
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button)findViewById(R.id.button);
button.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
}
});
}
}
(2)實現介面
public class MainActivity extends Activity implements View.OnClickListener
{
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button)findViewById(R.id.button);
button.setOnClickListener(this);
}
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
switch (v.getId())
{
case R.id.button:
Toast.makeText(MainActivity.this, "MainActivity", Toast.LENGTH_LONG).show();
break;
default:
break;
}
}
}
必須實現 implements View.OnClickListener,不能是 implements OnClickListener,不然會出錯。
3.EditText
它允許使用者在控制元件裡輸入和編輯內容,並可以在程式中對這些內容進行處理。
<EditText
android:id = "@+id/edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/button" //保證不與上面的button重疊
android:hint="Type something here" //輸入框的提示性文字
android:maxLines="2" //指定了EditText的最大行數為兩行,這樣當輸入的內容超過兩行時,文字就會向上滾動,而EditText則不會繼續拉伸
/>
4.ImageView
<ImageView
android:id="@+id/image_view"
android:layout_width="wrap_content"
android:layout_height= "wrap_content"
android:layout_below="@id/edit_text"
android:src="@drawable/ic_launcher"
/>
點選按鈕,改變顯示的圖片
private ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button)findViewById(R.id.button);
imageView = (ImageView)findViewById(R.id.image_view);
button.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
imageView.setImageResource(R.drawable.image1);
}
});
}
首先需要在res/drawable-hdpi下新增圖片,但是這個資料夾下所有圖片的名字必須是 [a-z0-9_.],否則無法識別、
5.ProgressBar
(1)圓形進度條
<ProgressBar
android:id = "@+id/progress_bar"
android:layout_width = "match_parent"
android:layout_height="wrap_content"
/>
改變控制元件的可見屬性:visible(可見),invisible(不可見,但仍然佔據位置和大小),gone(不可見,不佔據位置和大小)
private ProgressBar progressBar;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button)findViewById(R.id.button);
editText = (EditText)findViewById(R.id.edit_text);
imageView = (ImageView)findViewById(R.id.image_view);
progressBar = (ProgressBar)findViewById(R.id.progress_bar);
//按鍵按下改變其可見屬性
button.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
if(progressBar.getVisibility() == View.GONE)
{
progressBar.setVisibility(View.VISIBLE);
}
else
{
progressBar.setVisibility(View.GONE);
}
}
});
}
(2)水平進度條
<ProgressBar
android:id = "@+id/progress_bar"
android:layout_width = "match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/image_view"
style = "?android:attr/progressBarStyleHorizontal"
android:max = "100"
/>
按下按鍵時,進度條變化
button.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
int progress = progressBar.getProgress();
progress = progress + 10;
if(progress > 100)
{
progress = 0;
}
progressBar.setProgress(progress);
}
});
6.AlertDialog(警告對話方塊)
button.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this);
dialog.setTitle("This is Dialog"); //標題
dialog.setMessage("Something improtant."); //內容
dialog.setCancelable(false); //不可取消,一定得進行處理
//OK鍵的點選事件
dialog.setPositiveButton("OK", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface arg0, int arg1)
{
// TODO Auto-generated method stub
}
});
//Cancle鍵的點選事件
dialog.setNegativeButton("Cancle", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface arg0, int arg1)
{
// TODO Auto-generated method stub
}
});
dialog.show();
}
});
7.ProcessDialog
按鍵按下顯示對話方塊
button.setOnClickListener(new OnClickListener()9
{
@Override
public void onClick(View v)
{
ProgressDialog progressDialog = new ProgressDialog(MainActivity.this);
progressDialog.setTitle("This is a progressDialog");
progressDialog.setMessage("Loading.....");
progressDialog.setCancelable(true); //可關閉
progressDialog.show();
}
}
若progressDialog.setCancelable(false);如此配置,表示progressDialog是不能通過Back鍵取消的,這是一定要在程式碼中做好控制,當資料載入完成後,必須要呼叫 progressDialog.dismiss();方法來關閉對話方塊,否則ProgressDialog將會一直存在。
8.ListView的簡單用法
(1)在activity_main.xml佈局中加入ListView控制元件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.listviewtest.MainActivity" >
<ListView
android:id="@+id/list_view"
android:layout_width="match_parent"
android:layout_height="match_parent">
</ListView>
</RelativeLayout>
(2)在MainActivity.java中新增與ListView有關的程式碼
public class MainActivity extends Activity
{
private String[] data = {"Apple", "Banana", "Orange", "Watermelon", "Pear", "Grape", "Pineapple",
"Strawberry", "Cherry", "Mango"};
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, data);
ListView listView = (ListView)findViewById(R.id.list_view);
listView.setAdapter(adapter);
}
}
陣列中的資料無法直接傳遞給ListView,需藉助介面卡完成,通過泛型<String>.來指定要適配的資料型別,然後在建構函式中把要適配的資料傳入即可
將ArrayAdapter的泛型指定為String,然後在ArrayAdapter的建構函式中一次傳入當前上下文、ListView子項佈局的id以及要適配的資料。
在這裡我們使用 android.R.layout.simple_list_item_1作為ListView子項佈局的id,這是一個Android內建的佈局檔案,裡面只有一個TextView,可用於簡單顯示一段文字最後呼叫ListView的setAdapter方法,將構建好的介面卡物件傳遞進去即可。
9.ListView介面定製
(1)定義一個實體類Fruit.java,作為ListView介面卡的適配型別
package com.example.listviewtest;
import org.w3c.dom.NameList;
public class Fruit
{
private String name;
private int imageId;
public Fruit(String name, int imageId)
{
// TODO Auto-generated constructor stub
this.name = name;
this.imageId = imageId;
}
public String getName()
{
return name;
}
public int getImageId()
{
return imageId;
}
}
(2)為ListView的子項指定一個我們自定義的佈局layout/fruit_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ImageView //用於顯示水果的圖片
android:id="@+id/fruit_imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView //用於顯示水果的名字
android:id="@+id/fruit_textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="10dip"
/>
</LinearLayout>
(3)建立一個自定義的介面卡(FruitAdapter.java)
a.低效率
public class FruitAdapter extends ArrayAdapter<Fruit>
{
private int resourceId;
//重寫建構函式,用於將上下文,ListView子項佈局的id和資料都傳遞進來
public FruitAdapter(Context context, int resource, List<Fruit> objects)
{
super(context, resource, objects);
resourceId = resource;
}
//當每個子項被滾動到螢幕內的時候被呼叫,即蘋果的時候呼叫一次,香蕉的時候再呼叫一次,使得執行效率低
@Override
public View getView(int position, View convertView, ViewGroup parent) //
{
Fruit fruit = getItem(position);//獲得當前項的fruit例項
//載入ListView子項佈局
View view = LayoutInflater.from(getContext()).inflate(resourceId, null);
//設定具體顯示資訊
ImageView fruitImage = (ImageView)view.findViewById(R.id.fruit_imageView);
TextView fruitName = (TextView)view.findViewById(R.id.fruit_textView);
fruitImage.setImageResource(fruit.getImageId());
fruitName.setText(fruit.getName());
return view;
}
}
b.高效率
public class FruitAdapter extends ArrayAdapter<Fruit>
{
private int resourceId;
//重寫建構函式,用於將上下文,ListView子項佈局的id和資料都傳遞進來
public FruitAdapter(Context context, int resource, List<Fruit> objects)
{
super(context, resource, objects);
resourceId = resource;
}
//當每個子項被滾動到螢幕內的時候被呼叫
@Override
//三個引數分別表示:判斷顯示在介面上的是第幾個;
//將之前載入好的佈局進行快取,以便之後再進行重用
//載入xml檢視時使用
public View getView(int position, View convertView, ViewGroup parent)
{
Fruit fruit = getItem(position);//獲得當前項的fruit例項
//載入ListView子項佈局
View view;
ViewHolder viewHolder; //這個類用於對控制元件的例項進行快取
if(convertView == null)
{
view = LayoutInflater.from(getContext()).inflate(resourceId, null);
viewHolder = new ViewHolder();
viewHolder.fruitImage = (ImageView)view.findViewById(R.id.fruit_imageView);
viewHolder.fruitName = (TextView)view.findViewById(R.id.fruit_textView);
view.setTag(viewHolder); //將viewHolder儲存在View中
}
else
{
view = convertView;
viewHolder = (ViewHolder)view.getTag(); //將view中儲存的viewHolder提取出來即可
}
//設定具體顯示資訊
viewHolder.fruitImage.setImageResource(fruit.getImageId());
viewHolder.fruitName.setText(fruit.getName());
return view;
}
//用於對控制元件的例項進行快取
class ViewHolder
{
ImageView fruitImage;
TextView fruitName;
}
}
(4)MainActivity中呼叫
public class MainActivity extends Activity
{
private List<Fruit> fruitList = new ArrayList<Fruit>();
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initFruits();
FruitAdapter adapter = new FruitAdapter(MainActivity.this, R.layout.fruit_item, fruitList);
ListView listView = (ListView)findViewById(R.id.list_view);
listView.setAdapter(adapter);
}
private void initFruits()
{
Fruit apple = new Fruit("Apple", R.drawable.apple_pic);
fruitList.add(apple);
Fruit banana = new Fruit("Banana",R.drawable.banana_pic);
fruitList.add(banana);
Fruit orange = new Fruit("Orange", R.drawable.orange_pic);
fruitList.add(orange);
}
}
(5)ListView的點選事件
listView.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id)
{
Fruit fruit = fruitList.get(position);
Toast.makeText(MainActivity.this, fruit.getName(), Toast.LENGTH_LONG).show();
// TODO Auto-generated method stub
}
});
相關推薦
Android介面程式設計——Android基本控制元件
Android介面程式設計 Android應用開發的一項重要內容就是介面開發。對於使用者來說,不管APP包含的邏輯多麼複雜,功能多麼強大,如果沒有提供友好的圖形互動介面,將很難吸引終端使用者。
Android基本控制元件使用
1.TextView配置 <TextView android:id="@+id/text_view" android:layout_width="match_parent" android:layout_heigh
Android 基本控制元件使用六(ListView+SimpleAdapter)
專案技術:利用 ListView + SimpleAdapter 將 name 和 number 顯示出來, 通過給 item 設定監聽(setOnItemClickListener)土司“ name 和 number ” 專案描述:通過 ListView+Simple
Android 基本控制元件的使用二(註冊許可協議)(CheckBox)
需要注意的是:按鈕部分,在複選框選中之前是顯示不可點選狀態,一旦被選中之後就會變成可點選按鈕。 為複選框設定的監聽為:setOnCheckedChangeListener 實現的方法有兩種: 方法一:在 activity_main.xml 中 <Button
android基本控制元件-textview
安卓應用是由許多控制元件組成的,這些控制元件都直接或間接繼承View類.就像微軟的winform程式一樣,這些控制元件也有一系列的事件機制.textview 就是非常常見的控制元件.用來顯示文字,個人
Android 基本控制元件的使用三(RadioButton)
RadioButton是單選按鈕,即若干個單選按鈕中只能選擇其中的某一個選項, 如果需要若干個單選按鈕實現互斥效果,則這些單選按鈕必須是同一個RadioGroup的子級控制元件。 RadioGroup的本質是LinearLayout,在設計時,需要為RadioGroup新
Android-基本控制元件(Spanner 下拉列表)
1.回顧 上篇 學會了 GridView 的使用,基本的SimapleAdapter 實現 2.這篇 (1)使用 SimapleAdapter 實現 圖文下拉列表 (2) 使用A
Android 基本控制元件的使用一(使用者的登入介面)
用到了三個基本控制元件分別是: TextView(文字框); EditText (輸入框); Button (按鈕); activity_main.xml 中的程式碼 <LinearLayoutxmlns:android="http://schemas.a
Android 基本控制元件的使用五(ListView 與 ArrayAdapter)
專案技術:通過 adapter 來把資料顯示出來, 顯示這樣一個介面: 開發過程: 1.在佈局中建立一個 ListVIew (用來呈現資料的) 2.在佈局中建立一個item(每一項的顯示方式) 3.宣告 ListView 4.建立 ArrayList 並 新增資料 5.
Android常用的基本控制元件
在搭建Android介面中 有許多的控制元件給我們使用,有TextView,ImageView,Button等等,正是有了這些控制元件,我們才能搭建出好看的介面框架,本篇主要講解一下基本控制元件的屬性,以及在專案中常用的一些Android自帶的控制元件。 所有控制元件必須要有的屬性:
Android入門——基本控制元件詳解
Android應用開發的一項重要內容就是介面開發。對於使用者來說,不管APP包含的邏輯多麼複雜,功能多麼強大,如果沒有提供友好的圖形互動介面,將很難吸引終端使用者。作為一個程式設計師如何才能開發出友好的圖形介面呢。實際上Android提供了非常豐富UI(User Interface)控制元
Android Studio的基本控制元件 圖片框與進度條
今日重點: 1. Toast(吐絲框); 2. ImageView; 3. ProgressBar (進度條); 4. 如何讓子執行緒成功連線主執行緒(重點)。 技術分點 Toast(吐絲框); 1.1 Toast是Android
Android開發之基本控制元件和詳解四種佈局方式
Android中的控制元件的使用方式和iOS中控制元件的使用方式基本相同,都是事件驅動。給控制元件新增事件也有介面回撥和委託代理的方式。今天這篇部落格就總結一下Android中常用的基本控制元件以及佈局方式。說到佈局方式Android和iOS還是區別挺大的,在iOS中有F
Android開發的之基本控制元件和詳解四種佈局方式
Android中的控制元件的使用方式和iOS中控制元件的使用方式基本相同,都是事件驅動。給控制元件新增事件也有介面回撥和委託代理的方式。今天這篇部落格就總結一下Android中常用的基本控制元件以及佈局方式。說到佈局方式Android和iOS還是區別挺大的,在iOS中有Frame絕對佈局和AutoL
android常用控制元件ViewPager(一) ViewPager基本應用
ViewPager這個控制元件主要是用來實現螢幕之間的滑動切換(當然這樣的控制元件也可以完全自己打造)它是google SDk中自帶的一個附加包的一個類。現在很多應用都運用了ViewPager這樣的效果。本篇先介紹ViewPager的基本功能。 ViewP
幾種Android表格控制元件
一、LockTableView GitHub:https://github.com/RmondJone/LockTableView 有基本功能(顯示資料),有上拉下拉,有點選事件,但其它功能(如新增按鈕等)需要二次開發。 二、PanelList GitHub:https://
duilib中將xml封裝為控制元件簡單示例(簡單自定義控制元件,封裝幾個基本控制元件合為1個自定義控制元件)
使用duilib的時候,難免會有這樣的需求: 某一塊Container(Layout)以及裡面的佈局需要重複用,不想每次都複製貼上這麼多,要不然xml太大了; 通過繼承來自定義一個控制元件,比如CButtonUIEx之類的,想讓他像button一樣在xml中被識別; xml裡面的東西
Android CardView控制元件
相關文章 Android Snackbar控制元件 Android FloatingActionButton控制元件 Android Toolbar控制元件 Android AppBarLayout控制元件 Android CollapsingToolbarLayout控制元件 Andr
Android ViewStub控制元件
前言 使用ViewStub可以實現介面的延遲載入。 1. ViewStub簡單應用 (1) 佈局檔案 layout為載入View,inflatedId為載入後View的id。 <ViewStub android:id="@+id/view_stub"
Android ViewPager控制元件
前言 ViewPager可以實現多個介面的左右滑動。 1. ViewPager簡單應用 (1) 佈局檔案 <android.support.v4.view.ViewPager android:id="@+id/view_pager" android: