编程

当前位置:永利皇宫463登录 > 编程 > 微信表情之王,java仿qq发送表情问题

微信表情之王,java仿qq发送表情问题

来源:http://www.makebuLuo.com 作者:永利皇宫463登录 时间:2019-09-12 14:29

这么丑!

就别抱怨了,作为一个苦逼程序猿还真没空闲时间来美化这东西,随便做了个Demo。(主要是自己的im不方便拿出来)

先跟大家说说咋用呀。那个笑脸就相当于表情,按一下就会显示到UITextFeild上,再按show相当于发送。然后在橘黄色的UITextView中就可以显示发送的内容。

这主要用到了@property(nonatomic,readonly,retain) NSTextStorage *textStorage NS_AVAILABLE_IOS;iOS7以后UITextView中的新特性。

添加图片到UITextView的代码。

attachment.image = [UIImage imageNamed:imageName];attachment.bounds = CGRectMake(0, 0, 20, 20);attributedStr = [[NSAttributedString alloc]initWithString:@""];attributedStr = [NSAttributedString attributedStringWithAttachment:attachment];[self.showTextView.textStorage appendAttributedString:attributedStr];

那么问题来了。图片名怎么来的呢?按图片时怎么标记呢?

1.首先我们应该给每张图片都起个唯一名字2.然后我们点击图片的时候将[图片名]添加到文本框中。如Demo中按了唯一一张图片后,会显示[smile]。

NSString * newText = [NSString stringWithFormat:@"%@%@",_textFeild.text,expression]; _textFeild.text = newText;

3.获得图片在文本中的范围,并在显示UITextView中显示文字和图片。

NSMutableArray *imageArr = [NSMutableArray arrayWithCapacity:0]; [self getMessageRange:content :imageArr]; NSLog(@"%@",imageArr); [imageArr enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { NSLog(@"%@",obj); NSString *contentPartStr = [NSString stringWithFormat:@"%@",obj]; if (contentPartStr.length > 0) { NSString *firstC = [obj substringWithRange:NSMakeRange]; NSAttributedString *attributedStr; if ([firstC isEqualToString:@"["]) { NSRange firstRange = [obj rangeOfString:@"["]; NSRange secondRange = [obj rangeOfString:@"]"]; NSUInteger length = secondRange.location - firstRange.location; NSRange imageNameRange = NSMakeRange(1, length - 1); NSString *imageName = [obj substringWithRange:imageNameRange]; NSTextAttachment *attachment = [[NSTextAttachment alloc]init]; NSLog(@"%@",obj); attachment.image = [UIImage imageNamed:imageName]; attachment.bounds = CGRectMake(0, 0, 20, 20); attributedStr = [[NSAttributedString alloc]initWithString:@""]; attributedStr = [NSAttributedString attributedStringWithAttachment:attachment]; }else{ attributedStr = [[NSAttributedString alloc]initWithString:obj]; } [self.showTextView.textStorage appendAttributedString:attributedStr]; } }];

当然还有一个获取图片range的方法。-getMessageRange:(NSString*)message :(NSMutableArray*)array ;

-getMessageRange:(NSString*)message :(NSMutableArray*)array { NSRange rangeL = [message rangeOfString:@"["]; NSRange rangeR = [message rangeOfString:@"]"]; //判断当前字符串是否还有表情的标志。 if (rangeL.length && rangeR.length) { if (rangeL.location > 0) { [array addObject:[message substringToIndex:rangeL.location]]; [array addObject:[message substringWithRange:NSMakeRange(rangeL.location, rangeR.location + 1 - rangeL.location)]]; NSString *str = [message substringFromIndex:rangeR.location + 1]; [self getMessageRange:str :array]; } else { NSString *nextstr = [message substringWithRange:NSMakeRange(rangeL.location, rangeR.location + 1 - rangeL.location)]; //排除“”空字符串 if (![nextstr isEqualToString:@""]) { [array addObject:nextstr]; NSString *str = [message substringFromIndex:rangeR.location + 1]; [self getMessageRange:str :array]; } else { return; } } } else { [array addObject:message]; }}

ok ,这么就完成了you can download in here!

import javax.swing.*;
import com.qq.client.view.*;
/**

微信表情之王,每年发送300亿次,每个人都在使用它!

图片 1Demo效果图

 public int getIm() { return im; } public void setIm { this.im = im; } public ChatPic(URL url,int im){ super; this.im = im; } public static void main(String[] args) { // TODO 自动生成的方法存根}

中国有更多的表情符号。据腾讯官方数据统计,2018年,在QQ上, 9亿用户总共发送表情包,约3187亿次,其中代表开心的龇牙表情发送量第一,高达303亿次。据微信的数据显示,2017年,微信用户每天发送表情超过6亿次,一秒发送表情超过6944个。仅在2015年,名为“长草颜团子”的表情下载量已超过7亿次、发送量超过180亿次。多么庞大的一个数字啊。这个数据相当庞大。

那么咋搞呢?我们先来看看效果图

}

好的,让我们今天分析它来到这里。微信表情之王,每年发送300亿次,每个人都在使用它!

有段时间也是不知道怎么做表情,之前做的im就没有做自己的表情键盘。之后在用微信的时候发觉,如果没有了收藏表情,和发送表情的功能的画,那么你这个im就会显得很鸡肋。

/**
*图片描述

图片 2

ChatPic cupic =  (cubl.getIcon; 错误的是这一行

一个人已成为我们新一代生活方式的拥有者。当我还是个孩子的时候,我谈到了QQ。当我长大的时候,我朋友的圈子里到处都是朋友和亲戚。人们似乎越来越依赖于微信,微信似乎比我们想象的要强大得多。它充斥了几代人的生活。比QQ更能影响我们的世界。今天我们说说微信官方总结出微信常用表情使用率,看看有没有你常用的。

int im;//图片代号

图片 3

import java.net.URL;
import javax.swing.ImageIcon;

图片 4

package com.qq.client.tools;

而随着一条一条的数据显示出来。特别是当公布“微信年度表情数据之最”时,引发了很大共鸣,不少媒体表示这个数据太扎精准了!70后喜爱捂嘴笑表情,80后钟爱呲牙笑表情,90后偏爱边笑边哭表情,而00后则是喜欢星爷的捂脸笑。

  • Title:

    *

  • Description:

    *

  • Copyright: Copyright 2007

    *

  • Company:

    *

  • @author not attributable

  • @version 1.0
    */
    public class face extends JWindow {
    private static final long serialVersionUID = 1L;

    GridLayout gridLayout1 = new GridLayout;

    JLabel[] ico=new JLabel[18];
    JLabel[] icc=new JLabel[18];/放表情/

    int i;

    QqChat owner;

    String[] intro = {"","","","","","","","","",
    "","","","","","","","",""
    };/*图片描述*/

    public face (QqChat owner) {

    super;

    this.owner=owner;

    try {

    init();

    this.setAlwaysOnTop;

    }

    catch (Exception exception) {

    exception.printStackTrace();

    }

    }

    private void init() throws Exception {

    this.setPreferredSize(new Dimension(38*6,50*3));

    JPanel p = new JPanel();

    p.setOpaque;

    this.setContentPane;

    p.setLayout(gridLayout1);

    p.setBackground(SystemColor.text);

    String fileName = "";

    for(i=0;i <ico.length;i++){

    fileName= "emjio/"+ i +".png";/*修改图片路径*/

    ico[i]=new JLabel(new ImageIcon);
    //icc[i] =new JLabel(new ChatPic(face.class.getResource,i),SwingConstants.CENTER);

    ico[i].setBorder(BorderFactory.createLineBorder(new Color(225,225,225), 1));

    ico[i].setToolTipText;

    ico[i].addMouseListener(new MouseAdapter(){

    public void mouseClicked(MouseEvent e){

    if(e.getButton{

    JLabel cubl = (e.getSource;

    ChatPic cupic = (cubl.getIcon;

    owner.insertSendPic;

    cubl.setBorder(BorderFactory.createLineBorder(new Color(225,225,225), 1));

     getObj().dispose(); } } @Override public void mouseEntered(MouseEvent e) { e.getSource.setBorder(BorderFactory.createLineBorder(Color.BLUE)); } @Override public void mouseExited(MouseEvent e) { e.getSource.setBorder(BorderFactory.createLineBorder(new Color(225,225,225), 1)); } }); p.add; } p.addMouseListener(new MouseAdapter(){ @Override public void mouseExited(MouseEvent e) { getObj().dispose; 
    

    }

    @Override

    public void setVisible(boolean show) {

    if {

    determineAndSetLocation();

    }

    super.setVisible;

    }

    private void determineAndSetLocation() {

    Point loc = owner.getPicBtn().getLocationOnScreen();/*控件相对于屏幕的位置*/

    setBounds(loc.x-getPreferredSize().width/3, loc.y-getPreferredSize().height,

    getPreferredSize().width, getPreferredSize;

    }

    private JWindow getObj(){

    return this;

    }

    public static void main(String[] args){

    }
    }

目前,在线聊天主要基于表达包和文本。用于进行理性思维的原文也已迅速转化沟通的每一种语言可以转化成各种丰富多彩的表情包。如今,许多人越来越不喜欢说话,而基于表达的信息正变得越来越流行。首先,有时候我不知道该说些什么,其次,当表达能表达时。我为什么要输入?现在有很多表达方式。如果您不同意,将会达成表达方式。什么是最常见的表达方式?

private static final long serialVersionUID = 1L;

java仿qq发送表情问题
package com.qq.client.tools;

*/

public class ChatPic extends ImageIcon{

点击表情后提示错误
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: javax.swing.ImageIcon cannot be cast to com.qq.client.tools.ChatPic
at com.qq.client.tools.face$1.mouseClicked(face.java:60)

import java.awt.*;
import java.awt.event.*;
import java.awt.font.TextLayout;

本文由永利皇宫463登录发布于编程,转载请注明出处:微信表情之王,java仿qq发送表情问题

关键词: