2016年1月5日 星期二

臨老學 Android Java


同事們離職,需要接收最近的項目,當中少不免有 Android 客戶端。一直都提不起勁去學習,今次沒法逃避。還好,有不明白的地方可以立即向同事請教,吸收力比自學快很多。

透過閱讀及理解同事的代碼,是其中一個方法;然而,我通常會想像出一個應用的介面,從參考中抓取合適的部份,然後套用到項目中。這是融匯貫通的方法。學到了把一個 XML 嵌入另一個 XML,得實現一下。還有好用的 Fragment,也嘗試了更換 Fragment 的測試。用起上來也很簡單。不難學,但很容易出錯。
@Override
protected void onResume()  {
  super.onResume();

  //----------------------------------------------------------------------------------------
  // Set header font
  TextView textView = (TextView)findViewById(R.id.header_title);
  _headerTitleView = textView;

  if (textView != null)  {
    AssetManager manager = getAssets();
    if (manager != null)  {
      try  {
        // createFromAsset will throw exception if font file not found
        Typeface font = Typeface.createFromAsset(manager, "fonts/Arapey-Italic.ttf");
        if (font != null)  {
          textView.setTypeface(font);
        }
      } catch (Exception e)  {
        Log.d("RootActivity", "### Typeface.createFromAsset error...");
      }
    }
  }

  //----------------------------------------------------------------------------------------
  // Set header title
  if (textView != null)  {
    textView.setText("Hello");
  }

  //----------------------------------------------------------------------------------------
  // Add listener to button
  ImageButton button = null;

  button = (ImageButton)findViewById(R.id.header_left_button_01);
  if (button != null)  {button.setOnClickListener(_onClickListener);}

  button = (ImageButton)findViewById(R.id.header_left_button_02);
  if (button != null)  {button.setOnClickListener(_onClickListener);}

  //----------------------------------------------------------------------------------------
  // Replace fragment
  WelcomeFragment fragment = new WelcomeFragment();
  changeFragment(fragment);

  //----------------------------------------------------------------------------------------
  // View.INVISIBLE = Allocated the space but just invisible
  // View.GONE = Without allocate the space and invisible
  RelativeLayout layout = (RelativeLayout)findViewById(R.id.header_container);
  layout.setVisibility(View.GONE);
}

沒有留言: