>>分享Android开发相关的技术 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 22398 个阅读者 刷新本主题
 * 贴子主题:  Android——文章详情页的处理 回复文章 点赞(0)  收藏  
作者:日月光华    发表时间:2024-04-21 10:14:20     消息  查看  搜索  好友  邮件  复制  引用

Android——文章详情页的处理
                                        
private LinearLayout mContentContainer;//文章容器

1.普通文章


private void dealNormalArt(String content){//content是html格式的文章    
    String reg = "<img.*?>";//匹配img标签  
    Pattern pattern = Pattern.compile(reg);    
    Matcher matcher = pattern.matcher(content);    

    List<String> imgurls=new ArrayList<>();    

    boolean result = matcher.find();    

    while(result) {//开始查找        
        Pattern p_src = Pattern.compile("(src|SRC)=(\"|\')(.*?)(\"|\')");//匹配img的src        
        Matcher m_src = p_src.matcher(matcher.group());      
        if (m_src.find()) {            
             String str_src = m_src.group();            
             String src=str_src.substring(5,str_src.length()-1);//去掉前边的src="和后面的"          
             imgurls.add(src);//将处理好的图片地址加入List      
         }      
          result = matcher.find();//判断是否还有img标签  
     }    
         String[] text = pattern.split(content);//获得被图片分割的文本数组    
         for (int i=0;i<text.length;i++){
               TextView textView = new TextView(this);        
               textView.setText(Html.fromHtml(text[i]));//设置html文本显示到TextView      
               mContentContainer.addView(textView);        
               if (i<imgurls.size()){//如果还有图片          
                       String imgurl = imgurls.get(i);            //android9要求https,所以在这里检查将http全部替换为https,根据需要可以省略            
       if (imgurl.contains("http:")) imgurl=imgurl.replace("http","https");            
       ImageView imageView = new ImageView(this);            //imageView.setImageResource(R.drawable.temp);            
       ImageDownloader.imageLoader(this, imgurl,imageView);        
       mContentContainer.addView(imageView);      
        }
   }
}

2.幻灯片图片文章


private void dealPicGroup(String content){//content是json数据,涉及到json处理的部分按照实际数据处理    
    String[] parts = content.split("\\[\\{");    
    TextView textView = new TextView(this);    
    textView.setText(Html.fromHtml(parts[0]));//设置标题    
    mContentContainer.addView(textView);    
    try {        
          JSONArray array=new JSONArray("[{"+parts[1]);
          ArrayList<View> viewList = new ArrayList<>();      
          ViewPager pager = new ViewPager(this);//使用ViewPager
          pager.setBackgroundColor(getResources().getColor(R.color.black));

          LayoutInflater inflater = getLayoutInflater();      
          Log.i(TAG,"list size: "+array.length());        
          for (int i =0; i<array.length(); i++){            
                JSONObject object = array.getJSONObject(i);            //这里使用了写好的xml          
                View view = inflater.inflate(R.layout.image_group_item, null, false);          
                ImageView image= view.findViewById(R.id.gimage);            
                TextView text= view.findViewById(R.id.gtext);            
                ImageDownloader.imageLoader(mContext,object.getString("img"),image);          
                text.setText(object.getString("text"));             //这里设置了监听控制文字展开和收缩,不需要可以删掉          
                //TextView spread = view.findViewById(R.id.spread);          
               //spread.setOnClickListener(new SpreadListener(text));          
                 viewList.add(view);        
        }      
        pager.setAdapter(new GroupImageAdapter(viewList));//设置adapter        
        mContentContainer.addView(pager);    
    } catch (JSONException e) {      
          Log.e(TAG, "parse group image json error", e);  
   }
}

image_group_item.xml


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
       xmlns:android="http://schemas.android.com/apk/res/android"    
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:orientation="vertical">
      <ImageView
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:id="@+id/gimage"/>
      <TextView
             android:layout_width="match_parent"
             android:layout_height="40dp"
             android:lines="2"
             android:ellipsize="end"
             android:layout_alignParentBottom="true"
             android:background="@color/text_al_bg"
             android:textColor="@color/white"
             android:id="@+id/gtext"/>
      <TextView
             android:id="@+id/spread"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:text="@string/spread"
             android:layout_above="@id/gtext"
             android:layout_alignParentEnd="true"
             android:background="@color/text_al_bg"
             android:textColor="@color/white"/></RelativeLayout>

GroupImageAdapter.java


import android.support.annotation.NonNull;
import android.support.v4.view.PagerAdapter;
import android.view.View;import android.view.ViewGroup;
import java.util.ArrayList;
public class GroupImageAdapter extends PagerAdapter {
      private ArrayList<View> viewList;    

      public GroupImageAdapter(ArrayList<View> viewList) {
          this.viewList = viewList;
      }
     @Override  
      public int getCount() {        
            return viewList.size();
      }
     @Override  
      public boolean isViewFromObject(@NonNull View view, @NonNull Object o) {
            return view == o;
      }
     @NonNull  
     @Override
      public Object instantiateItem(@NonNull ViewGroup container, int position) {
            container.addView(viewList.get(position));
            return viewList.get(position);
      }
     @Override
     public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
            container.removeView(viewList.get(position));
     }
}

————————————————
版权声明:本文遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/GrassEva/article/details/87935431


程序猿的技术大观园:www.javathinker.net
  Java面向对象编程-->Lambda表达式
  JavaWeb开发-->使用Session(Ⅰ)
  JSP与Hibernate开发-->立即检索和延迟检索策略
  Java网络编程-->创建非阻塞的HTTP服务器
  精通Spring-->计算属性和数据监听
  Vue3开发-->虚拟DOM和render()函数
  Android Gallery实现循环显示图像
  Android网络编程之WebKit应用
  Android中shape的使用
  Android中的几个布局
  Android 手势操作GestureDetector
  Android的init过程详解
  Android带有粘性头部的ScrollView
  android使用工具性能优化
  Android内存优化—dumpsys meminfo详解
  Android性能优化:App启动原理分析及启动时间优化
  Bitmap压缩原理解析与Android 7.0之前通过NDK使用libjpeg库高...
  到底什么是AndroidX?
  Android 应用程序组件
  Android-商品展示案例
  程序员笔记|JSBridge框架解决通信问题实现移动端跨平台开发
  更多...
 IPIP: 已设置保密
树形列表:   
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。