Android 活动之间的缩放图像视图转换
我试图在两个活动之间创建共享的ImageView(例如,从活动A到活动B)。 以下步骤后会出现问题:Android 活动之间的缩放图像视图转换,android,Android,我试图在两个活动之间创建共享的ImageView(例如,从活动A到活动B)。 以下步骤后会出现问题: 将图像共享到活动中 活动B中放大的图像 从B活动返回到A活动 观看视频 没有缩放没有问题:你可以观看 我的风格-v21: <style name="AppTheme.NoActionBar" > <item name="android:colorEdgeEffect">@color/primary</item> <item name="w
<style name="AppTheme.NoActionBar" >
<item name="android:colorEdgeEffect">@color/primary</item>
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:buttonStyle">@style/MyButtonStyle</item>
<item name="android:windowContentTransitions">true</item>
<item name="android:windowExitTransition">@android:transition/explode</item>
<item name="android:windowSharedElementEnterTransition">@transition/change_image_transform</item>
<item name="android:windowSharedElementExitTransition">@transition/change_image_transform</item>
</style>
我的意图从活动A到活动B(影像活动)
我知道发生这种情况是因为活动A上的图像大小和缩放类型不同,活动A上的it中心裁剪和固定大小,活动B上的it maxtrix和match_父对象。
如何在转换中调整动画大小?
在我的例子中,在图像移动到它的位置后调整大小…你找到解决方案了吗?@gaurang不,我没有。。我只需调用
image.resetZoom()
将图像大小重置为onBackPressed()
中的默认值,然后调用super.onBackPressed()代码>你找到解决办法了吗?@gaurang不,我没有。。我只需调用image.resetZoom()
将图像大小重置为onBackPressed()
中的默认值,然后调用super.onBackPressed()代码>
<?xml version="1.0" encoding="utf-8"?>
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android">
<changeImageTransform/>
</transitionSet>
public class ImageActivity extends AppCompatActivity {
public static String IMAGE_URL = "image_url";
public static String TEXT = "text";
private ProgressBar spinner;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
getWindow().setSharedElementEnterTransition(TransitionInflater.from(this).inflateTransition(android.R.transition.move));
}
setContentView(R.layout.activity_image);
ImageView image = (ImageView) findViewById(R.id.image);
TextView tvName = (TextView) findViewById(R.id.tvName);
spinner = (ProgressBar) findViewById(R.id.pbLoading);
String imageUrl = getIntent().getStringExtra(IMAGE_URL);
String text = getIntent().getStringExtra(TEXT);
if (text != null)
tvName.setText(text);
else tvName.setVisibility(View.GONE);
DisplayImageOptions options = new DisplayImageOptions.Builder()
.cacheOnDisk(true)
.bitmapConfig(Bitmap.Config.RGB_565)
.considerExifParams(true)
.displayer(new FadeInBitmapDisplayer(300))
.imageScaleType(ImageScaleType.NONE)
.build();
ImageLoader.getInstance().displayImage(imageUrl, image, options, simpleImageLoadingListener);
}
SimpleImageLoadingListener simpleImageLoadingListener = new SimpleImageLoadingListener(){
@Override
public void onLoadingStarted(String imageUri, View view) {
spinner.setVisibility(View.VISIBLE);
}
@Override
public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
String message = null;
switch (failReason.getType()) {
case IO_ERROR:
message = "Input/Output error";
break;
case DECODING_ERROR:
message = "Image can't be decoded";
break;
case NETWORK_DENIED:
message = "Downloads are denied";
break;
case OUT_OF_MEMORY:
message = "Out Of Memory error";
break;
case UNKNOWN:
message = "Unknown error";
break;
}
Toast.makeText(view.getContext(), message, Toast.LENGTH_SHORT).show();
spinner.setVisibility(View.GONE);
}
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
spinner.setVisibility(View.GONE);
}
};
}
Intent goToImage = new Intent(InfoActivity.this, ImageActivity.class);
goToImage.putExtra(ImageActivity.IMAGE_URL, cafe.getImageUrl());
goToImage.putExtra(ImageActivity.TEXT, cafe.getName());
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(InfoActivity.this,
imgCompany, "image");
startActivity(goToImage, options.toBundle());
} else {
startActivity(goToImage);
}