Material Design實現的美觀的登陸界面

官方介紹學習: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 Library

例子中採用了Material Design的庫的控件,可是具體使用細節沒有寫出來,容易遇到不少問題。android

Bug: Error inflating class android.support.design.widget.TextInputLayout :添加完xml後,運行時報錯。

解決方法: 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">

知識梳理:

  1. TextInputLayout是繼承於LinearLayout的容器,做用於TextView。並且,跟ScrollView同樣,只能包裹一個子節點。它的效果是讓Textview中的hint內容懸浮在編輯框之上,而普通textview中的hint則會被覆蓋。是Android 5.0之後新加的庫的控件(Android Design Support Library)。所以,須要將其library導入到項目中。因此,這就是爲何第一段代碼要加入的緣由。app

  2. 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 Framework

Butter Knife框架是專門爲Android View設計的綁定註解ide

Bug:The import butterknife.InjectView cannot be resolved:

解決方法:佈局

step1:添加庫依賴:性能

1.在Project的build.gradle中添加:學習

classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'

2.在Module的build.gradle中添加:

  • 在代碼頂部添加:on the top of the code!!!!
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/

相關文章
相關標籤/搜索