官方介紹學習:https://material.google.com/ 英文版基於Material Design的登陸界面:http://sourcey.com/beautiful-android-login-and-signup-screens-with-material-design/ 翻譯版基於Material Design的登陸界面:https://gold.xitu.io/entry/573bb4b6df0eea005e758f0bjava
例子中採用了Material Design的庫的控件,可是具體使用細節沒有寫出來,容易遇到不少問題。android
解決方法: 1.在module的gradle中添加依賴git
compile 'com.android.support:appcompat-v7:24.0.0' compile 'com.android.support:design:24.0.0'
而且:修改manifest文件中Application標籤下的theme:github
android:theme="@style/Theme.AppCompat">
TextInputLayout是繼承於LinearLayout的容器,做用於TextView。並且,跟ScrollView同樣,只能包裹一個子節點。它的效果是讓Textview中的hint內容懸浮在編輯框之上,而普通textview中的hint則會被覆蓋。是Android 5.0之後新加的庫的控件(Android Design Support Library)。所以,須要將其library導入到項目中。因此,這就是爲何第一段代碼要加入的緣由。app
Theme.AppCompat Vs 普通版 AppTheme:在Android 4.0以前的Android,能夠說是沒有設計可言,也就是普通版AppTheme了。在4.0以後,推出了Android Design,界面有所改善,在程序實現上相應的是Holo風格(Theme.Holo.Light、Theme.Holo.Light.DarkActionBar)。爲了讓4.0以前的版本也兼容,就須要引入v7包, 並能使用其對應兼容的Theme.AppCompat.Light、Theme.AppCompat.Light.DarkActionBar ;而Android 5.0推出了Material Design,爲了兼容,也須要引入v7包, 並可以使用其相對應兼容的Material Design Theme:Theme.AppCompat.Light、Theme.AppCompat.Light.DarkActionBar。這就是爲何第二段代碼須要加入。框架
Butter Knife框架是專門爲Android View設計的綁定註解ide
解決方法:佈局
step1:添加庫依賴:性能
1.在Project的build.gradle中添加:學習
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
2.在Module的build.gradle中添加:
apply plugin: 'com.android.application' apply plugin: 'android-apt'
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:24.0.0' compile 'com.android.support:design:24.0.0' //for the butterknife compile 'com.jakewharton:butterknife:8.0.1' apt 'com.jakewharton:butterknife-compiler:8.0.1' }
step2:刪除 import butterknife.InjectView,在MainActivity中添加代碼:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); }
Butter Knife就是取代findViewById這樣的,使用 @Bind註解並傳入一個View ID,Butter Knife 就能夠找到而且自動地對你的佈局中的View進行轉換並綁定到類成員上。相比與緩慢的反射機制,Butter Knife的代碼是生成的,所以沒必要擔憂註解的性能問題。調用bind來生成這些代碼,能夠查看或調試這些代碼。bug出現是由於例子中的注入方式是早些版本的,最新版本的應該按照http://jakewharton.github.io/butterknife/,以及註解文檔:http://jakewharton.github.io/butterknife/javadoc/