代码拉取完成,页面将自动刷新
package com.open.demo.activity;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.graphics.Matrix;
import android.graphics.Rect;
import android.os.Build;
import android.os.Bundle;
import android.transition.ArcMotion;
import android.transition.AutoTransition;
import android.transition.ChangeBounds;
import android.transition.ChangeClipBounds;
import android.transition.ChangeImageTransform;
import android.transition.ChangeScroll;
import android.transition.Explode;
import android.transition.Fade;
import android.transition.PatternPathMotion;
import android.transition.Slide;
import android.transition.Transition;
import android.transition.TransitionManager;
import android.view.Gravity;
import android.view.View;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.ImageView;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import androidx.core.view.ViewCompat;
import com.open.demo.R;
@SuppressLint("NewApi")
public class ChangeBoundsActivity extends Activity {
private FrameLayout mRoot;
@SuppressLint("NewApi")
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_change_bounds);
mRoot = findViewById(R.id.root);
// ChangeBounds demo.
mChangeBoundsTarget = findViewById(R.id.changeBoundsTarget);
mChangeBoundsBtn = findViewById(R.id.changeBoundsBtn);
mChangeBounds = new ChangeBounds();
mChangeBoundsBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// ChangeBounds
testChangeBoundsMoveView();
// mChangeBounds = new ChangeScroll();
// TransitionManager.beginDelayedTransition(mRoot, mChangeBounds);
// mChangeBoundsTarget.scrollBy(-300, -300);
}
});
// ChangeClipBounds demo.
mChangeClipBounds = new ChangeClipBounds();
mClipImageView = findViewById(R.id.photo_iv);
findViewById(R.id.clipBoundsBtn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// ChangeClipBounds
testChangeClipBoundsView();
}
});
// ChangeImageTransform demo.
findViewById(R.id.changeImageBtn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// ChangeImageTransform
testChangeImageTransitionView();
}
});
// mTransition = new AutoTransition();
// mTransition = new Explode();
// mTransition = new Fade();
// mTransition = new Slide();
}
private Button mChangeBoundsBtn;
private View mChangeBoundsTarget;
private Transition mChangeBounds;
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
private void testChangeBoundsMoveView() {
// 增加测试路径
mChangeBounds = new AutoTransition();
// mChangeBounds.setPathMotion(new ArcMotion());
mChangeBounds.setPathMotion(new PatternPathMotion());
mChangeBounds.setDuration(1000);
TransitionManager.beginDelayedTransition(mRoot, mChangeBounds);
FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) mChangeBoundsTarget.getLayoutParams();
if ((lp.gravity & Gravity.TOP) == Gravity.TOP) {
lp.gravity = Gravity.BOTTOM | Gravity.END;
lp.rightMargin = 0;
} else {
lp.gravity = Gravity.TOP | Gravity.END;
lp.rightMargin = 300;
}
mChangeBoundsTarget.setLayoutParams(lp);
}
private static final Rect BOUNDS = new Rect(20, 20, 100, 100);
private Transition mChangeClipBounds;
private ImageView mClipImageView;
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
private void testChangeClipBoundsView() {
TransitionManager.beginDelayedTransition(mRoot, mChangeClipBounds);
if (BOUNDS.equals(ViewCompat.getClipBounds(mClipImageView))) {
ViewCompat.setClipBounds(mClipImageView, null);
} else {
ViewCompat.setClipBounds(mClipImageView, BOUNDS);
}
}
ChangeImageTransform mChangeImageTransition = new ChangeImageTransform();
ImageView mChangeImageIv;
int mChangeImageType = 0;
private void testChangeImageTransitionView() {
mChangeImageIv = findViewById(R.id.changeImageIv);
switch (mChangeImageType % 5) {
case 0:
TransitionManager.beginDelayedTransition(mRoot, mChangeImageTransition);
mChangeImageIv.setScaleType(ImageView.ScaleType.FIT_XY);
break;
case 1:
TransitionManager.beginDelayedTransition(mRoot, mChangeImageTransition);
mChangeImageIv.setScaleType(ImageView.ScaleType.CENTER);
break;
case 2:
TransitionManager.beginDelayedTransition(mRoot, mChangeImageTransition);
mChangeImageIv.setScaleType(ImageView.ScaleType.FIT_END);
break;
case 3:
TransitionManager.beginDelayedTransition(mRoot, mChangeImageTransition);
mChangeImageIv.setScaleType(ImageView.ScaleType.MATRIX);
final Matrix matrix = new Matrix();
matrix.setRotate(45.f);
matrix.postTranslate(200, 10);
mChangeImageIv.setImageMatrix(matrix);
break;
case 4:
TransitionManager.beginDelayedTransition(mRoot, mChangeImageTransition);
mChangeImageIv.setScaleType(ImageView.ScaleType.CENTER_CROP);
break;
}
mChangeImageType++;
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。