간단한 그림 혼합 배열 기능

1889 단어 Android
실현 원리:GraphTextLayout을 사용자 정의하여LinearLayout을 계승하고 백엔드와 그림 라벨(예를 들어)을 약속한 다음,GraphTextLayout는 외부에 표시된 문자를 수신하여 정규적으로 그림 라벨과 일치하도록 하고,문자열을 캡처하여 동적으로 TextView 표시 문자를 추가하고,ImageView는 그림을 표시한다.기본 코드는 다음과 같습니다.
private String mRegEx_img = “<.img>]+src\s*=\s*‘\”[‘\”][^>]*>”;(표시 문제 때문에img 태그 앞에 "."를 추가했습니다.복사 후 제거 가능)private List<.messgeitem> mItemList = new ArrayList<>(); (표시 문제 때문에 MessgeItem 앞에 "."을(를) 추가했습니다.카피 후 제거 가능)
private void initMessageData(String message){
    String tmpStr = message;
    Pattern p_image = Pattern.compile(mRegEx_img);
    Matcher m_image = p_image.matcher(tmpStr);
    while (m_image.find()) {
        //           
        String imgStr = m_image.group(0);
        int index = tmpStr.indexOf(imgStr);
        if (index!=0) {
            //         ,              list 
            String textContent = tmpStr.substring(0,index);
            addMessageItem(textContent, true);
        }
        //        url    list 
        String url = imgStr.substring(10, imgStr.length()-2);
        addMessageItem(url, false);

        // tmpStr                ,        
        tmpStr = tmpStr.substring(imgStr.length()+index, tmpStr.length());
    }
    //            ,tmpStr            ,      list 
    if (!TextUtils.isEmpty(tmpStr)){
        addMessageItem(tmpStr, true);
    }
}

public void addMessageItem(String content, boolean isText){
    MessageItem item = new MessageItem();
    item.content = content;
    item.isText = isText;
    mItemList.add(item);
}

class MessageItem{
    public boolean isText;
    public String content;

/**
 *   TextView ImageView
 */
private void addViewToLayout(){
    for (MessageItem item : mItemList){
        if (item.isText){
            addTextView(mLayout,item.content);
        }else {
            addImageView(mLayout, item.content);
        }
    }
}

좋은 웹페이지 즐겨찾기