編輯:關於Android編程
前面已經學了activity的一些使用,那麼下面我們進行android中基本的控件的學習和使用。
1.android中的TextView控件
新建一個項目,項目名為UITest,才有默認的設置,修改布局文件的內容,如下:
下面我們來說說每個參數的意義:
android:id="@+id/text_view":給當前的控件定義了唯一標志符
android:layout_width:指定控件的寬度
android:layout_height:指定的控件的高度
android中所有的控件都具有android:layout_width,android:layout_height這兩個屬性,可選的值有match_parent,fill_parent,wrap_content,其中match_parent和fill_parent的意義一樣,現在官方推薦用match_parent,表示當前控件和父布局的大小一樣,也就是有父布局來決定當前控件的大小。wrap_content表示擋牆控件的大小能夠剛好包含住裡面的內容,也就是控件內容決定當前控件的大小。所以上面的布局中讓TextView的寬度和父布局一樣,也就是手機的寬度,讓TextView的高度足夠包含住裡面的內容就行。
android:text:指定TextView顯示的內容,TextView默認的文字對齊方式是居左上角對齊。
下面我們修改下文字的對齊方式,給TextView添加一個android:gravity="center"屬性,在運行程序
使用android:gravity來指定文字的對齊方式,可選的值有top,bottom,left,right,center等或者用“"”來同時指定多個值,這裡我們指定的“center”,效果等效於center_vertical|center_horizontal,表示文字在垂直和水平方向都居中對齊。
下面我們在修改下文字的大小和顏色,並修改TextView的背景顏色
效果圖如上
android:textSize="24sp":指定文字的大小
android:textColor="#00ff00":指定文字的顏色,顏色為綠色
android:background="#ff0000":指定TextView的背景色為紅色
關於TextView的基本屬性就介紹到這吧,android很多的控件屬性都相似的,舉一反三。下面我們來學習Button吧。
2.android中的Button
改寫布局文件代碼如下:
我們在MainActivity中為按鈕添加事件監聽<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+PC9wPgo8cHJlIGNsYXNzPQ=="brush:java;">package com.wj.uitest;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity {
private Button button1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button1=(Button) findViewById(R.id.button1);
button1.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//添加事件處理邏輯
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
或者通過實現接口來給按鈕添加監聽代碼如下:
package com.wj.uitest; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainActivity extends Activity implements OnClickListener{ private Button button1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button1=(Button) findViewById(R.id.button1); button1.setOnClickListener(this); /*button1.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub //添加事件處理邏輯 } });*/ } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public void onClick(View v) { // TODO Auto-generated method stub switch(v.getId()){ case R.id.button1: //在此處添加事件處理邏輯 break; default: break; } } }
上面2中方法都可以實現對android的事件監聽,具體使用什麼,看你自己的愛好
3.Android中的EditText
修改布局文件添加EditText控件
運行程序
下面我們在給EditText添加提示文字,修改布局文件
運行程序:
android:hint:屬性是給EditText提供輸入提示的文字
下面我們使用一個android:maxLines屬性,使用android:maxLines指定最多顯示的行數,當超過了指定的行數,文本就會向上滾動。修改下EditText的代碼:
運行程序:
下面我們演示通過點擊按鈕獲取輸入的EditText的內容,
修改MainActivity裡面的代碼,代碼如下:
package com.wj.uitest; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends Activity implements OnClickListener{ private Button button1; private EditText editText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button1=(Button) findViewById(R.id.button1); button1.setOnClickListener(this); editText=(EditText) findViewById(R.id.edit_text); /*button1.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub //添加事件處理邏輯 } });*/ } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public void onClick(View v) { // TODO Auto-generated method stub switch(v.getId()){ case R.id.button1: //在此處添加事件處理邏輯 String text=editText.getText().toString(); Toast.makeText(MainActivity.this, text, Toast.LENGTH_SHORT).show(); break; default: break; } } }
在文本框輸入,內容後,通過點擊按鈕,來顯示輸入的內容,運行程序操作結果如下:
代碼中editText.getText().toString()是通過點擊按鈕來獲取輸入文本框的內容,並轉換成字符串。最後用Toast把輸入的字符串顯示出來。
4.Android的ImageView
android之中用來顯示一張圖片的是ImageView 控件,下面我就借助ImageView 來顯示一張圖片,首先我在我的drawable文件夾下面添加了2張圖片。接著修改布局文件,添加圖片的控件。
運行程序:
可見上面已經顯示了一張圖片了,由於不知道圖片的大小,所以把ImageView控件設置成隨圖片的大小自動的變化。
android:src="@drawable/note1",這一句是給ImageView控件指定一張圖片。
下面我在修改下代碼,通過點擊按鈕,改變下圖片,修改代碼如下:
package com.wj.uitest; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.Toast; public class MainActivity extends Activity implements OnClickListener{ private Button button1; private EditText editText; private ImageView imageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button1=(Button) findViewById(R.id.button1); button1.setOnClickListener(this); editText=(EditText) findViewById(R.id.edit_text); imageView=(ImageView) findViewById(R.id.image_view); /*button1.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub //添加事件處理邏輯 } });*/ } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public void onClick(View v) { // TODO Auto-generated method stub switch(v.getId()){ case R.id.button1: //在此處添加事件處理邏輯 /*String text=editText.getText().toString(); Toast.makeText(MainActivity.this, text, Toast.LENGTH_SHORT).show();*/ //通過ImageView的setImageResource函數改變顯示的圖片 imageView.setImageResource(R.drawable.note2); break; default: break; } } }
沒有點擊按鈕前,圖片顯示和上面一張圖片一樣,當點擊按鈕以後,顯示如下:
5.Android中的ProgressBar
ProgressBar用於在界面上顯示一個進步條,表示我們的程序正在加載一些數據。下面是添加ProgressBar控件的代碼,我把ProgressBar的背景色指定為藍色了。修改布局代碼如下:
運行程序結果如下:
我們看到屏幕中有一個圓形的進度條正在旋轉,如上。
由於數據總有加載完的時候,所以進度條不能一直顯示,這時候我們就要用到Android控件的可見屬性了,可選的值有visible,invisible和gone。visible表示控件是可見的,這個值是默認的值,不指定android:visibility時,控件是可見的。invisible表示控件不可見,但是它仍然占據著原來的位置和大小,可以理解為控件變成了透明狀態。gone則表示控件不僅不可見,而且不在占用任何屏幕空間。我們還可以通過代碼來設置控件的可見性,使用的是setVisibility方法,可以傳入的View.VISIBLE,View.INVISIBLE,View.GONE。
下面我通過點擊下按鈕讓進度條消失,在點擊下按鈕,則顯示進度條。修改代碼如下:
package com.wj.uitest; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.ProgressBar; import android.widget.Toast; public class MainActivity extends Activity implements OnClickListener{ private Button button1; private EditText editText; private ImageView imageView; private ProgressBar progressBar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button1=(Button) findViewById(R.id.button1); button1.setOnClickListener(this); editText=(EditText) findViewById(R.id.edit_text); imageView=(ImageView) findViewById(R.id.image_view); progressBar=(ProgressBar) findViewById(R.id.progress_bar); /*button1.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub //添加事件處理邏輯 } });*/ } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public void onClick(View v) { // TODO Auto-generated method stub switch(v.getId()){ case R.id.button1: //在此處添加事件處理邏輯 /*String text=editText.getText().toString(); Toast.makeText(MainActivity.this, text, Toast.LENGTH_SHORT).show();*/ //通過ImageView的setImageResource函數改變顯示的圖片 /*imageView.setImageResource(R.drawable.note2);*/ //控制進度條的顯示和消失 if(progressBar.getVisibility()==View.GONE){ //getVisibility()方法獲取進度條的顯示狀態 progressBar.setVisibility(View.VISIBLE); }else{ progressBar.setVisibility(View.GONE); } break; default: break; } } }
運行程序,如下:
點擊按鈕後,程序顯示如下:
另外進度條有不同的顯示樣式,剛剛顯示的是圓形的進度條,通過style屬性可以將它變成水平的進度條,修改布局文件如下:
運行程序如下:
下面我添加代碼,使通過點擊按鈕,進度條進行增長,修改代碼如下:
package com.wj.uitest; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.ProgressBar; import android.widget.Toast; public class MainActivity extends Activity implements OnClickListener{ private Button button1; private EditText editText; private ImageView imageView; private ProgressBar progressBar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button1=(Button) findViewById(R.id.button1); button1.setOnClickListener(this); editText=(EditText) findViewById(R.id.edit_text); imageView=(ImageView) findViewById(R.id.image_view); progressBar=(ProgressBar) findViewById(R.id.progress_bar); /*button1.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub //添加事件處理邏輯 } });*/ } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public void onClick(View v) { // TODO Auto-generated method stub switch(v.getId()){ case R.id.button1: //在此處添加事件處理邏輯 /*String text=editText.getText().toString(); Toast.makeText(MainActivity.this, text, Toast.LENGTH_SHORT).show();*/ //通過ImageView的setImageResource函數改變顯示的圖片 /*imageView.setImageResource(R.drawable.note2);*/ //控制進度條的顯示和消失 /*if(progressBar.getVisibility()==View.GONE){ //getVisibility()方法獲取進度條的顯示狀態 progressBar.setVisibility(View.VISIBLE); }else{ progressBar.setVisibility(View.GONE); }*/ //點擊按鈕,增加進度條的進度 int progress=progressBar.getProgress(); progress=progress+10; progressBar.setProgress(progress); break; default: break; } } }
運行程序,點擊按鈕,顯示如下:
觀看圖,可以看到進度條有進度顯示了,顯示的是藍色部分。每點擊一下按鈕進度增加值為10。ProgressBar還有幾種樣式可以自己試試。
6.Android的AlertDialog
android的AlertDialog的使用,可以直接看代碼,比較的簡單,我就直接貼代碼了
package com.wj.uitest; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.ProgressBar; import android.widget.Toast; public class MainActivity extends Activity implements OnClickListener{ private Button button1; private EditText editText; private ImageView imageView; private ProgressBar progressBar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button1=(Button) findViewById(R.id.button1); button1.setOnClickListener(this); editText=(EditText) findViewById(R.id.edit_text); imageView=(ImageView) findViewById(R.id.image_view); progressBar=(ProgressBar) findViewById(R.id.progress_bar); /*button1.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub //添加事件處理邏輯 } });*/ } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public void onClick(View v) { // TODO Auto-generated method stub switch(v.getId()){ case R.id.button1: //在此處添加事件處理邏輯 /*String text=editText.getText().toString(); Toast.makeText(MainActivity.this, text, Toast.LENGTH_SHORT).show();*/ //通過ImageView的setImageResource函數改變顯示的圖片 /*imageView.setImageResource(R.drawable.note2);*/ //控制進度條的顯示和消失 /*if(progressBar.getVisibility()==View.GONE){ //getVisibility()方法獲取進度條的顯示狀態 progressBar.setVisibility(View.VISIBLE); }else{ progressBar.setVisibility(View.GONE); }*/ //點擊按鈕,增加進度條的進度 /*int progress=progressBar.getProgress();//獲取到當前進度條的進度 progress=progress+10; progressBar.setProgress(progress);*/ /* * AlertDialog可以在當前的界面彈出一個對話框,這個對話框是置與所有界面元素之上的,能夠 * 屏蔽掉其他控件的交互能力,因此一般AlertDialog都用於提示一些非常重要的內容或者警告信息 * */ AlertDialog.Builder dialog=new AlertDialog.Builder(MainActivity.this); dialog.setTitle("this is dialog");//對話框標題 dialog.setMessage("Something import.");//設置提示信息 dialog.setCancelable(false); //為對話框設置確定按鈕的點擊事件 dialog.setPositiveButton("OK", new DialogInterface.OnClickListener(){ @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub //進行邏輯處理 } }); //為對話框設置取消按鈕的點擊事件 dialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener(){ @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub //進行邏輯處理 } }); //顯示對話框 dialog.show(); break; default: break; } } }
運行程序,點擊按鈕後,結果如下所示:
7.Android中的ProgressDialog
ProgressDialog和上面的對話框用法差不多,所以也不多講了,具體的在代碼裡面寫了注釋了,可以查看注釋。修改代碼如下:
package com.wj.uitest; import android.app.Activity; import android.app.AlertDialog; import android.app.ProgressDialog; import android.content.DialogInterface; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.ProgressBar; import android.widget.Toast; public class MainActivity extends Activity implements OnClickListener{ private Button button1; private EditText editText; private ImageView imageView; private ProgressBar progressBar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button1=(Button) findViewById(R.id.button1); button1.setOnClickListener(this); editText=(EditText) findViewById(R.id.edit_text); imageView=(ImageView) findViewById(R.id.image_view); progressBar=(ProgressBar) findViewById(R.id.progress_bar); /*button1.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub //添加事件處理邏輯 } });*/ } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public void onClick(View v) { // TODO Auto-generated method stub switch(v.getId()){ case R.id.button1: //在此處添加事件處理邏輯 /*String text=editText.getText().toString(); Toast.makeText(MainActivity.this, text, Toast.LENGTH_SHORT).show();*/ //通過ImageView的setImageResource函數改變顯示的圖片 /*imageView.setImageResource(R.drawable.note2);*/ //控制進度條的顯示和消失 /*if(progressBar.getVisibility()==View.GONE){ //getVisibility()方法獲取進度條的顯示狀態 progressBar.setVisibility(View.VISIBLE); }else{ progressBar.setVisibility(View.GONE); }*/ //點擊按鈕,增加進度條的進度 /*int progress=progressBar.getProgress();//獲取到當前進度條的進度 progress=progress+10; progressBar.setProgress(progress);*/ /* * AlertDialog可以在當前的界面彈出一個對話框,這個對話框是置與所有界面元素之上的,能夠 * 屏蔽掉其他控件的交互能力,因此一般AlertDialog都用於提示一些非常重要的內容或者警告信息 * */ /*AlertDialog.Builder dialog=new AlertDialog.Builder(MainActivity.this); dialog.setTitle("this is dialog");//對話框標題 dialog.setMessage("Something import.");//設置提示信息 dialog.setCancelable(false); //為對話框設置確定按鈕的點擊事件 dialog.setPositiveButton("OK", new DialogInterface.OnClickListener(){ @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub //進行邏輯處理 } }); //為對話框設置取消按鈕的點擊事件 dialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener(){ @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub //進行邏輯處理 } }); //顯示對話框 dialog.show();*/ /* * ProgressDialog和AlertDialog有點類似,都是可以在界面彈出一個對話框,都能夠屏蔽 * 掉其他控件的交互能力。不同的是,ProgressDialog會在對話框中顯示一個進度條,一般是用於 *表示當前操作比較耗時,讓用戶耐心等待。 * */ //創建組件 ProgressDialog progressDialog=new ProgressDialog(MainActivity.this); //設置標題 progressDialog.setTitle("this is progressDialog"); //設置提示內容 progressDialog.setMessage("Loading...."); //setCancelable方法如果傳入的false,表示ProgressDialog是不能通過back鍵取消掉的, //這時你就要在代碼中做好控制,當數據加載完後必須要調用ProgressDialog的dismiss()方法來關閉 //對話框,否則ProgressDialog將會一直存在 progressDialog.setCancelable(true); //進行顯示 progressDialog.show(); break; default: break; } } }運行程序後結果如下:
基本的控件的使用就總結到這裡了,下面會講解下android中的布局
轉載請注明來至:http://blog.csdn.net/j903829182/article/details/40660275
Afw流程演示Device OwnerL平台恢復出廠設置連接翻牆Wifi直到出現如下界面點擊”Set up work device”,輸入賬號和激
這篇文章只是總結下getView裡面優化視圖的幾種寫法,就像孔乙己寫茴香豆的茴字的幾種寫法一樣,高手勿噴,勿笑,只是拿出來分享,有錯誤的地方歡迎大家指正,謝謝。 list
前言作為一個有半年余Android Developing折騰經驗的Android Developer(為什麼不說“開發經驗”呢?因為我仔細想了想,
看到這個sweet-alert-dialog很親切,因為前端開發本人用的提示就是這個js插件,java牛人很厲害,直接弄成一個java包插件,Good!下面記錄如何引用到