【问题标题】:Whatsapp like profile picture animationWhatsapp 喜欢个人资料图片动画
【发布时间】:2015-10-23 21:31:50
【问题描述】:

我想要像 whatsapp 对朋友的个人资料照片一样的图片动画。谁能告诉我如何做到这一点?

已编辑

我的情况是,imagview 在它的顶部和下方,有 listview。当我向下滚动listview 时,imageview 应该增加它的大小,当我向上滚动时,imageview 大小应该减小它的大小。 imageview 的最大高度可以是 500,imageview 的最小高度可以是 100。我已经做到了。我正在做的是改变imagview 的高度。但它并不是那么顺利。

【问题讨论】:

  • 我收到并添加了我的答案,如果您有任何问题,请检查并告诉我。

标签: android animation whatsapp


【解决方案1】:

创建一个全局方法以在您的YourApplication.java 中以全视图显示图像:

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 的地方调用这个方法:

活动中的一个例子:

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

【讨论】:

  • 返回动画不流畅。如何做到这一点?如果我们想要更流畅的动画。
  • 不知道,你可以发个新问题
【解决方案2】:

您必须使用 Android 设计支持库并使用它才能实现

这里是链接::http://android-developers.blogspot.in/2015/05/android-design-support-library.html

你必须在其中找到Collapsing Toolbars,使用这个控件你就可以做到这一点。

更多你可以参考这个链接::https://github.com/chrisbanes/cheesesquare 对你很有帮助。

【讨论】:

  • 但图像不应完全不可见。并且图像必须能够下拉以增加其大小
  • 嘿。我也在寻找同样的方法。你找到解决方案了吗?
  • @spaceMonkey 我知道了,并在上面添加了我的答案,如果您有任何问题,请检查并告诉我。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-26
  • 2016-03-10
  • 2017-09-30
  • 1970-01-01
相关资源
最近更新 更多