小说阅读器-阅读界面文字处理

完成了布局,我们就要对功能进行制作了

  1. 文字处理
    在主界面我们已经将选择的书籍内容获取到了一个String里,那么接下来就是对这个String进行处理了(如果你采用了ScrollView下面的内容就可以不用看了,至于为什么,因为ScrollView不需要进行处理

    看过小说的都知道,小说分一章一章的,所以我们也要进行分章节,那怎么分呢?
    找规律
    打开你们找的小说文本,打开它,看一看(别上瘾了),就会发现,没章前面都有

    第一章 归来
    第二章 擒下
    第三章 妖怪头领‘褚庸’

    这样的开头,没错,这就是我们要找的规律,接下来我们就要根据第xx章来分割

     result = new String(buff, "utf-8");	
     chapter=result.split("第(.|..+)章");

    用正则表达式匹配
    分割过后的文字会存储在chapter这个数组里,后面在将每一章的内容分配到分配到页面上(由于本人的方法太蠢了就不贴出来了,根据每页字数来分配),如果遇到文字参差不齐那就看看这个JustifyTextView 自定义TextView解决中文排版

  2. 显示文字
    显示文字只需要将分割好的文字绑定至RecycleView即可注意先后顺序
    Android-RecycleView的使用

package com.example.xiaoming.readbook;

import android.content.Context;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.os.Build;
import android.support.annotation.RequiresApi;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import java.util.List;

public class SimpleAdapter extends RecyclerView.Adapter<MyViewHolder> {
    private List<String> Datas;
    private Context Context;
    private boolean check;
    public SharedPreferences sharedPreferences;
    public SharedPreferences.Editor editor;

    public SimpleAdapter(Context context, List<String> datas) {
        this.Context = context;
        this.Datas = datas;
    }

    @RequiresApi(api = Build.VERSION_CODES.M)
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item, parent, false);
        MyViewHolder viewHolder = new MyViewHolder(view);
        viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (!check) {
                    Read.setting.setVisibility(View.VISIBLE);
                    check = true;
                } else if (check) {
                    Read.setting.setVisibility(View.INVISIBLE);
                    check = false;
                    Read.check_mulu = false;
                    Read.mulu.setVisibility(View.INVISIBLE);
                }
            }
        });
        return viewHolder;
    }

    @Override
    public void onBindViewHolder(MyViewHolder holder, int position) {

        Read.readpage = holder.getAdapterPosition();

        holder.textView.setText(Datas.get(position));
        if (!Read.check) {
            holder.textView.setTextColor(Color.BLACK);
        } else {
            holder.textView.setTextColor(Color.WHITE);
        }
    }


    @Override
    public int getItemCount() {
        return Datas.size();
    }
}

class MyViewHolder extends RecyclerView.ViewHolder {

    public TextView textView;

    public MyViewHolder(View itemView) {
        super(itemView);
        textView = itemView.findViewById(R.id.textView);
    }
}

你可能感兴趣的:(Android)