Android學習筆記(第一篇)編寫第一個程序Hello World+Activity


PS:終於開始正式的搞Android了...無人帶的一介菜鳥,我還是自己默默的努力吧...

 

學習內容:

1.編寫第一個Hello World程序..

  學習Android,那么就需要有一個編譯器來集成這個環境,然后在搭建好環境的編譯器上進行開發就可以了,我所介紹的都是在Eclipse上來進行Android的開發...環境搭建在這里我就不進行介紹了..在這里就直接來開發...

  先新建一個項目,想必新建項目這東西大家都明白...在建立完Android項目以后,現在一般都是4.X以后的版本了...因此在4.X以后的版本的項目中的layout布局中都會增加一個fragment.xml文件...這個文件被稱之為碎片功能,由於自己也是新手,這個東西也是剛剛接觸,對這個東西也不是很了解,因此我先直接刪除了fragment.xml文件,只是用activity_main.xml文件。。。刪除fragment.xml文件后,需要修改MainActivity.java文件,否則會直接出現錯誤..修改內容如下...//注釋掉的部分,代表我們需要修改的部分...直接刪除掉也可以,注釋掉也行...

package com.example.android_hello;

import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.os.Build;
import android.app.Activity;
public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

//        if (savedInstanceState == null) {
//            getSupportFragmentManager().beginTransaction()
//                    .add(R.id.container, new PlaceholderFragment()).commit();
//        }
    }

    @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 boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

    /**
     * A placeholder fragment containing a simple view.
     */
//    public static class PlaceholderFragment extends Fragment {
//
//        public PlaceholderFragment() {
//        }
//
//        @Override
//        public View onCreateView(LayoutInflater inflater, ViewGroup container,
//                Bundle savedInstanceState) {
//            View rootView = inflater.inflate(R.layout.fragment_main, container,
//                    false);
//            return rootView;
//        }
//    }

}

同時我們還需要修改activity.xml文件,把其中的內容全部刪除掉。然后以下代碼..

放入一個絕對布局和一個文本顯示組件...
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"   
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
    <TextView 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world">
        
    </TextView>
</RelativeLayout>

  然后直接進行運行就可以了...其實直接建立出來的Android項目也是可以直接進行運行的,運行的結果也是會在模擬器上顯示出Hello World...因為新手的原因,因此就使用了常規的模式...以后再對fragment進行深入的研究...
  我這個在建立了4.X以后的版本后,會多一個appcompat文件,里面包含了一些要調用的類,這是在22.1以后的版本增加的一個新的東西,這個類的提供可以帶來更多的便利..這個文件是不允許刪除的...刪除掉以后程序會報錯...

2.Activity的了解...

  Activity是Android程序的四大組件之一...Activity是程序的應用層...程序的每一個顯示屏幕就是一個Activity...Activity可以理解成一個JSP文件...Activity是無法直接顯示的,它是一個抽象層,一個殼子,顯示的內容就是View或ViewGroup,就是用戶界面組件..這個下章再說...先有個印象...

  Activity是具有生命周期的...手機最重要也是最基礎的功能是打電話,也就意味着電話來的時候可能隨時要把現在的程序暫停,如果電量不足的時候也可能隨時要把現有程序關閉;因此Android程序和電腦上的程序有所不同,具體到Activity,Activity的生命周期不是自身控制的,而是由Android系統控制的。

Activity的四種基本狀態...

i.running運行狀態...

這個狀態表示正在運行的Activity,顯示在屏幕的最前端,可以和用戶進行相應的交互...

ii.Paused暫停狀態...

Paused狀態表示的現在的Activity被一個透明層或者是另一個非全屏的Activity進行了覆蓋...雖然可見,但是無法實現用戶交互...

iii.Stop停止狀態...

當一個Activity被另一個Activity完全覆蓋的時候,用戶是無法見到的...

iv.Killed殺死狀態

表示Activity根本沒有進行啟動或者是直接被系統終結殺死的狀態...

Activity的生命周期圖...                                                

Activity棧。。。。


  正在運行的Activity 處在在棧的最頂端,它是運行狀態的,當有新Activity進入屏幕最上端時,原來的Activity就會被壓入第二層,如果他的屏幕沒有被完全遮蓋,那么他處於Pause狀態,如果他被遮蓋那么他處於Stop狀態。當然不管你出於任何一層,都可能在系統覺得資源不足時被強行關閉,當然關閉時在棧底的程序最先被關閉。
  譬如:當你在程序中調用 Activity.finish()方法時,結果和用戶按下 BACK 鍵一樣:他告訴 Activity Manager該Activity實例可以被“回收”。隨后 Activity Manager 激活處於棧第二層的 Activity 並重新入棧,把原 Activity 壓入到棧的第二層,從 Running 狀態轉到 Paused 狀態。
  三.實例:觀察翻轉屏幕導致的Activity狀態變化
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.os.Build;
import android.widget.TextView;
import android.app.Activity;
import android.widget.ImageView;
import android.app.Activity;
/** Called when the activity is first created. */
public class MainActivityLife extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Log.i(tag, “onCreate”);
    }
@Override
public void onStart(){
    super.onStart();
    Log.i(tag, “onStart”);
    }
@Override
public void onPause(){
    super.onPause();
    Log.i(tag, “onPause”);
    }    
@Override
public void onResume(){
    super.onResume();
    Log.i(tag, “onResume”);
    }
@Override
public void onStop(){
    super.onStop();
    Log.i(tag, “onStop”);
    }
@Override
public void onDestroy(){
    super.onDestroy();
    Log.i(tag, “onDestroy”);
    }
}

通過運行,我們會在LogCat控制台下看到輸出結果...和下面結果類似...

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM