android学习(十八) 添加动画(一)淡入淡出的视图

    xiaoxiao2021-04-15  30

    完成以下文件: * src/CrossfadeActivity.java * layout/activity_crossfade.xml * menu/activity_crossfade.xml

    创建视图

    创建两个视图要淡入淡出,下面的示例创建进度指示器和一个可滚动的文本视图:

    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <ScrollView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/content"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:lineSpacingMultiplier="1.2" android:text="@string/text" style="?android:textAppearanceMedium" android:padding="16dp"/> </ScrollView> <ProgressBar android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/loading_spinner" android:layout_gravity="center" style="?android:progressBarStyleLarge"/> </FrameLayout>

    建立动画

    为要交叉衰减的意见创建成员变量。修改动画中的观点,当你需要这些引用更高版本。对于正在消失的视图,将其可见性GONE。这防止view占用布局空间所以从计算中省略它,加快处理。缓存config_shortAnimTime 中的成员变量系统属性。此属性为动画标准“短”的持续时间。这个时间是理想的发生非常频繁微妙的动画或动画。config_longAnimTime而和config_mediumAnimTime如果你想使用它们也是可用的。 public class CrossfadeActivity extends AppCompatActivity { private View mContentView; private View mLoadinbgView; //段动画 private int mShortAnimationDuration; ... @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_crossfade); mContentView = findViewById(R.id.content); mLoadinbgView = findViewById(R.id.loading_spinner); //最初隐藏内容视图 mContentView.setVisibility(View.GONE); //检索和缓存系统默认的"短"动画时间 mShortAnimationDuration = getResources().getInteger(android.R.integer.config_shortAnimTime); } }

    浅入浅出的视图

    private void crossfade(){ //将内容视图设置为0%的不透明度,但可见,因此动画中可见(但完全透明)。 mContentView.setAlpha(0f); mContentView.setVisibility(View.VISIBLE); //将内容视图动画为100%的不透明度,并清除视图上设置的任何动画监听器。 mContentView.animate().alpha(1f) .setDuration(mShortAnimationDuration) .setListener(null); //动画加载视图为0%不透明。动画结束后 // ,设置它的可见性为GONE作为优化步骤(它不会参与布局流程等) mLoadinbgView.animate().alpha(0f) .setDuration(mShortAnimationDuration) .setListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { super.onAnimationEnd(animation); mLoadinbgView.setVisibility(View.GONE); } }); }

    添加菜单

    @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_crossfade,menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()){ case R.id.activity_crossfade: crossfade(); break; } return true; }

    摘自android developer

    转载请注明原文地址: https://ju.6miu.com/read-671601.html

    最新回复(0)