zoukankan      html  css  js  c++  java
  • Android中实现长按照片弹出右键菜单

    场景

    效果

    注:

    博客:
    https://blog.csdn.net/badao_liumang_qizhi
    关注公众号
    霸道的程序猿
    获取编程相关电子书、教程推送与免费下载。

    实现

    将布局改为LinearLayout,并通过android:orientation="vertical">设置为垂直布局。

    然后添加一个ImageView,并设置id属性和图片源。

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context=".LongClickActivity">
    
        <ImageView
            android:id="@+id/image"
            android:src="@drawable/dog"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    
    </LinearLayout>

    然后来到Activity,首先在activity中重写onCreateContextMenu方法,此方法能新增菜单,并添加菜单项

        //在activity中重写onCreateContextMenu菜单,为菜单添加选项值
        @Override
        public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
            super.onCreateContextMenu(menu, v, menuInfo);
            menu.add("收藏");
            menu.add("举报");
        }

    然后在onCreate方法中将长按事件注册到菜单中并打开菜单。

       @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_long_click);
            //将长按事件注册到菜单中,并打开菜单
            ImageView imageView = (ImageView) findViewById(R.id.image);
            imageView.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View v) {
                    //注册菜单
                    registerForContextMenu(v);
                    //打开菜单
                    openContextMenu(v);
                    return true;
                }
            });
        }

    完整示例代码

    package com.badao.relativelayouttest;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.os.Bundle;
    import android.view.ContextMenu;
    import android.view.View;
    import android.widget.ImageView;
    
    public class LongClickActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_long_click);
            //将长按事件注册到菜单中,并打开菜单
            ImageView imageView = (ImageView) findViewById(R.id.image);
            imageView.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View v) {
                    //注册菜单
                    registerForContextMenu(v);
                    //打开菜单
                    openContextMenu(v);
                    return true;
                }
            });
        }
    
        //在activity中重写onCreateContextMenu菜单,为菜单添加选项值
        @Override
        public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
            super.onCreateContextMenu(menu, v, menuInfo);
            menu.add("收藏");
            menu.add("举报");
        }
    }
    
     
  • 相关阅读:
    phpwind管理权限泄露漏洞
    CGI Hack与Webshell研究资料整理
    深入浅出net泛型编程[转载]
    加上checkbox的treeview控件源程序
    BCB消息消息机制
    开源ZPU介绍
    带复选框可以多选的组合框控件 TCheckCombobox,非常完美
    别人用delphi写的很简单实用的多列功能的treeview treelistview
    智能DVR视频监控系统,源代码
    delphi事件参数sender的用法例程
  • 原文地址:https://www.cnblogs.com/badaoliumangqizhi/p/12173456.html
Copyright © 2011-2022 走看看