Android學習(二)

學號 20189214 《Android程序設計》第七週學習總結

教材學習內容總結

監聽

設置點擊監聽的5種方式html

方法1:直接用匿名內部類

這是最經常使用的一種方法,直接setXXXListener後,重寫裏面的方法便可。但一般是臨時使用一次,複用性不高。java

public class MainActivity extends Activity {    
    private Button btnshow;    
        
    @Override    
    protected void onCreate(Bundle savedInstanceState) {    
        super.onCreate(savedInstanceState);    
        setContentView(R.layout.activity_main);    
        btnshow = (Button) findViewById(R.id.btnshow);    
        btnshow.setOnClickListener(new OnClickListener() {    
            //重寫點擊事件的處理方法onClick()    
            @Override    
            public void onClick(View v) {    
                //顯示Toast信息    
                Toast.makeText(getApplicationContext(), "你點擊了按鈕", Toast.LENGTH_SHORT).show();    
            }    
        });    
    }        
}

方法2:使用內部類

能夠在該類中進行復用,可直接訪問外部類的全部界面組件。android

public class MainActivity extends Activity {    
    private Button btnshow;    
    @Override    
    protected void onCreate(Bundle savedInstanceState) {    
        super.onCreate(savedInstanceState);    
        setContentView(R.layout.activity_main);    
        btnshow = (Button) findViewById(R.id.btnshow);    
        //直接new一個內部類對象做爲參數    
        btnshow.setOnClickListener(new BtnClickListener());    
    }     
    //定義一個內部類,實現View.OnClickListener接口,並重寫onClick()方法    
    class BtnClickListener implements View.OnClickListener    
    {    
        @Override    
        public void onClick(View v) {    
            Toast.makeText(getApplicationContext(), "按鈕被點擊了", Toast.LENGTH_SHORT).show();   
        }    
    }

另外建立一個處理事件的Java文件,這種形式用的比較少,由於外部類不能直接訪問用戶界面類中的組件,要經過構造方法將組件傳入使用。編程

MyClick.java框架

public class MyClick implements OnClickListener {    
    private TextView textshow;    
    //把文本框做爲參數傳入    
    public MyClick(TextView txt)    
    {    
        textshow = txt;    
    }    
    @Override    
    public void onClick(View v) {    
        //點擊後設置文本框顯示的文字    
        textshow.setText("點擊了按鈕!");    
    }    
}

MainActivity.javaide

public class MainActivity extends Activity {    
    private Button btnshow;    
    private TextView txtshow;    
    @Override    
    protected void onCreate(Bundle savedInstanceState) {    
        super.onCreate(savedInstanceState);    
        setContentView(R.layout.activity_main);    
        btnshow = (Button) findViewById(R.id.btnshow);    
        txtshow = (TextView) findViewById(R.id.textshow);    
        //直接new一個外部類,並把TextView做爲參數傳入    
        btnshow.setOnClickListener(new MyClick(txtshow));    
    }         
}

方法4:直接使用Activity做爲事件監聽器

讓Activity類實現XxxListener事件監聽接口,在Activity中定義重寫對應的事件處理器方法,這種方法用的比較少。佈局

//讓Activity方法實現OnClickListener接口    
public class MainActivity extends Activity implements OnClickListener{    
    private Button btnshow;    
    @Override    
    protected void onCreate(Bundle savedInstanceState) {    
        super.onCreate(savedInstanceState);    
        setContentView(R.layout.activity_main);    
            
        btnshow = (Button) findViewById(R.id.btnshow);    
        //直接寫個this    
        btnshow.setOnClickListener(this);    
    }    
    //重寫接口中的抽象方法    
    @Override    
    public void onClick(View v) {    
        Toast.makeText(getApplicationContext(), "點擊了按鈕", Toast.LENGTH_SHORT).show();         
    }         
}

方法5:直接綁定到標籤

在xml佈局文件中對應得Activity中定義一個事件處理方法。學習

MainAcivity.java:this

public class MainActivity extends Activity {    
    @Override    
    protected void onCreate(Bundle savedInstanceState) {    
        super.onCreate(savedInstanceState);    
        setContentView(R.layout.activity_main);     
    }    
    //自定義一個方法,傳入一個view組件做爲參數    
    public void myclick(View source)    
    {    
        Toast.makeText(getApplicationContext(), "按鈕被點擊了", Toast.LENGTH_SHORT).show();    
    }    
}

main.xml佈局文件:.net

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    
    xmlns:tools="http://schemas.android.com/tools"    
    android:id="@+id/LinearLayout1"    
    android:layout_width="match_parent"    
    android:layout_height="match_parent"    
    android:orientation="vertical" >    
    <Button     
        android:layout_width="wrap_content"    
        android:layout_height="wrap_content"    
        android:text="按鈕"    
        android:onClick="myclick"/>    
 </LinearLayout>

菜單

菜單是Android應用中很是重要且常見的組成部分,主要能夠分爲三類:選項菜單、上下文菜單/上下文操做模式以及彈出菜單。
它們的主要區別以下:

  1. 選項菜單是一個應用的主菜單項,用於放置對應用產生全局影響的操做,如搜索/設置。
  2. 上下文菜單是用戶長按某一元素時出現的浮動菜單。它提供的操做將影響所選內容,主要應用於列表中的每一項元素(如長按列表項彈出刪除對話框)。上下文操做模式將在屏幕頂部欄(菜單欄)顯示影響所選內容的操做選項,並容許用戶選擇多項,通常用於對列表類型的數據進行批量操做。
  3. 彈出菜單以垂直列表形式顯示一系列操做選項,通常由某一控件觸發,彈出菜單將顯示在對應控件的上方或下方。它適用於提供與特定內容相關的大量操做。

    定義方式

  • 使用XML能夠得到更清晰的菜單結構
  • 將菜單內容與應用的邏輯代碼分離
  • 可使用應用資源框架,爲不一樣的平臺版本、屏幕尺寸建立最合適的菜單(如對drawable、string等系統資源的使用)

    重要元素

  • 是菜單項的容器。 元素必須是該文件的根節點,而且可以包含一個或多個 元素。
  • 是菜單項,用於定義MenuItem,能夠嵌套 元素,以便建立子菜單。
  • 元素的不可見容器(可選)。可使用它對菜單項進行分組,使一組菜單項共享可用性和可見性等屬性。

    菜單分類

  • 常駐菜單(always,ifRoom)
  • 溢出菜單(ifRoom,never)
  • 顯示文字不顯示圖標(withText)

關鍵代碼

//獲取MenuInflater
MenuInflater inflater=getMenuInflater();
//加載Menu資源
inflater.inflate(R.menu.option_menu_normal,menu);

片斷

片斷生命週期

建立片斷

要想建立片斷,必須建立 Fragment 的子類(或已有其子類)。Fragment 類的代碼與 Activity 很是類似。它包含與 Activity 相似的回調方法,如 onCreate()、onStart()、onPause() 和 onStop()。

添加界面

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    return inflater.inflate(R.layout.fragment_next, container, false);
}

出發一個新的事件做爲對片斷事件的響應,並讓活動來處理它。
向 Activity 添加片斷

  1. 在 Activity 的佈局文件內聲明片斷
  2. 經過編程方式將片斷添加到某個現有 ViewGroup

片斷管理

FragmentTransaction類提供了方法來添加、刪除和替換片斷。當完成操做,調用FragmentTransaction.commit()方法來提交修改。有add、remove、replace方法。

與 Activity 通訊

View listView = getActivity().findViewById(R.id.list);
ExampleFragment fragment = (ExampleFragment) getFragmentManager().findFragmentById(R.id.example_fragment);

viewPager

viewPager在使用的過程當中,最重要的是setOnPageChangeListener。通常有兩個操做,一個用於手指滑動翻頁,一個是直接setCurrentItem。

代碼調試中的問題和解決過程

  • 問題1:使用ViewPage與fragement來實現滑動效果
  • 問題1解決方案:
    1. extend類FragmentPagerAdapter填充ViewPage
    2. 在listener中調用ViewPage.setCurrentItem()方法實現跳轉。

代碼託管

上週考試錯題總結

問題1:

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一週 150/200 2/2 20/20
第二週 200/400 1/3 20/40
第三週 100/500 1/4 10/50
第四周 200/700 1/5 15/65
第五週 1486/2186 1/6 15/80
第六週 1400/3586 1/7 18/98
第七週 1400/5000 1/7 18/116
  • 計劃學習時間:16小時

  • 實際學習時間:18小時

參考資料

相關文章
相關標籤/搜索