編輯:關於Android編程
(1)在項目文件夾的 res/layout/ 文件目錄下打開 activity_main.xml :
package com.example.demo_login; import android.os.Bundle; import android.app.Activity; import android.content.Context; import android.view.Menu; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends Activity { private Context mCtx; private EditText mUsername; private EditText mPassword; private Button mLogin; private Button mQuit; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mCtx = MainActivity.this; mUsername = (EditText) findViewById(R.id.et_username); mPassword = (EditText) findViewById(R.id.et_password); mLogin = (Button) findViewById(R.id.btn_login); mQuit = (Button) findViewById(R.id.btn_quit); mLogin.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String username = mUsername.getText().toString(); String password = mPassword.getText().toString(); if(username.equals("admin") && password.equals("admin")){ Toast.makeText(mCtx, "登陸成功", Toast.LENGTH_SHORT).show(); } else{ Toast.makeText(mCtx, "登陸失敗", Toast.LENGTH_SHORT).show(); } } }); mQuit.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); } @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; } }
activity_main.xml 文件是 MainActivity 的布局文件,android采用xml的方式配置控件,講界面和邏輯分開,讓開發更有效率,同時也簡化了代碼。我們先來看activitt_main.xml
定義TextView:
定義EditText:
定義Button:
LinearLayout:流式布局,主要用來控制控件的排列方式,如果不明白,請看後面章節
TextView: 顯示固定文本
EditText:文本輸入框
Button:按鈕
其中EditText 和 Button 設置了 id 屬性,是為了我們在MainActivity中可以找到資源文件,並調用它們。現在看一下怎麼調用:
我們看到MainActivity的 onCreate()方法, 程序啟動後首先會進入這裡:
這裡就說明我們的布局文件activity_main.xml 是用來填充MainActivity的,setContentView()方法用來設置Activity的加載的布局文件。
setContentView(R.layout.activity_main);我們把兩個輸入框和兩個按鈕都設置成了成員變量,並采用findViewById(R.id.___)方法從布局文件中找到它們:
private EditText mUsername; private EditText mPassword; private Button mLogin; private Button mQuit;
mUsername = (EditText) findViewById(R.id.et_username); mPassword = (EditText) findViewById(R.id.et_password); mLogin = (Button) findViewById(R.id.btn_login); mQuit = (Button) findViewById(R.id.btn_quit);
然後我們給mLogin 登陸按鈕設置了鼠標點擊事件,如果點擊登陸按鈕,就會觸發裡面的 onClick() 方法,裡面的功能很簡單,就是從EditText中獲取到輸入的字符串,然後判斷是否等於”admin“,如果是則在屏幕彈出Toast登陸成功。說道這裡,Toast是什麼東西,其實就是提示性的一個氣泡,只要知道怎麼使用就好了。
mLogin.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String username = mUsername.getText().toString(); String password = mPassword.getText().toString(); if(username.equals("admin") && password.equals("admin")){ Toast.makeText(mCtx, "登陸成功", Toast.LENGTH_SHORT).show(); } else{ Toast.makeText(mCtx, "登陸失敗", Toast.LENGTH_SHORT).show(); } } });然後mQuit按鈕的點擊事件調用了 finish() 方法,就是關閉Activity,就不用講解了吧。
介紹一下Toast:
Toast是一種比較親切的提示,作用就是給用戶提示信息,只是它顯示最快,最小,所以稱之為親切。使用很常見,使用方法:
Toast.makeText(mCtx, "登陸成功", Toast.LENGTH_SHORT).show();可能有人會問 mCtx 這個參數是什麼意思,簡單的說這是Context上下文對象,專門用來關聯與Activity或Application相關的上下文(資源),我們看 mCtx的初始化:
mCtx = MainActivity.this;我比較喜歡在每個Activity中都創建一個 mCtx 對象,這樣使用起來就會很方便,比如說創建Toast或者Adapter時很省事。個人使用Toast 我其實喜歡在Activity中封裝一個方法專門用來顯示Toast:
private void showToast(String words){ Toast.makeText(mCtx, words, Toast.LENGTH_SHORT).show(); }這樣每次要使用Toast的時候,我只需要調用 showToast("要顯示的語句")。 這樣顯得更加簡潔,當然是個人愛好了。
好了,第一次就講到這裡吧,我覺得也沒有什麼好寫的,控件的話主要是知道,會用就可以了,當然也可以自定義控件,在後面的章節再來討論。
下面附上 Android文檔 的 chm文件,如果要查文檔,就可以用這個。當然推薦是到google官網上去查咯,被封了,沒錢翻牆,就將就用吧!
Android 6.0版本(Api 23)推出了很多新的特性, 大幅提升了用戶體驗, 同時也為程序員帶來新的負擔.動態權限管理就是這樣, 一方面讓用戶更加容易的控制自己的
最近,華為的新機可以說是不斷湧出,這不,剛剛發布了由吳亦凡代言的榮耀8新機,隨之又發布了華為麥芒5,那麼有很多朋友都在問,麥芒5和榮耀8哪個好?麥芒5和榮耀
很多朋友都說lollipop出來想試用一下,結果在網官下載的android studio 都是20版本,也沒有看見更新到android 5.0。 我也在網上狂了一下,
AsyncTask不僅方便我們在子線程中對UI進行更新操作,還可以借助其本身的線程池來實現多線程任務。下面是一個使用AsyncTask來實現的多線程下載例子。01 效果圖