亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Android開發(fā)之關(guān)于項(xiàng)目

 更新時(shí)間:2016年02月26日 09:53:04   投稿:hebedich  
本文是此系列文章的第二篇,給大家介紹的是項(xiàng)目相關(guān)的內(nèi)容,非常的細(xì)致全面,有需要的小伙伴可以參考下

本系列文章會(huì)根據(jù)項(xiàng)目的進(jìn)度進(jìn)行相關(guān)介紹,其會(huì)分為多個(gè)模塊,每個(gè)模塊互不依賴,各個(gè)模塊都是單獨(dú)的學(xué)習(xí)內(nèi)容,如sqlite學(xué)習(xí)模塊,contacts聯(lián)系人模塊等。

新建項(xiàng)目

相信大部分童鞋都可以自定義項(xiàng)目了,那么在此,我簡單介紹下android studio新建項(xiàng)目的過程。

最終,android studio會(huì)為你生成2個(gè)build.gradle文件,你可以選擇android視圖瀏覽文件,根據(jù)google最新提供的sdk版本,我們把項(xiàng)目設(shè)置為api 14~23,打開你的project項(xiàng)目的gradle文件,在dependencies中

classpath 'com.android.tools.build:gradle:1.5.0'

你不必在意這一版本是否和我一致,因?yàn)槟J(rèn)的jcenter倉庫使用的是https且服務(wù)器在國外,我們將buildscript下的repositories和allprojects下的repositories添加

mavenLocal()
maven{ url 'http://maven.oschina.net/content/groups/public/'}

其含義為優(yōu)先在本地倉庫和開源中國maven倉庫搜尋jar或者aar包。

子模塊

你會(huì)發(fā)現(xiàn),android studio會(huì)默認(rèn)為你創(chuàng)建demo模塊,其主要包含3部分:

  1. plugin android插件
  2. android android代碼塊,用于定義app的版本構(gòu)建信息
  3. dependencies 該模塊的依賴庫

因?yàn)樵擁?xiàng)目會(huì)涉及到很多模塊,而每個(gè)模塊都會(huì)對(duì)應(yīng)一個(gè)gradle文件,而每個(gè)gradle文件都會(huì)有對(duì)應(yīng)的android構(gòu)建信息,這些信息大部分重復(fù),且維護(hù)起來非常困難,因此,我們提前修改:

subprojects{  
  configure(allprojects - project(':demo')) {
    apply plugin: 'com.android.library'
    android {
      compileSdkVersion 23
      buildToolsVersion '23.0.2'
  
      defaultConfig {
        minSdkVersion 14
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
      }
      lintOptions {
        abortOnError false
      }
    }
    dependencies {
      testCompile 'junit:junit:4.12'
      compile 'com.android.support:appcompat-v7:23.0.2'
    }
  }

這樣,在你新建的模塊中,你完全可以去除掉該模塊對(duì)應(yīng)的gradle文件中的代碼,是不是很方便?

demo模塊的搭建

該模塊是運(yùn)行在你手機(jī)上的app,所以基本骨架和UI部分需要在此編寫。對(duì)應(yīng)的相關(guān)模塊將會(huì)如下圖所示:

那么如何展示這些模塊的特性呢?

在此,我向大家介紹AppCompatActivity和ButterKnife以及CoordinatorLayout,AppBarLayout,CollapsingToolbarLayout,Toolbar,NestedScrollView的使用,當(dāng)然也包括RecyclerView,CardView的使用。

其中大部分都是android v7包中的新組件,需要大家系統(tǒng)學(xué)習(xí),ButterKnife則是jk大神的依賴注入框架。

ButterKnife的使用詳解

神馬是ButterKnife,利用注解,你不再使用findviewbyid初始化視圖了。關(guān)于ButterKnife的詳細(xì)介紹,在此就不多言了,那么如何使用它呢?

在使用它之前,你需要android studio的一個(gè)強(qiáng)大插件Zelezny,關(guān)于安裝插件,可以翻看第一篇文章:

安裝完成后重啟android studio。

比如現(xiàn)在你在你的activity_main.xml中可以定義一個(gè)button,并賦值給其id。然后打開你的MainActivity.java文件,將光標(biāo)移至R.layout.activity_main上,使用快捷鍵ALT + Insert鍵(注意我使用的eclipse快捷鍵),選擇generate butterknife injections,選擇確認(rèn),該插件會(huì)自動(dòng)為你生成@Bind,以及Butterknife.bind(this),就像這樣:

ButterKnife.bind(this)

當(dāng)你在某activity或者某fragment中使用@Bind注解的時(shí)候,你需要在oncreate方法上添加該方法,其含義為綁定該視圖,即@Bind中的id會(huì)自動(dòng)在該視圖對(duì)應(yīng)的layout中尋找,所以其需要在setContentView方法之后添加。特別注意的是ButterKnife.bind(this)在fragment中并不適用,你需要使用:

public class FancyFragment extends Fragment {
   @Bind(R.id.button1) Button button1;
   @Bind(R.id.button2) Button button2;

   @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
          View view = inflater.inflate(R.layout.fancy_fragment, container, false);
          ButterKnife.bind(this, view);
          // TODO Use fields...
          return view;
         }

   @Override public void onDestroyView() {
          super.onDestroyView();
          ButterKnife.unbind(this);
         }
    }

可能你會(huì)問了,Butterknife是不是利用反射,那樣將會(huì)導(dǎo)致性能問題。其實(shí)呢,大家不用擔(dān)心,代碼會(huì)在加載視圖的時(shí)候自動(dòng)生成,自動(dòng)生成的代碼如下所示:

public void bind(ExampleActivity activity) {
 activity.subtitle = (android.widget.TextView) activity.findViewById(2130968578);
 activity.footer = (android.widget.TextView) activity.findViewById(2130968579);
 activity.title = (android.widget.TextView) activity.findViewById(2130968577);
}

如果大家還是不放心的話,可以利用debug模式,查看bind方法。

監(jiān)聽綁定

比如你的視圖里面有多個(gè)button,這時(shí)候,你肯定是先初始化這些button,然后再為每個(gè)button添加監(jiān)聽事件,然后該類實(shí)現(xiàn)onClick接口,重寫該接口,利用switch方法,判斷點(diǎn)擊了哪個(gè)按鈕。其實(shí),你可以使用ButterKnife:

@OnClick(R.id.submit)
public void submit(View view) {
 // TODO submit data to server...
}

而對(duì)于的參數(shù)是可選的:

@OnClick(R.id.submit)
public void submit() {
 // TODO submit data to server...
}

定義一個(gè)特殊類型,其會(huì)為你自動(dòng)轉(zhuǎn)換:

@OnClick(R.id.submit)
public void sayHi(Button button) {
 button.setText("Hello!");
}

那么你有多個(gè)按鈕呢:

@OnClick({ R.id.door1, R.id.door2, R.id.door3 })
public void pickDoor(DoorView door) {
 if (door.hasPrizeBehind()) {
  Toast.makeText(this, "You win!", LENGTH_SHORT).show();
 } else {
  Toast.makeText(this, "Try again", LENGTH_SHORT).show();
 }
}

是不是超級(jí)方便?。?!

關(guān)于ButterKnife的詳細(xì)介紹和使用方法,你可以查看:http://jakewharton.github.io/butterknife/

好了,今天就講這么多了,下一篇,將會(huì)為你帶來項(xiàng)目的搭建和AppCompatActivity,CoordinatorLayout,AppBarLayout,CollapsingToolbarLayout,Toolbar,NestedScrollView的使用?。。?/p>

相關(guān)文章

最新評(píng)論