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