Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android-按住可预览_Android - Fatal编程技术网

Android-按住可预览

Android-按住可预览,android,Android,我有一个包含一些项目的listview,我想允许用户通过按住该项目预览特定项目的数据。我希望预览窗口/弹出窗口在用户按下时保持显示 我正在尝试在IOS和instagram中实现相同的预览功能 我已经在longpress上实现了,但不确定显示什么才是获得所需结果的最佳方式 lv.setAdapter(arrayAdapter); lv.setLongClickable(true); lv.setOnItemLongClickListener(new

我有一个包含一些项目的listview,我想允许用户通过按住该项目预览特定项目的数据。我希望预览窗口/弹出窗口在用户按下时保持显示

我正在尝试在IOS和instagram中实现相同的预览功能

我已经在longpress上实现了,但不确定显示什么才是获得所需结果的最佳方式

 lv.setAdapter(arrayAdapter);
            lv.setLongClickable(true);
            lv.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
                @Override
                public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
                                               int pos, long id) {


                    Log.v("long clicked", "pos: " +pos);

                    return true;
                }
            });
lv.setAdapter(阵列适配器);
lv.setLongClickable(真);
lv.setOnItemLongClickListener(新的AdapterView.OnItemLongClickListener(){
@凌驾
长单击(AdapterView arg0、视图arg1、,
内部位置,长id){
Log.v(“长时间点击”,“pos:+pos”);
返回true;
}
});

关于如何实现这一点或实现这一点的最佳方法,有什么提示吗?

请参阅以下关于如何使用recycler view处理长按的答案:


一旦你有了它,你可以显示一个布局来显示你的数据。

关于如何使用recycler视图处理长按,请参阅以下答案:

一旦你有了它,你可以显示一个布局来显示你的数据。

看看这个

在长单击侦听器上实现侦听器

然后启用隐藏视图的可见性。当然,在执行此操作时,请查看此链接,了解如何启用预览窗格的动态位置

看看这个

在长单击侦听器上实现侦听器

然后启用隐藏视图的可见性。当然,在执行此操作时,请查看此链接,了解如何启用预览窗格的动态位置

您可以在视图中添加一个自定义项,该自定义项表示您的
列表视图中的给定项(或
回收视图
或其他内容)。这允许您检测手势何时开始(即,第一个手指向下)结束(即,最后一个手指向上)或被取消(例如,手势实际上是一个滚动,已被
列表视图截获)

您需要执行的代码如下所示:

itemView.setOnTouchListener(新的OnTouchListener(){
@凌驾
公共布尔onTouch(视图v,运动事件){
int actionMasked=event.getActionMasked();
开关(动作屏蔽){
case MotionEvent.ACTION\u DOWN:
//显示预览
打破
case MotionEvent.ACTION\u UP:
case MotionEvent.ACTION\u取消:
//隐藏预览
打破
违约:
}
返回true;
}
});
编辑:您可能需要包含一些逻辑来检测简单的点击(例如,测量整个手势持续时间是否不超过
ViewConfiguration.getTappTimeout()
)并调用
v.performClick()

您可以向视图中添加一个自定义项,该视图表示您
列表视图中的给定项(或
RecyclerView
或其他任何内容)。这允许您检测手势何时开始(即第一个手指向下)结束(即最后一个手指向上)或被取消(例如,手势实际上是一个滚动,并且已被
列表视图截获)

您需要执行的代码如下所示:

itemView.setOnTouchListener(新的OnTouchListener(){
@凌驾
公共布尔onTouch(视图v,运动事件){
int actionMasked=event.getActionMasked();
开关(动作屏蔽){
case MotionEvent.ACTION\u DOWN:
//显示预览
打破
case MotionEvent.ACTION\u UP:
case MotionEvent.ACTION\u取消:
//隐藏预览
打破
违约:
}
返回true;
}
});

编辑:您可能需要包含一些逻辑来检测简单的点击(例如,测量整个手势持续时间是否不超过
ViewConfiguration.getTappTimeout()
)并调用
v.performClick()

我正在使用图像回收器视图

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

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();
}

我使用的是图像回收视图

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

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();
}

那么,你想在Android上重新实现3D触摸?那么,你想在Android上重新实现3D触摸?