如何实现像instagram这样的长按图像预览

时间:2016-04-14 05:24:06

标签: android material-design

我试图像在Instagram中一样实施长按图像预览。我的应用程序就像一个目录,其中包含图像,当我长按任何图像时,它的预览应该出现,并在发布后像在Instagram中一样关闭。

3 个答案:

答案 0 :(得分:2)

我正在使用带图像的回收站视图。

要显示图像,我使用长按监听器调用此方法:

public void publicationQuickView(Post post){
    View view = getLayoutInflater().inflate( R.layout.quick_view, null);

    ImageView postImage = (ImageView) view.findViewById(R.id.ivFeedCenter);
    ImageView profileImage = (ImageView) view.findViewById(R.id.ivUserProfile);
    TextView tvUsername = (TextView) view.findViewById(R.id.txtUsername);
    tvUsername.setText(post.user.name);

    Picasso.with(this).load(post.picture).priority(Picasso.Priority.HIGH).noPlaceholder().into(postImage);
    Picasso.with(this).load(post.user.picture).noPlaceholder().into(profileImage);

    builder = new Dialog(this);
    builder.requestWindowFeature(Window.FEATURE_NO_TITLE);
    builder.getWindow().setBackgroundDrawable(
            new ColorDrawable(Color.TRANSPARENT));
    builder.setContentView(view);
    builder.show();
}

我给布局充气并注入对话框。

要解除对话框,我正在使用RecyclerView.OnItemTouchListener(),如下所示:

rvUserProfile.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() {
        @Override
        public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
            if(e.getAction() == MotionEvent.ACTION_UP)
                hideQuickView();
            return false;
        }

        @Override
        public void onTouchEvent(RecyclerView rv, MotionEvent event) {
        }

        @Override
        public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
        }});

最后:

public void hideQuickView(){
    if(builder != null) builder.dismiss();
}

答案 1 :(得分:1)

长按

使用此代码
Whoops looks like something went wrong 

有关详细信息,请访问此https://gist.github.com/scruffyfox/3894926

答案 2 :(得分:0)

我将其作为一个Android库,您可以直接从here使用它。

要使用它,您只需提供 contentDescription ,就这么简单

StaggeredGridLayoutManager

如果您不想使用<hendrawd.library.customview.HintedImageButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_xxx" android:contentDescription="Put your hint here!" android:background="@drawable/optional_selector" /> 背景,则可以直接更改背景或将其设置为ImageButton