ActivityOptionsCompat 转场动画 Palette 颜色拾取学习
2017-12-14 17:57
603 查看
ActivityOptionsCompat 转场动画 Palette 颜色拾取学习
本项目来自:https://github.com/WorldPeaceTogether/MaterialDesign
首先图片上的第一个场景
单个图片点击后,R.id.image指向图片view,ViewModel里边是数据
====》
跳转到了第二个场景
上边的跳转位置
补充,EXTRA_IMAGE是转场key
到了这个场景二后,
初始化数据时,设置了转场呼应的转换key配置
设置窗体滑动透明度等,发现去掉影响效果不明确
================================================================
下边是Palette的颜色根据bitmap提取类的例子
Palette 学习介绍:http://blog.csdn.net/lablenet/article/details/52340634
本项目来自:https://github.com/WorldPeaceTogether/MaterialDesign
首先图片上的第一个场景
public class MainActivity extends AppCompatActivity implements ImageRecyAdapter.OnItemClickListener
单个图片点击后,R.id.image指向图片view,ViewModel里边是数据
@Override public void onItemClick(View view, ViewModel viewModel) { DetailActivity.navigate(this, view.findViewById(R.id.image), viewModel); }
====》
跳转到了第二个场景
public class DetailActivity extends AppCompatActivity
上边的跳转位置
public static void navigate(AppCompatActivity activity, View transitionImage, ViewModel viewModel) { Intent intent = new Intent(activity, DetailActivity.class); intent.putExtra(EXTRA_IMAGE, viewModel.getImage()); //intent.putExtra(EXTRA_TITLE, viewModel.getText()); //Log.e("DetailActivity:",viewModel.getImage()+""); ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(activity, transitionImage, EXTRA_IMAGE); ActivityCompat.startActivity(activity, intent, options.toBundle()); }
补充,EXTRA_IMAGE是转场key
public static final String EXTRA_IMAGE = "com.antonioleiva.materializeyourapp.extraImage";
到了这个场景二后,
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); initActivityTransitions(); setContentView(R.layout.activity_details); ButterKnife.bind(this); initData(); }
初始化数据时,设置了转场呼应的转换key配置
public void initData() { ViewCompat.setTransitionName(findViewById(R.id.app_bar_layout), EXTRA_IMAGE); supportPostponeEnterTransition(); setSupportActionBar((Toolbar) findViewById(R.id.toolbar)); }
设置窗体滑动透明度等,发现去掉影响效果不明确
private void initActivityTransitions() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { Slide transition = new Slide(); transition.excludeTarget(android.R.id.statusBarBackground, true); getWindow().setEnterTransition(transition); getWindow().setReturnTransition(transition); } }
================================================================
下边是Palette的颜色根据bitmap提取类的例子
public void initData() { //image.setImageURI(Uri.parse(getIntent().getStringExtra(EXTRA_IMAGE))); Picasso.with(this).load(getIntent().getStringExtra(EXTRA_IMAGE)).into(image, new Callback() { @Override public void onSuccess() { Bitmap bitmap = ((BitmapDrawable) image.getDrawable()).getBitmap(); Palette.from(bitmap).generate(new Palette.PaletteAsyncListener() { public void onGenerated(Palette palette) { applyPalette(palette); } }); } @Override public void onError() { } }); /* Bitmap bitmap = image.getDrawingCache(); Palette.from(bitmap).generate(new Palette.PaletteAsyncListener() { public void onGenerated(Palette palette) { applyPalette(palette); } });*/ ViewCompat.setTransitionName(findViewById(R.id.app_bar_layout), EXTRA_IMAGE); supportPostponeEnterTransition(); setSupportActionBar((Toolbar) findViewById(R.id.toolbar)); }
private void applyPalette(Palette palette) { int primaryDark = getResources().getColor(R.color.primary_dark); int primary = getResources().getColor(R.color.primary); collapsingToolbar.setContentScrimColor(palette.getMutedColor(primary)); collapsingToolbar.setStatusBarScrimColor(palette.getDarkMutedColor(primaryDark)); updateBackground((FloatingActionButton) findViewById(R.id.fab), palette); supportStartPostponedEnterTransition(); } private void updateBackground(FloatingActionButton fab, Palette palette) { int lightVibrantColor = palette.getLightVibrantColor(getResources().getColor(android.R.color.white)); int vibrantColor = palette.getVibrantColor(getResources().getColor(R.color.accent)); fab.setRippleColor(lightVibrantColor); fab.setBackgroundTintList(ColorStateList.valueOf(vibrantColor)); }
Palette 学习介绍:http://blog.csdn.net/lablenet/article/details/52340634
相关文章推荐
- Android动画:转场动画(过度动画) ActivityOptionsCompat
- 使用ActivityOptionsCompat动画共享组件的方式实现跳转Activity动画
- Activity动画场景转换ActivityOptionsCompat.makeSceneTransitionAnimation
- ActivityOptionsCompat动画的使用
- ActivityOptionsCompat.makeSceneTransitionAnimation 转场使用及遇到的问题
- android 学习使用Activity转场动画及shareElement
- Activity transition(Activity转场动画效果)
- 安卓手机卫士学习笔记系列——两个Activity之间切换动画效果overridependingtransition的使用
- Activity转场动画效果
- Android学习备忘003——Activity之间滑动转场
- ActivityOptionsCompat--Material Designer的低版本兼容实现
- Activity切换动画,Layout动画,View动画,供学习创新用
- Android 使用ActivityOptions实现Activity转场动画
- 共享元素转场动画Part1————Activity to Activity
- activity 转场动画(全局)---随手
- Android5.0之Activity的转场动画
- 你所不知道的Activity转场动画——ActivityOptions,activity转场动画
- Material Designer的低版本兼容实现—— ActivityOptionsCompat
- Android 5.0学习之Activity过渡动画
- Android Activity和Fragment的转场动画