У меня есть линейная компоновка, у которой есть два изображения, первый из которых настроен на отображение нормального изображения, а другой скрыт, когда пользователь прикасается к 1-му изображению. 2-й вид изображения виден и установлен на полный экран. .Но при этом я получил ошибку, которая м вывешивать к вам ... я есть followed this codeSet Imageview To Full Screen of Activity
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
android:id="@+id/liimage"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<ImageView
android:id="@+id/property_image"
android:layout_width="match_parent"
android:layout_height="150dp"
android:scaleType="matrix"
android:src="@drawable/house" />
</LinearLayout>
<ImageView
android:id="@+id/expanded_image"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="invisible"/>
</LinearLayout>
</ScrollView>
мой код для этого
property_image.setImageBitmap(bmp);
property_image.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
zoomImageFromPhoto(property_image, property_image);
}
});
propertyImage мой первый образ, который отобразить мое изображение, но когда я потрогать он переходит в zoomImagefromphot о класс
private void zoomImageFromPhoto(final View thumbView, ImageView property_image2) {
if (mCurrentAnimator != null) {
mCurrentAnimator.cancel();
}
final ImageView expandedImageView = (ImageView) findViewById(R.id.expanded_image);
// expandedImageView.setImageResource(property_image2);
final Rect startBounds = new Rect();
final Rect finalBounds = new Rect();
final Point globalOffset = new Point();
thumbView.getGlobalVisibleRect(startBounds);
findViewById(R.id.liimage).getGlobalVisibleRect(finalBounds, globalOffset);
startBounds.offset(-globalOffset.x, -globalOffset.y);
finalBounds.offset(-globalOffset.x, -globalOffset.y);
float startScale;
if ((float) finalBounds.width()/finalBounds.height()
> (float) startBounds.width()/startBounds.height()) {
startScale = (float) startBounds.height()/finalBounds.height();
float startWidth = startScale * finalBounds.width();
float deltaWidth = (startWidth - startBounds.width())/2;
startBounds.left -= deltaWidth;
startBounds.right += deltaWidth;
} else {
startScale = (float) startBounds.width()/finalBounds.width();
float startHeight = startScale * finalBounds.height();
float deltaHeight = (startHeight - startBounds.height())/2;
startBounds.top -= deltaHeight;
startBounds.bottom += deltaHeight;
}
thumbView.setAlpha(0f);
expandedImageView.setVisibility(View.VISIBLE);
expandedImageView.setPivotX(0f);
expandedImageView.setPivotY(0f);
AnimatorSet set = new AnimatorSet();
set
.play(ObjectAnimator.ofFloat(expandedImageView, View.X, startBounds.left,
finalBounds.left))
.with(ObjectAnimator.ofFloat(expandedImageView, View.Y, startBounds.top,
finalBounds.top))
.with(ObjectAnimator.ofFloat(expandedImageView, View.SCALE_X, startScale, 1f))
.with(ObjectAnimator.ofFloat(expandedImageView, View.SCALE_Y, startScale, 1f));
set.setDuration(mShortAnimationDuration);
set.setInterpolator(new DecelerateInterpolator());
set.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
mCurrentAnimator = null;
}
@Override
public void onAnimationCancel(Animator animation) {
mCurrentAnimator = null;
}
});
set.start();
mCurrentAnimator = set;
final float startScaleFinal = startScale;
expandedImageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (mCurrentAnimator != null) {
mCurrentAnimator.cancel();
}
AnimatorSet set = new AnimatorSet();
set
.play(ObjectAnimator.ofFloat(expandedImageView, View.X, startBounds.left))
.with(ObjectAnimator.ofFloat(expandedImageView, View.Y, startBounds.top))
.with(ObjectAnimator
.ofFloat(expandedImageView, View.SCALE_X, startScaleFinal))
.with(ObjectAnimator
.ofFloat(expandedImageView, View.SCALE_Y, startScaleFinal));
set.setDuration(mShortAnimationDuration);
set.setInterpolator(new DecelerateInterpolator());
set.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
thumbView.setAlpha(1f);
expandedImageView.setVisibility(View.GONE);
mCurrentAnimator = null;
}
@Override
public void onAnimationCancel(Animator animation) {
thumbView.setAlpha(1f);
expandedImageView.setVisibility(View.GONE);
mCurrentAnimator = null;
}
});
set.start();
mCurrentAnimator = set;
}
});
}
, но я получил ошибку как
04-06 11:02:31.649: E/AndroidRuntime(2739): Process: com.big_property, PID: 2739
04-06 11:02:31.649: E/AndroidRuntime(2739): java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.view.View.getGlobalVisibleRect(android.graphics.Rect, android.graphics.Point)' on a null object reference
04-06 11:02:31.649: E/AndroidRuntime(2739):at com.big_property.search_property_activity.zoomImageFromPhoto(search_property_ activity.java:284)
04-06 11:02:31.649: E/AndroidRuntime(2739):at com.big_property.search_property_activity.access$4(search_property_activity.java:274)
04-06 11:02:31.649: E/AndroidRuntime(2739):at com.big_property.search_property_activity$3.onClick(search_property_activity.java:268)
Я думаю EROR в этой линии
findViewById(R.id.liimage).getGlobalVisibleRect(finalBounds, globalOffset);
Как решить эту проблему? Помогите мне поблагодарить меня заранее.
Help Me Frienif кто-нибудь знает, как решить это, тогда поздно, я знаю, если кто-нибудь знает, что он не найдет мой личный идентификатор макета .... – Tufan
Пожалуйста, исправьте меня, если я неправильно понял. Я думаю вы хотите показать большое изображение, когда пользователь нажимает на изображение маленького значка на одном экране с альфа-анимацией? Правильно ли я? – Srinivasan
пишите @Srinivasan так, как это сделать – Tufan