android微信的聊天记录长按某聊天弹出的页面是怎样实现的

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android微信的聊天记录长按某聊天弹出的页面是怎样实现的相关的知识,希望对你有一定的参考价值。

弹出类似于这样的页面,我试着用dialog但是效果始终是这样的:

无论怎样设置对话框宽度全屏显示都无效果,求教大家,我是android的新手求教有没有人知道android短信页面、微信、QQ、米聊是怎么实现的。

Android中应该是用ListView来实现聊天记录的,长按某个记录后,如果设置了侦听器:
setOnItemLongClickListener(OnItemLongClickListener listener);
则listener中的方法: boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) 将被调用,你可以实现这个方法,在其中创建你想要的对话框。

全屏对话框可以这样实现:
1 如果你请求activity去创建,则showDialog(YOUR_DIALOG_ID);
然后在activity中的
@OverrideprotectedDialog onCreateDialog(int id)//all other dialog stuff (which dialog to display)//this line is what you need:
dialog.getWindow().setFlags(LayoutParams.FLAG_FULLSCREEN,LayoutParams.FLAG_FULLSCREEN);return dialog;


2 如果直接创建,则调用:Dialog dialog=newDialog(this,R.style.Theme_Dark_NoTitleBar_FullScreen);

不知道有没有说清楚。
参考技术A Android中应该是用ListView来实现聊天记录的,长按某个记录后,如果设置了侦听器:
setOnItemLongClickListener(OnItemLongClickListener listener);
则listener中的方法: boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) 将被调用,你可以实现这个方法,在其中创建你想要的对话框。

全屏对话框可以这样实现:
1 如果你请求activity去创建,则showDialog(YOUR_DIALOG_ID);
然后在activity中的
@OverrideprotectedDialog onCreateDialog(int id)//all other dialog stuff (which dialog to display)//this line is what you need:
dialog.getWindow().setFlags(LayoutParams.FLAG_FULLSCREEN,LayoutParams.FLAG_FULLSCREEN);return dialog;


2 如果直接创建,则调用:Dialog dialog=newDialog(this,R.style.Theme_Dark_NoTitleBar_FullScreen);

不知道有没有说清楚。
参考技术B 这个得用popmenu实现 自己搜一下就知道了 参考技术C 不知道你是要开发软件还是怎么样,可以参考谷歌给的sdk工具,里边的源代码追问

我是在做软件开发 也是第一次做android的开发 一个类似微信的工具 我在sdk里面没有找到,可否告知怎样在SDK中找自己想要了解的东西,O(∩_∩)O谢谢

追答

具体我还真不会,简单的教材网上很容易搜到的,包括一整套开发工具

Android封装类似微信的顶部TitleBar弹出的PopupWindow代码

Android仿微信顶部titlebar,点击加号弹出的PopupWindow,是封装好的PopupWindow,直接拿来用即可,先看效果图: 
技术分享 
调用代码非常简单,这是MainActivity的代码:

public class MainActivity extends AppCompatActivity {
    private TitlePopup titlePopup;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initPopWindow();
        findViewById(R.id.bt_start).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                titlePopup.show(v);
            }
        });
    }
    private void initPopWindow() {
        // 实例化标题栏弹窗
        titlePopup = new TitlePopup(this, ViewGroup.LayoutParams.WRAP_CONTENT,
                ViewGroup.LayoutParams.WRAP_CONTENT);
        titlePopup.setItemOnClickListener(onitemClick);
        // 给标题栏弹窗添加子类
        titlePopup.addAction(new ActionItem(this, R.string.menu_groupchat,
                R.drawable.icon_menu_group));
        titlePopup.addAction(new ActionItem(this, R.string.menu_addfriend,
                R.drawable.icon_menu_addfriend));
        titlePopup.addAction(new ActionItem(this, R.string.menu_qrcode,
                R.drawable.icon_menu_sao));
        titlePopup.addAction(new ActionItem(this, R.string.menu_money,
                R.drawable.abv));
    }

    private TitlePopup.OnItemOnClickListener onitemClick = new TitlePopup.OnItemOnClickListener() {

        @Override
        public void onItemClick(ActionItem item, int position) {
            // mLoadingDialog.show();
            switch (position) {
                case 0:// 发起群聊
                    Toast.makeText(getApplicationContext(), "发起群聊", Toast.LENGTH_SHORT).show();
                    break;
                case 1:// 添加朋友
                    Toast.makeText(getApplicationContext(), "添加朋友", Toast.LENGTH_SHORT).show();
                    break;
                case 2:// 扫一扫
                    Toast.makeText(getApplicationContext(), "扫一扫", Toast.LENGTH_SHORT).show();
                    break;
                case 3:// 收钱
                    Toast.makeText(getApplicationContext(), "收钱", Toast.LENGTH_SHORT).show();
                    break;
                default:
                    break;
            }
        }
    };
}

剩余封装好的工具类不贴了,还有图片啊,颜色啊资源文件,我把demo上传到了CSDN资源下载,下载地址请点击: 
PopupWindow示例

以上是关于android微信的聊天记录长按某聊天弹出的页面是怎样实现的的主要内容,如果未能解决你的问题,请参考以下文章

Android开发聊天工具,实现了类似QQ微信的即时通讯功能

Android封装类似微信的顶部TitleBar弹出的PopupWindow代码

Android 仿微信长按列表弹出PopupMenu菜单栏

Android中类似QQ和微信中聊天消息中包含有电话号码,点击可以选择拨打的功能怎么实现?

微信的常用设备中android-19和android-21是两个设备吗?

怎么用ppt制作微信聊天界面动画?