PS:竟然三天沒寫博客了...今天補上...東西雖多,可是都是一些基礎...代碼多了一些,有人可能會這樣問,粘這麼多代碼有毛用..其實對於一個Android的初學者來講,一個完整的代碼是最容易幫助理解的...我也是在一點一點的去學習...看了許多人的博客,大部分都是粘貼部分代碼,說實話,剛接觸的時候真的感受不是很好理解...不知道其餘地方如何去實現..只能本身慢慢的去摸索..我寫的這東西也不是給大神們去看的...大神一看就能明白怎麼回事..所以我是站在初學者的立場上,才貼了這麼多的代碼...好了,不廢話了...
java
學習內容:android
1.基本控件的應用...app
2.如何爲組件綁定監聽事件...less
i.Button 與 TextView組件與監聽事件 OnClickListener()ide
在這裏我仍是多用例子進行講解,仍是比較清晰的...函數
這是xml文件:佈局
<!--這裏定義了四個組件,三個按鈕,一個文本顯示顯示組件..只是一些簡單的佈局,沒什麼新的東西,所以也就沒有必要講了,你們看看其實就懂..--> <?xml version="1.0" encoding="utf-8"?> <Linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center" android:orientation="vertical" > <textview android:id="@+id/TextView01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginbottom="10dp" android:text="杜鵑不啼,如何讓它啼?" android:textsize="20sp" > </textview> <button android:id="@+id/Button01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="殺之不足惜!" android:textsize="20sp" > </button> <button android:id="@+id/Button02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="誘之天然啼!" android:textsize="20sp" > </button> <button android:id="@+id/Button03" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="待之莫須急!" android:textsize="20sp" > </button> </Linearlayout>
下面是src下的MainActivity.java文件..比較簡單...沒什麼難的東西...就是惟一在內部實現的時候你們有可能有點不太理解..
學習
package com.example.android_view; import android.os.Bundle; import android.widget.Button; import android.app.Activity; import android.view.Menu; import android.view.View; import android.view.View.OnClickLisener; //OnClickListener是View的內部接口.. import android.widget.TextView; public class MainHelloButton extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // 實現一個多按鈕可用的單擊監聽器對象,這個地方是在內部實現這個方法..只要點擊了按鈕,那麼就會觸發這個事件... OnClickListener listener = new Button.OnClickListener() { @Override public void onClick(View v) { setTitle("您的答案是:" + ((TextView) v).getText()); //這個地方可使用setTitle方法將獲取的字符串顯示在TextView上... } }; // 爲界面中的每一個按鈕綁定上這個單擊監聽器 findViewById(R.id.Button01).setOnClickListener(listener); findViewById(R.id.Button02).setOnClickListener(listener); findViewById(R.id.Button03).setOnClickListener(listener); } }
在這裏再說一下TextView,TextView是一個文本顯示組件..很經常使用的一個組件,TextView類被不少的組件類去直接繼承或者是間接繼承..像Button,EditText,CheckBox,RadioButton等等都是繼承了TextView類..TextView是一個很是重要的地方..再舉一個例子來深刻理解...
this
<?xml version="1.0" encoding="utf-8"?> <!--<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent">這裏也能夠在TextView外面加入一層這個東西,也能夠直接實現文本滾動..--> <Linearlayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <textview android:id="@+id/TextView01" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" android:textsize="30sp" > </textview> </Linearlayout> <!--</ScrollView>-->
java文件...這裏就很簡單了...別忘咱們還須要修改一下string.xml文本...
spa
package android.basic.lesson9; import android.app.Activity; import android.os.Bundle; import android.text.method.ScrollingMovementMethod; import android.widget.TextView; public class HelloTextView extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // 找到TextView組件 TextView tv = (TextView) findViewById(R.id.TextView01); // 設置移動方法 tv.setMovementMethod(ScrollingMovementMethod.getInstance()); } }
ii.EditText..可編輯的文本顯示組件..
佈局文件就放這一個控件就能夠了...
<?xml version="1.0" encoding="utf-8"?> <Linearlayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <EditText android:id="@+id/TextView01" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" android:textsize="30sp" > </EditText> </Linearlayout>
package android.basic.lesson9; import android.app.Activity; import android.os.Bundle; import android.text.method.ScrollingMovementMethod; import android.widget.TextView; public class HelloTextView extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final EditText et = (EditText) findViewById(R.id.EditText01); et.setOnKeyListener(new View.OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { // 監視硬鍵盤按鍵 if (event.getAction() == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_ENTER) { //這句話的意思其實就是當咱們按下鍵盤的時候,獲取到鍵盤的的輸入值... Toast.makeText(HelloTextView.this, et.getText(),Toast.LENGTH_SHORT).show(); // 返回true說明你已經處理了這個事件而且它應該就此終止,若是返回false就表示此事件還須要繼續傳遞下去 return true; } return false; } }); } }
這個就是JAVA文件了..Toast是信息提示框組件..這裏的HelloTextView表示的就是咱們主函數,Toast.makeText()表示的是指定顯示文本資源和信息的顯示時間...你們能夠試一下就能夠理解這個東西的做用了..
iii.ImageButton和ImageView組件
ImageButton圖片按鈕...就是一個特殊的按鈕而已...ImageView圖片視圖...兩者在被點擊的時候所產生的效果是不同的...這裏你們去試試就很容易發現了...
OnTouchListener()與OnClickListener()方法的區別...
<!--在使用圖片組件的時候,必定要把圖片導入到咱們的drawable文件夾下面,不然會報錯..--> <?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" > <ImageButton android:id="@+id/ImageButton01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/p1" /> <ImageView android:id="@+id/ImageView01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/p2"/> </LinearLayout>
java文件。。。
package android.basic.lesson9; import android.app.Activity; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnTouchListener; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.Toast; public class MainHelloImageButton extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); /* * OnClickListener()當屏幕或者是其餘組件被點擊的時候觸發..必需要有點擊和鬆開兩個事件..才被觸發.. * OnTouchListener()這個表示的觸碰屏幕或者組件的時候就會觸發,有可能只是劃過某一位置..就被觸發..
* 這就兩者的區別所在... */ // 找到xml中的ImageButton和ImageView final ImageButton ib = (ImageButton) findViewById(R.id.ImageButton01); final ImageView iv = (ImageView) findViewById(R.id.ImageView01); // 定義觸摸監聽 OnTouchListener otl = new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch (v.getId()) { case R.id.ImageButton01: Toast.makeText(getApplicationContext(),"觸摸" + ((ImageView) v).getId(), Toast.LENGTH_LONG).show(); break; case R.id.ImageView01: Toast.makeText(getApplicationContext(),"觸摸" + ((ImageView) v).getId(), Toast.LENGTH_LONG).show(); break; } return false; } }; // 定義點擊監聽 OnClickListener ocl = new OnClickListener() { @Override public void onClick(View v) { Toast.makeText(getApplicationContext(),"點擊" + ((ImageView) v).getId(), Toast.LENGTH_LONG).show(); } }; // 綁定監聽 ib.setOnClickListener(ocl); ib.setOnTouchListener(otl); iv.setOnClickListener(ocl); iv.setOnTouchListener(otl); } }
iv.CheckBox組件...
複選按鈕...複選按鈕估計你們也很熟悉,好比說在註冊帳號的時候就會有這個東西的出現...
OnClickListener()和OnCheckChangedListener()方法的區別...
這裏添加了一個文本顯示組件和兩個複選框..複選框就表明能夠一次選擇多個...而單選框一次只能選擇一個...
<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <textview android:id="@+id/TextView01" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="選擇你想獲得的東西:" > <checkbox android:id="@+id/CheckBox01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="蘋果" > </checkbox> <checkbox android:id="@+id/CheckBox02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="葡萄" > </checkbox> </textview> </linearlayout>
Java文件...這段代碼說明了一下兩者的區別...
package com.example.android_view; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.CompoundButton; import android.widget.Toast; import android.widget.CheckBox; import android.widget.CompoundButton.OnCheckedChangeListener; import android.widget.TextView; public class MainActivity extends Activity { private TextView TextView_01; private CheckBox CheckBox_01; private CheckBox CheckBox_02; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView_1=(TextView)findViewById(R.id.TextView01); CheckBox_1=(CheckBox)findViewById(R.id.CheckBox01); CheckBox_2=(CheckBox)findViewById(R.id.ChechBox02); /*OnClickListener()和OnCheckChangeListener()的區別在於:在複選框中,複選框的值不必定非要經過點擊纔可以進行選擇 *直接調用setChecked也能夠直接進行改變..這樣OnClickListener就沒法進行監聽了.. * */ OnClickListener ol=new OnClickListener(){ @Override public void onClick(View arg0) { // TODO Auto-generated method stub if(!((CheckBox)arg0).isChecked()){ Toast.makeText(MainActivity.this,((CheckBox)arg0).getText()+"被取消",Toast.LENGTH_SHORT).show(); } } }; //起初被點擊的時候會直接觸發這個監聽..當其餘複選框被選擇的時候這個監聽也會被觸發..由於能夠直接經過OnCheckChangeListener進行直接監聽.. OnCheckedChangeListener od=new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton arg0, boolean arg1) { // TODO Auto-generated method stub if(arg1){ Toast.makeText(MainActivity.this,arg0.getText()+"被選擇",Toast.LENGTH_SHORT).show();//獲取這個對象的資源信息.. } else{ Toast.makeText(MainActivity.this, arg0.getText()+"被取消", Toast.LENGTH_SHORT).show(); } } }; CheckBox_1.setOnClickListener(ol); CheckBox_2.setOnClickListener(ol); CheckBox_1.setOnCheckedChangeListener(od); CheckBox_2.setOnCheckedChangeListener(od); } @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; } }
v.RadioGroup和RadioButton
這兩個表明單選組和單選按鈕..這裏咱們在單選組中加入了兩個單選按鈕子元素...很簡單的東西....
<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <radiogroup android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" > <radiobutton android:id="@+id/radio_red" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="紅" > </radiobutton> <radiobutton android:id="@+id/radio_blue" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="藍" > </radiobutton> </radiogroup> </linearlayout>
package android.basic.lesson9; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.RadioButton; import android.widget.Toast; public class MainHelloRadioGroup extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final RadioButton radio_red = (RadioButton) findViewById(R.id.radio_red); final RadioButton radio_blue = (RadioButton) findViewById(R.id.radio_blue); OnClickListener ocl = new OnClickListener() { @Override public void onClick(View v) { Toast.makeText(MainHelloRadioGroup.this, ((RadioButton)v).getText(), Toast.LENGTH_SHORT).show(); } }; radio_red.setOnClickListener(ocl); radio_blue.setOnClickListener(ocl); } }
這一章內容雖然不少,可是也就是一些基礎的東西...主要仍是代碼多了一些,方便理解..組件這東西多練習練習其實就很容易掌握的...