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("举报");
        }
    }
    
     
  • 相关阅读:
    英语影视台词---经典电影台词(世间万物有始皆有终。)
    js数组,字符串,json互相转换函数有哪些
    php set_time_limit()的作用是什么
    界面分析---如何做美观的网页
    legend2---开发日志7(vue的使用场景有哪些,或者说使用的优缺点)
    legend2---开发日志1(legend的数据库整体设计思路是什么)
    legend2---开发日志2(注释和函数比较好的写法)
    legend2---开发日志3(thinkphp的入口目录是public的体现是什么)
    legend2---开发日志4(常用的链接传值方式有哪些)
    BZOJ 1823 JSOI 2010 盛宴 2-SAT
  • 原文地址:https://www.cnblogs.com/badaoliumangqizhi/p/12173456.html
Copyright © 2011-2022 走看看