我想要图片动画,就像 whatsapp 在 friend 的个人资料图片上做的那样。谁能告诉我如何实现这一点?
已编辑
在我的例子中,imagview
在上面,在它下面是 listview
。当我向下滚动 listview
时,imageview
应该增加它的大小,当我向上滚动时,imageview
应该减小它的大小。 imageview
的最大高度可以是500,imageview
的最小高度可以是100。我已经实现了。我正在做的是,改变 imagview
高度。但它并没有那么顺利。
最佳答案
制作一个全局方法以在您的 YourApplication.java
中以完整 View 显示图像:
public static void showExpandableImage(Context context, String imageUri, String title, View view) {
try {
Intent intent = new Intent(context, ViewImageActivity.class);
intent.putExtra("image", imageUri);
intent.putExtra("title", title);
if (TextUtils.isEmpty(imageUri)) {
imageUri = getURLForResource(R.drawable.user_placeholder); // default image in drawable
}
Pair<View, String> bodyPair = Pair.create(view, imageUri);
ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(((Activity)context), bodyPair);
ActivityCompat.startActivity(context, intent, options.toBundle());
} catch (Exception e) {
e.printStackTrace();
}
}
public static String getURLForResource (int resourceId) {
return Uri.parse("android.resource://com.yourpackage.name/" + resourceId).toString();
}
在 image_view_layout
中添加这段代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainLay"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/black"
android:orientation="vertical">
<ImageView
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitCenter" />
</LinearLayout>
在ViewImageActivity
中添加这段代码:
public class ViewImageActivity extends AppCompatActivity {
private ImageView imageView;
private TextView title;
private String my_title, imgPath;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.image_view_layout);
imageView = findViewById(R.id.imageView);
title = findViewById(R.id.title);
imgPath = getIntent().getExtras().getString("image");
my_title = getIntent().getExtras().getString("title");
if (!TextUtils.isEmpty(my_title)) {
title.setText(my_title);
}
if (!TextUtils.isEmpty(imgPath)) {
ViewCompat.setTransitionName(imageView, imgPath);
Picasso.with(this).load(imgPath)
.placeholder(R.drawable.user_placeholder)
.error(R.drawable.user_placeholder)
.into(imageView);
} else {
ViewCompat.setTransitionName(imageView, "NotAvailable");
Picasso.with(this).load(R.drawable.user_placeholder)
.placeholder(R.drawable.user_placeholder)
.error(R.drawable.user_placeholder)
.into(imageView);
}
}
}
只需在您想像动画一样显示 WhatsApp 的地方调用此方法:
Activity 示例:
ImageView image_view = findViewById(R.id.pic_image_view);
showExpandableImage(MyActivity.this, "UrlOfImage", "MyTitle", image_view); // replace with your content
适配器中的一个例子:
ImageView image_view = itemView.findViewById(R.id.pic_image_view);
showExpandableImage(context, "UrlOfImage", "MyTitle", image_view); // replace with your content
关于android - whatsapp喜欢个人资料图片动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31759118/