編輯:關於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 - 動態權限管理的解決方案
Android 6.0版本(Api 23)推出了很多新的特性, 大幅提升了用戶體驗, 同時也為程序員帶來新的負擔.動態權限管理就是這樣, 一方面讓用戶更加容易的控制自己的
麥芒5和榮耀8哪個好 麥芒5和榮耀8對比
最近,華為的新機可以說是不斷湧出,這不,剛剛發布了由吳亦凡代言的榮耀8新機,隨之又發布了華為麥芒5,那麼有很多朋友都在問,麥芒5和榮耀8哪個好?麥芒5和榮耀
Android lollipop 更新問題
很多朋友都說lollipop出來想試用一下,結果在網官下載的android studio 都是20版本,也沒有看見更新到android 5.0。 我也在網上狂了一下,
android使用AsyncTask實現多線程下載實例
AsyncTask不僅方便我們在子線程中對UI進行更新操作,還可以借助其本身的線程池來實現多線程任務。下面是一個使用AsyncTask來實現的多線程下載例子。01 效果圖