使用AppCompat-21适配Material Design

使用AppCompat-21适配Material Design


设置compileSdkVersion为21

android {
    compileSdkVersion 21
    buildToolsVersion "21.0.0"

    defaultConfig {
        applicationId "com.way.material"
        minSdkVersion 14
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
     ...
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:21.+'
}

自定义主题

自定义主题继承自Theme.AppCompat。创建values-v21文件夹,在style.xml中用Base theme作为父类然后覆写新主题theme。

  • values/style.xml

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <style name="AppTheme" parent="AppTheme.Base"/>
    
        <style name="AppTheme.Base" parent="Theme.AppCompat">
            <item name="colorPrimary">@color/colorPrimary</item>
            <item name="colorPrimaryDark">@color/colorPrimary</item>
            <item name="android:windowNoTitle">true</item>
            <item name="windowActionBar">false</item>
        </style>
    </resources>
    
  • values-v21/style.xml

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
    <style name="AppTheme" parent="AppTheme.Base">
        <item name="android:windowContentTransitions">true</item>
        <item name="android:windowAllowEnterTransitionOverlap">true</item>
        <item name="android:windowAllowReturnTransitionOverlap">true</item>
        <item name="android:windowSharedElementEnterTransition">@android:transition/move</item>
        <item name="android:windowSharedElementExitTransition">@android:transition/move</item>
    </style>
    </resources>
    

在AndroidManifest.xml中适用新主题

<application
    ...
    android:theme="@style/AppTheme">
   ...
</application>

为ToolBar适配主题

  • 设置Toolbar背景色

    <android.support.v7.widget.Toolbar
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="?attr/colorPrimaryDark"/>
    
  • Activitiy必须继承自ActionBarActivity

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(getLayoutResource());
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        if (toolbar != null) {
            setSupportActionBar(toolbar);
        }
    }
    

5.0系统Activity转场动画

Lollipop提供了一系列兼容类支持这些新特性

ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(activity, transitionView, DetailActivity.EXTRA_IMAGE);
ActivityCompat.startActivity(activity, new Intent(activity, DetailActivity.class), options.toBundle());

我说完了

I Don't Want Your Money, I Want Aragaki Yui.