首页 >> 职场 >> Android技术分享| Activity 过渡动画 — 让读取更加炫酷

Android技术分享| Activity 过渡动画 — 让读取更加炫酷

2024-01-31 职场

android:id="@+id/tv_shared_element" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_grity="bottom" android:layout_marginTop="56dp" android:layout_marginBottom="72dp" android:grity="center_horizontal" android:text="@string/app_txt" android:textColor="#323232" android:textSize="18sp" android:transitionName="shared element" tools:ignore="UnusedAttribute" />

留意:我们只能为两个该网站的共同成分(textview)特设一个属性:

android:transitionName="shared element"

并且只能保证两个 textview 的 transitionName 特设的具体内容保持一致,否者将难以超过包涵成分的OVA敏感度。

先前的更为重要一步:更改 startActivity(); 模板具体内容,因为我们设定了包涵成分,所以到同步进行原则上,这样 startActivity 早先能够找到期望,所以触发 activity 的预定义因改为这样:

//这里的 sharedElementName 只能与 xml 档案中所特设的值保持一致,否则难以包涵 // tvSharedElement 暗示要参与包涵的 view startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(this, tvSharedElement, "shared element").toBundle());

如果你的两个 activity 中所有两个及以上的具体内容需包涵成分OVA时,你须要修改预定义为:

startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(this, Pair.create((View) tvSharedElement, "shared element")) .toBundle());

这里通过 Pair.create(view,“shared name”);来起源于需包涵的成分。

好了,本篇关于 android5.x 给予的几种过渡到OVA敏感度就展示再多,虽然过渡到OVA敏感度漂亮,但是也要合理的运用,也不必每一个 activity 都特设过渡到OVA。那么,如上动态图摄像的一样,本情形更为重要预定义将在一个大贴成:

情形预定义

VainActivity 预定义如下:

package com.xww.activityanims; import android.annotation.SuppressLint; import android.app.ActivityOptions; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.AppCompatButton; import android.support.v7.widget.AppCompatTextView; import android.util.Pair; import android.view.View; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; @SuppressLint("NewApi") public class MainActivity extends AppCompatActivity { @BindView(R.id.btn_explode) AppCompatButton btnExplode; @BindView(R.id.btn_slide) AppCompatButton btnSlide; @BindView(R.id.btn_fade) AppCompatButton btnFade; @BindView(R.id.tv_shared_element) AppCompatTextView tvSharedElement; @Override protected void onCreate(Bundle sedInstanceState) { super.onCreate(sedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); } @OnClick(R.id.btn_explode) void onExplodeClick() { Intent intent = new Intent(this, AnimationsActivity.class); startActivityWithAnimation(intent, "explode"); } @OnClick(R.id.btn_slide) void onSlideClick() { Intent intent = new Intent(this, AnimationsActivity.class); startActivityWithAnimation(intent, "slide"); } @OnClick(R.id.btn_fade) void onFadeClick() { Intent intent = new Intent(this, AnimationsActivity.class); startActivityWithAnimation(intent, "fade"); } private void startActivityWithAnimation(Intent intent, String animType) { intent.putExtra("anim", animType); //这里的 sharedElementName 只能与 xml 档案中所特设的值保持一致,否则难以包涵 // tvSharedElement 暗示要参与包涵的 view // startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(this, tvSharedElement, // "shared element").toBundle()); startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(this, Pair.create((View) tvSharedElement, "shared element")) .toBundle()); } }

接着是 AnimationsActivity 的预定义,这是一个开启OVA的 Activity ,预定义如下:

package com.xww.activityanims; import android.annotation.SuppressLint; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.AppCompatTextView; import android.transition.Explode; import android.transition.Fade; import android.transition.Slide; import android.view.Window; import butterknife.BindView; import butterknife.ButterKnife; @SuppressLint("NewApi") public class AnimationsActivity extends AppCompatActivity { @BindView(R.id.tv_anim_type) AppCompatTextView tvAnimType; @Override protected void onCreate(@Nullable Bundle sedInstanceState) { super.onCreate(sedInstanceState); //在需触发的 activity 中所开启OVA的相似性 getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS); setContentView(R.layout.activity_animations); ButterKnife.bind(this); setEnterAnim(); } @SuppressWarnings("ConstantConditions") private void setEnterAnim() { final String animType = (String) getIntent().getExtras().get("anim"); tvAnimType.setText(animType); switch (animType) { case "explode": getWindow().setEnterTransition(new Explode()); break; case "slide": getWindow().setEnterTransition(new Slide()); break; case "fade": getWindow().setEnterTransition(new Fade()); break; } } }

AnimationsActivity 格局档案如下:

让我们的 Activity 的读取愈发炫酷起来吧!

止鼾用什么药最见效
泰国试管婴儿多少钱
老人夜尿频多吃什么药
夜尿频多怎么办快速解决
哈萨克斯坦试管婴儿多少钱
友情链接