Demo需求:

三个控件展示三个关键词,在资源文件获取文本,每隔5秒切换下一词,关键词展示到最后再重头开始

开发工具:Android studio

布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/activity_main"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="horizontal"tools:context="com.example.leaven.demo.MainActivity"><TextViewandroid:id="@+id/te1"android:layout_width="wrap_content"android:layout_height="50dp"android:layout_weight="1"/><TextViewandroid:id="@+id/te2"android:layout_width="wrap_content"android:layout_height="50dp"android:layout_weight="1"/><TextViewandroid:id="@+id/te3"android:layout_width="wrap_content"android:layout_height="50dp"android:layout_weight="1"/>
</LinearLayout>

代码:

public class MainActivity extends AppCompatActivity {private TextView te1;private TextView te2;private TextView te3;private int result;private int end;private int current;Handler handler = new Handler(){@Overridepublic void handleMessage(Message msg){int i=msg.what;if (end!=0&¤t==result){if(end==1){te1.setText(datas.get(i*3));te2.setText(null);te3.setText(null);}if(end==2){te1.setText(datas.get(i*3));te2.setText(datas.get(i*3+1));te3.setText(null);}}te1.setText(datas.get(i*3));te2.setText(datas.get(i*3+1));te3.setText(datas.get(i*3+2));if(current!=result){current++;handler.sendEmptyMessageDelayed(current,5000);}else {current=0;handler.sendEmptyMessageDelayed(current,5000);}}};private List<String> datas;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initview();}private void initview() {te1 = (TextView) findViewById(R.id.te1);te2 = (TextView) findViewById(R.id.te2);te3 = (TextView) findViewById(R.id.te3);//创建一个匿名线程用于下载文件new Thread(){public void run(){homeBean = JsonUtils.json2Bean("{\"name\":\n" +"\"海量正版精品应用\",\n" +"\"西单大悦城\",\n" +"\"小说排行\",\"都市\",\"大主宰\",\"雪鹰领主\",\"龙王传说\",\"一念永恒\",\"武道巅峰\",\"校花的贴身高手\",\"太古神王\",\"帝霸\",\"择天记\",\"天域苍穹\",\"我真是大明星\",\"玄界之门\",\"超品相师\",\"全职法师\",\"特种兵在都市\",\"邪王追妻\",\"不朽凡人\",\"飞天\",\"万古神帝\",\"最强狂兵\",\"龙符\",\"儒道至圣\",\"圣墟\",\"永夜君王\",\"人道至尊\",\"逆天邪神\",\"逆鳞\",\"重生之都市修仙\",\"忍辱负重\",\"DNF\",\"掌门\",\"悬疑\",\"韦小宝\",\"护士\",\"宅斗\",\"小李飞刀\",\"阵法\",\"诸葛亮\",\"锦衣卫\",\"大神\",\"奇幻\",\"星际\",\"GL\",\"神墓\",\"吞天决\",\"七年之痒\",\"穿越\",\"重生\",\"豪门\",\"言情\",\"修真\",\"异能\",\"杀手\",\"神魔\",\"特种兵\",\"武逆\",\"悬疑探险\",\"总裁\",\"斗神天下\",\"武道修魂\",\"全系修真\",\"校园\",\"网游排行榜\",\"陈二狗的妖孽人生\",\"唐家三少\",\"辰东\",\"天蚕土豆\",\"风凌天下\",\"极品护花保镖\",\"校园全能高手\",\"英雄联盟\",\"神医天下\",\"极品\",\"最强战兵\",\"火爆兵王\",\"天才相士\",\"武灵天下\",\"武逆\",\"万道剑尊\",\"阴阳鬼术\",\"绝世药神\",\"修真聊天群\",\"魔王\",\"海盗\",\"通天剑主\",\"传奇再现\",\"造化之王\",\"神级英雄\",\"仙路至尊\",\"偷香高手\",\"斗罗大陆\",\"神经小坏蛋\",\"战歌之王\",\"怪物乐园\",\"黑武士的猫\",\"一世之尊\",\"将夜\",\"无尽丹田\",\"狂神\",\"长生界\",\"恶魔法则\",\"天珠变\",\"英雄信条\",\"主宰之王\",\"焚天之怒\",\"梦幻空间\",\"苍穹龙骑\",\"盗贼王座\",\"重生之我为书狂\",\"逍遥小镇长\",\"极品仙师\",\"轮回游戏空间\",\"魔兽要塞\",\"贼行天下\",\"从零开始\",\"召唤剑圣\",\"超凡者游戏\",\"超野蛮\",\"网游之天地\",\"独闯天涯\",\"法师神游\",\"暗夜游侠\",\"超级包裹\",\"魔性游戏\",\"高手寂寞\",\"绝对死亡游戏\",\"沧狼行\",\"不死不灭\",\"九鼎记\",\"龙蛇演义\",\"大唐医神\",\"剑雨楼\",\"江湖第一高手\",\"重求天道\"\n" +"]}", HomeBean.class);datas = null;if (MainActivity.this.homeBean != null) {datas = homeBean.getName(); // 获取数据列表System.out.println(datas);Message message = handler.obtainMessage();message.what = 3;handler.sendMessage(message);result=datas.size()/3;System.out.println("send==="+result);end=datas.size()%3;handler.sendEmptyMessage(0);}}}.start();}
}

由于需要在关键词最后再次展示之前的,需要考虑到最后剩下单个词或两个的情况,需要再加上文本前一两个,这里通过取余的一些算法,完成操作.

代码中文本内容为json字符串,解析json使用的Gson.jar,使用方法添加依赖

compile 'com.google.code.gson:gson:2.7'

其中的JsonUtils为自己写的使用gson的工具类,只为方便使用

package com.itheima.googleplay.util;
import java.lang.reflect.Type;
import android.util.Log;
import com.google.gson.Gson;
/** json数据解析工具 */
public class JsonUtil {/** 用于解析json的类 */private static Gson GSON = new Gson();/*** 把json字符串转换为JavaBean* @param json json字符串* @param beanClass JavaBean的Class* @return*/public static <T> T json2Bean(String json, Class<T> beanClass) {T bean = null;try {bean = GSON.fromJson(json, beanClass);} catch (Exception e) {Log.i("JsonUtil", "解析json数据时出现异常\njson = " + json, e);}return bean;}/*** 把json字符串转换为JavaBean。如果json的根节点就是一个集合,则使用此方法<p>* type参数的获取方式为:Type type = new TypeToken<集合泛型>(){}.getType();* @param json json字符串* @return type 指定要解析成的数据类型*/public static <T> T json2Collection(String json, Type type) {T bean = null;try {bean = GSON.fromJson(json, type);} catch (Exception e) {Log.i("JsonUtil", "解析json数据时出现异常\njson = " + json, e);}return bean;}}

JavaBean 的创建可以使用 GsonFormat 插件,在 AS 中安装: File-->Settings-->Plugins

解析json文本并使用handler完成三个控件文本内容的切换相关推荐

  1. 安卓文本编辑器php cpp,用安卓原生控件封装一个简易的富文本编辑器

    最近接到项目需求:移动端原生写一个富文本编辑器.        ( ⊙ o ⊙ )从没遇到过富文本要用原生写的,然后就查阅各种资料.然后结合自己的思路:其实安卓的富文本编辑器就是一个 "容器 ...

  2. Qt中LineEdit、TextEdit 、PlainTextEdit三个控件的区别

    Qt中LineEdit.TextEdit.PlainTextEdit这三个控件区别为:输入格式不同.用途不同.限制行数不同. 一.输入格式不同 1.LineEdit:LineEdit的输入格式为单行文 ...

  3. Web控件文本框Reset的功能

    在前一篇中<怎样实现Web控件文本框Reset的功能>http://www.cnblogs.com/insus/p/4120889.html Insus.NET只实现了文本框的功能.单个或 ...

  4. 2、Web 窗体的基本控件——文本框控件(TextBox)

    2.Web 窗体的基本控件--文本框控件(TextBox) 文本框控件(TextBox) 前端 <%@ Page Language="C#" AutoEventWireup= ...

  5. wxpython富文本_Python实例讲解 -- wxpython 基本的控件 (文本)

    使用基本的控件工作 wxPython 工具包提供了多种不同的窗口部件,包括了本章所提到的基本控件.我们涉及静态文本.可编辑的文本.按钮.微调.滑块.复选框.单选按钮.选择器.列表框.组合框和标尺.对于 ...

  6. 使用jQuery, CSS, JSON 和ASP.NET打造一个新闻轮换控件

    这个新闻轮换控件能在网页上的同一个地方显示几条新闻.新闻被拆开几页,为了放置在一个指定的区域.每一页也能包含一对新闻列表. 通过点击底部的页码,能够在不同的页面之间导航,点击页的每个新闻项,就能查看新 ...

  7. 城市选择控件文本框【纯javascript打造】兼容IE6以及以上、谷歌、Firefox

    在淘宝旅行上看到的城市选择效果,感觉还不错,就自己的理解重新实现一遍,先看效果,然后再细说实现原理,支持鼠标上下键选择城市,支持直接输入城市名称,拼音首字母,全拼,支持IE6遮盖SELECT,压缩后1 ...

  8. InteWidgetTookit现有三个控件的使用方法

    前言 在我之前的文章<我的开源项目:InteWidgetTookit>里,对InteWidgetToolkit进行了的简单介绍.现在我已经开始使用CodePlex进行开发和管理,它的地址是 ...

  9. wxpython有没有可视化设计_python图形化界面设计(wxpython)三树控件(wx.TreeCtrl)

    本篇内容来自https://www.jb51.net/article/181158.htm wxPython树控件介绍 树(tree)是一种通过层次结构展示信息的控件,如下图所示是树控件示例,左窗口中 ...

最新文章

  1. 企业级Nginx服务基础到架构优化详解--25条
  2. Matlab 矩阵计算例子
  3. Spring Boot Debug调试
  4. LeetCode 207. 课程表(拓扑排序)
  5. python 桌面提醒_使用Python获取桌面通知
  6. appium入门文档
  7. Bootstrap3 静态模态对话框
  8. 学Web前端开发需要哪些基础?零基础小白该怎么入行?
  9. Excel导入数据的实现
  10. spring3.2.5学习(一)——spring环境配置以及IOC简介
  11. vray uneal插件试用版 license 安装过程
  12. 华为盒子 原生android,华为悦盒/各种安卓盒子找回原生设置以及适配蓝牙遥控器...
  13. 基于64QAM的LDPC编译码算法
  14. cadvisor 离线安装
  15. 《老路用得上的商学课》26-30学习笔记
  16. 程序人生:程序员如何和老板谈升职加薪
  17. meta http-equiv=refresh content=0; url=是什么意思
  18. CTF学习笔记——Easy Calc
  19. 前后端开发的心得体会_前后端对接的思考及总结
  20. 矩阵相关知识回顾--协方差的意义

热门文章

  1. 1分钟链圈|什么?11岁男孩竟然当上区块链公司CEO!融资33亿美元,EOS注定成史上最大ICO...
  2. FPGA异步信号寄存器打拍
  3. tcga数据下载_TCGA数据库免疫相关文件下载大全
  4. 【报告分享】 中国饭店协会:2020中国餐饮业年度报告(附下载)
  5. 梅花香自苦寒来 ----议张恂《笑看JavaEye软工坛之叽叽喳喳》
  6. python把坐标写入文本_使用Python将XY坐标写入CSV文件
  7. Java开发技术总结!2021年Java面经分享
  8. 数学和中国文学的比较
  9. CSS的鼠标为手形: cursor:pointer;
  10. linux频繁读写i2c,ZYNQ7020 在Linux下I2C频繁读取导致系统崩溃