- v26.0.0-beta1 の話
- support library の minSdkVersion が 14 になった
- メソッドやクラスを削減して、メソッドカウントが約1.4k減った
- 今後より多くメソッドやクラスを削減したいので 約 30 classes / interfaces, 約 400 メソッドが deprecated になった
- later version で削除される予定
- Google Maven Repository で配布されるようになった
- Constraint Layout Library や Architecture Components Library も含まれる
- 過去の Support Library version (13.0.0 〜) も含まれる
- repositories{
- maven {
- // Google Maven Repository
- url "https://maven.google.com"
- }
- }
- dependencies {
- compile "com.android.support:appcopmat-v7:26.0.0-beta1"
- }
- New issue tracker https://issuetracker.google.com > Developer Tools > Support Libraries
- Android Studio で support library を開発できるようになった
- External contributions https://android.googlesource.com/platform/frameworks/support/
XML Font (14+)
- font を xml で指定できるようになった
- res/font/font1.ttf, res/font/xml_font.xml
- font-family で font をグループ化
- <?xml version="1.0" encoding="utf-8"?>
- <font-family xmlns:app="http://schemas.android.com/apk/res-auto">
- <font
- app:fontStyle="normal"
- app:fontWeight="400"
- app:font="@font/myfont_regular" />
- <font
- app:fontStyle="normal"
- app:fontWeight="800"
- app:font="@font/myfont_bold" />
- </font-family>
- <TextView ...
- android:fontFamily="@font/myfont"
- android:textStyle="bold" />
- Typeface typeface = ResourceCompat.getFont(context, R.font.myFont);
- textView.setTypeface(typeface);
Downloadable Fonts(14+)
- 今までもフォントファイルをアプリの中に持って使うことができたがアプリサイズが大きくなる要因
- Font Provider は font を fetch し、cache し、アプリが必要なフォントを返す
- 複数のアプリから単一のエントリーポイント(FontsContractCompat)を経て Font Provider にアクセスする
- 複数のアプリでメモリを節約できる
- Font Provider は Google Play Services を介して 800+ の Google Fonts を利用できる
- FontRequest request = new FontRequest(
- "com.example.fontprovider.authority",
- "com.example.fontprovider",
- "Name fo font",
- R.array.certs);
- FontsContractCompat.FontRequestCallback callback =
- new FontsContractCompat.FontRequestCallback() {
- @Override
- public void onTypefaceRetrieved(Typeface typeface) {}
- @Override
- public void onTypefaceRequestFailed(int reason) {}
- };
- FontsContractCompat.requestFont(context, request, callback, new Handler());
- https://developer.android.com/reference/android/support/v4/provider/FontsContractCompat.html
- https://developer.android.com/reference/android/support/v4/provider/FontRequest.html
- <!--xml version="1.0" encoding="utf-8"?-->
- <font-family xmlns:app="http://schemas.android.com/apk/res-auto">
- app:fontProviderAuthority="com.example.fontprovider.authority"
- app:fontProviderPackage="com.example.fontprovider"
- app:fontProviderQuery="dancing-script"
- app:fontProviderCerts="@array/certs">
- </font-family>
- これをレイアウトに指定したら、フォントを fetch して適用するまでやってくれる
- 適用できるまでの間はデフォルトのフォントで表示される
- Android Studio で google fonts からフォントを選択できるようになった(3.0)
- 自動で downloadedfont.xml が作られる
- Sample app
- Public Docs
- Google Fonts docs
- Google Play Services v11 beta
Emoji Compatibility Library (19+)
tofu 問題を解決するぞ- dependencies {
- compile "com.android.support:support-emoji:${version}"
- }
- FontRequest fontRequest = new FontRequest(
- "com.example.fontprovider",
- "com.example",
- "emoji compat Font Query",
- CERTIFICATES);
- );
- EmojiCompat.Config config = new FontRequstEmojiCompatConfig(this, fontRequest);
- EmojiCompat.init(config);
- Google Play Service がないデバイスをターゲットにするには
- Bundled configuration - 7MB
- dependencies {
- compile "com.android.support:support-emoji-bundled:${version}"
- }
- EmojiCompat.Config config = new BundledEmojiCompatConfig(this);
- EmojiCompat.init(config);
- android.support.text.emoji.widget.EmojiTextView, EmojiEditText, EmojiButton
- 自動で Emoji Compat を利用して Emoji を表示する
- Sample app
- Public Docs
- Google Play Services v11 beta
Autosizing TextView
- <TextView
- ...
- app:autoSizeTextType="uniform" />
xml で定義したサイズの中から一番合うサイズを選択してくれる
- <TextView
- ...
- app:autoSizeTextType="uniform"
- app:autoSizePresetSizes="@array/autosize_sizes" />
- <TextView
- ...
- app:autoSizeTextType="uniform"
- app:autoSizeMinTextSize="12sp"
- app:autoSizeMaxTextSize="100sp"
- app:autoSizeStepGranularity="2sp" />
DynamicAnimation (16+)
- Velocity, not duration
- Natural-looking animations
- Supports direct interaction
- SpringAnimation, FlingAnimation
- final SpringAnimation anim = new SpringAnimation(
- bugdroidImageView, // object to animate
- TRANSLATION_Y, // property to animate
- 0); // equilibrim state
- anim.getSpring()
- .setDampingRatio(0.7f /* lower is more bouncy */)
- .setStiffness(1500f /* higher oscillates faster */)
- anim.setStartVelocity(velocityTracker.getYVelocity())
- .start();
Vector Drawable Compat - FillType (14+)
- android:fillType
- Determines "inside" of shape
- Corresponds to SVG's fill-rule
- Commonly used by vector drawing tools
Animated Vector Drawable Compat - pathData morphing (14+)
- Animate <vector> android:pathData attribute
- Set valueFrom, valueTo using VectorDrawable path data
- Path formats must match
- <vector xmlns:android="http://schemas.android.com/apk/res/android"
- android:height="600dp"
- android:width="320dp"
- android:viewportHeight="600"
- android:viewportWidth="320">
- <group>
- <path android:name="buffalo_path"
- android:pathData="@string/buffalo" />
- </group>
- </vector>
- <objectAnimator
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:duration="1000"
- android:propertyName="pathData"
- android:valueFrom="@string/buffalo"
- android:valueTo="@string/hippo"
- android:valueType="pathType" />
- <animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
- android:drawable="@drawable/buffalo">
- <target android:name="buffalo_path"
- android:animation="@anim/buffalo_to_hippo" />
- </animated-vector>
- <animated-vector
- xmlns:aapt="http://schemas.android.com/aapt"
- xmlns:android="http://schemas.android.com/apk/res/android">
- <aapt:attr name="android:drawable">
- <vector
- android:height="600dp"
- android:width="320dp"
- android:viewportHeight="600"
- android:viewportWidth="320">
- <group>
- <path android:name="buffalo_path"
- android:pathData="@string/buffalo" />
- </group>
- </vector>
- </aapt:attr>
- <target android:name="buffalo_path"
- android:animation="@anim/buffalo_to_hippo" />
- </animated-vector>
- <animated-vector
- xmlns:aapt="http://schemas.android.com/aapt"
- xmlns:android="http://schemas.android.com/apk/res/android">
- <aapt:attr name="android:drawable">
- <vector
- android:height="600dp"
- android:width="320dp"
- android:viewportHeight="600"
- android:viewportWidth="320">
- <group>
- <path android:name="buffalo_path"
- android:pathData="@string/buffalo" />
- </group>
- </vector>
- </aapt:attr>
- <target android:name="buffalo_path">
- <aapt:attr name="android:animation">
- <objectAnimator
- android:duration="1000"
- android:propertyName="pathData"
- android:valueFrom="@string/buffalo"
- android:valueTo="@string/hippo"
- android:valueType="pathType" />
- </aapt:attr>
- </target>
- </animated-vector>
<pathInterpolator>
- Parity with platform AVD
- <objectAnimator> で利用 android:interpolator
- Used VectorDrawable (SVG-like) path data
- <pathInterpolator
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:pathData="M 0.0, 0.0 c 0.08,0.0 0.04,1.0 0.2,0.8 l 0.6,0.1 L 1.0,1.0" />
Wear
New support-wear moduleTV
LeanbackPreferenceDataStore
PreferenceDataStore- preference storage mechanism のカスタマイズを可能に
- class CloudDataStore extends PreferenceDataStore {
- @Override
- public void putBoolean(String key, boolean value) {
- // cache value immediately, launch async task to persist
- // data to cloud service.
- }
- @Override
- public void getBoolean(String key, boolean defValue) {
- // Return cached value.
- return false;
- }
- }
- // Set up this PreferenceFragment to store
- // and retrieve data using CloudDataStore.
- PreferenceManager prefManager = getPreferenceManager();
- CloudDataStore cloudStore = new CloudDataStore();
- prefManager.setPreferenceDataStore(cloudStore);
FragmentManager
executePendingTransaction(), commitNow(), and similar transaction calls are no longer allowed during FragmentManager state changes.FrameMetricsAggregator
- FrameMetricsAggregator
- Performance monitoring tool used to capture a variety of information about Activity drawing.
0 件のコメント:
コメントを投稿