2 Star 1 Fork 2

冰雪情缘TV / OpenDemo

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
XiaomiDemoActivity.java 8.02 KB
一键复制 编辑 原始数据 按行查看 历史
冰雪情缘TV 提交于 2020-05-02 19:21 . feat:编写小米DEMO2222
package com.open.demo.xiaomi;
import android.animation.Animator;
import android.app.Activity;
import android.app.ActivityOptions;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Rect;
import android.os.Build;
import android.os.Bundle;
import android.transition.ArcMotion;
import android.transition.ChangeBounds;
import android.transition.Explode;
import android.transition.Fade;
import android.transition.Slide;
import android.transition.TransitionManager;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewAnimationUtils;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import androidx.core.view.ViewCompat;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.open.demo.R;
import com.open.demo.activity.TransitionManagerActivity;
import com.open.demo.transition.extra.Scale;
import java.util.Arrays;
import java.util.List;
public class XiaomiDemoActivity extends Activity {
RecyclerView mLauncherRv;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_xiaomi_demo);
mLauncherRv = findViewById(R.id.launcher_rv);
mLauncherRv.setLayoutManager(new GridLayoutManager(this, 5));
mLauncherRv.addItemDecoration(new RecyclerViewSpacesItemDecoration());
mLauncherRv.setAdapter(new LauncherAdapter());
}
class LauncherAdapter extends RecyclerView.Adapter<ItemViewHolder> {
@NonNull
@Override
public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new ItemViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_launcher, parent, false));
}
@Override
public void onBindViewHolder(@NonNull ItemViewHolder holder, int position) {
int res = RES_LIST.get(position);
holder.iv.setImageResource(res);
}
@Override
public int getItemCount() {
return RES_LIST.size();
}
}
public static final List<Integer> RES_LIST = Arrays.asList(
R.drawable.mitv_icn_game, R.drawable.mitv_icn_hdplayer, R.drawable.mitv_icn_huabao,
R.drawable.mitv_icn_luyouqi, R.drawable.mitv_icn_miguomusic, R.drawable.mitv_icn_mijia,
R.drawable.mitv_icn_notification, R.drawable.mitv_icn_photo, R.drawable.mitv_icn_radio,
R.drawable.mitv_icn_setting, R.drawable.mitv_icn_store, R.drawable.mitv_icn_tvsteward,
R.drawable.mitv_icn_setting, R.drawable.mitv_icn_store, R.drawable.mitv_icn_tvsteward
);
public class ItemViewHolder extends RecyclerView.ViewHolder {
ImageView iv;
public ItemViewHolder(View itemView) {
super(itemView);
iv = itemView.findViewById(R.id.iv);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int pos = getLayoutPosition();
int res = RES_LIST.get(pos);
//
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
startXiaoMiActivity(v, res);
// 带水波纹的过渡效果.
// testcreateCircularReveal(v, res);
}
}
});
}
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
private void startXiaoMiActivity(View view, int res) {
// ArcMotion arcMotion = new ArcMotion();
// arcMotion.setMinimumHorizontalAngle(90);
// arcMotion.setMinimumVerticalAngle(90);
// arcMotion.setMaximumAngle(180);
// Fade fade = new Fade();//渐隐
// fade.setDuration(500);
// Slide slide = new Slide(Gravity.END);//右边平移
// slide.setDuration(500);
// slide.setPathMotion(arcMotion);
// Explode explode = new Explode();//展开回收
// explode.setDuration(500);
// explode.setPathMotion(arcMotion);
// getWindow().setReenterTransition(slide);
// getWindow().setExitTransition(explode);
// getWindow().setAllowEnterTransitionOverlap(true);
// getWindow().setAllowReturnTransitionOverlap(true);
// ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(XiaomiDemoActivity.this);
// 共享元素 效果.
ViewCompat.setTransitionName(view, "ShardTest");
// ArcMotion arcMotion = new ArcMotion();
// arcMotion.setMinimumHorizontalAngle(50f);
// arcMotion.setMinimumVerticalAngle(50f);
// //插值器,控制速度
// //实例化自定义的ChangeBounds
// ChangeBounds changeBounds = new ChangeBounds();
// changeBounds.setPathMotion(arcMotion);
// changeBounds.addTarget(view);
// //将切换动画应用到当前的Activity的进入和返回
// getWindow().setSharedElementEnterTransition(changeBounds);
// getWindow().setSharedElementReturnTransition(changeBounds);
// getWindow().setSharedElementExitTransition(changeBounds);
// getWindow().setSharedElementReenterTransition(changeBounds);
//
ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(XiaomiDemoActivity.this,
view, "ShardTest");
// 带 bitmap的放大效果
// Bitmap bitmap = BitmapFactory.decodeResource(getResources(),
// res);
// ActivityOptions options = ActivityOptions.makeThumbnailScaleUpAnimation(view,
// bitmap, 0, 0);
// 放大效果
// ActivityOptions options = ActivityOptions.makeScaleUpAnimation(
// view, 0, 0, //拉伸开始的坐标
// view.getMeasuredWidth(), view.getMeasuredHeight()); // 初始的宽高
// 启动
Intent intent = new Intent(this, XiaoMiHomeActivity.class);
intent.putExtra("res", res);
startActivity(intent, options.toBundle());
}
/**
* 测试水波纹效果
* https://www.jianshu.com/p/57a7a5421b06
*/
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
private void testcreateCircularReveal(final View view, final int res) {
// 水波纹测试
// 获取FloatingActionButton的中心点的坐标
int centerX = (view.getLeft() + view.getRight()) / 2;
int centerY = (view.getTop() + view.getBottom()) / 2;
// Math.hypot(x,y): 返回sqrt(x2 +y2)
// 获取扩散的半径
float finalRadius = (float) Math.hypot((double) centerX, (double) centerY);
// 定义揭露动画
Animator mCircularReveal = ViewAnimationUtils.createCircularReveal(
mLauncherRv, centerX, centerY, 0, finalRadius);
// 设置动画持续时间,并开始动画
mCircularReveal.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
}
@Override
public void onAnimationEnd(Animator animation) {
startXiaoMiActivity(view, res);
}
@Override
public void onAnimationCancel(Animator animation) {
}
@Override
public void onAnimationRepeat(Animator animation) {
}
});
mCircularReveal.setDuration(1000).start();
}
public class RecyclerViewSpacesItemDecoration extends RecyclerView.ItemDecoration {
@Override
public void getItemOffsets(Rect outRect, View view,
RecyclerView parent,
RecyclerView.State state) {
outRect.top = 10;
outRect.left = 10;
outRect.right = 10;
outRect.bottom = 10;
}
}
}
Android
1
https://gitee.com/hailongqiu/OpenDemo.git
git@gitee.com:hailongqiu/OpenDemo.git
hailongqiu
OpenDemo
OpenDemo
81ca8ccc0b60138cc1ba7c08df4dd7af6e56feeb

搜索帮助