一、介绍

在鸿蒙系统上自定义流式布局

二、效果图

效果图里面的内容是从服务器获取的,我们使用蒹葭网络库来请求服务器,

蒹葭是鸿蒙系统上一款网络请求框架,本质上是从retrofit移植过来的,

蒹葭的用法跟retrofit是一样,如果不熟悉蒹葭的用法,

可以阅读鸿蒙系统网络请求框架—蒹葭 这篇文章。

在示例代码中,我们会访问搜索热词

这个接口,这个接口用于获取搜索热词。

三、示例代码讲解

3、1 在配置文件中添加访问网络的权限

"ohos.permission.INTERNET"

3、2 打开entry目录下的build.gradle文件中,在build.gradle文件中的dependencies闭包下添加下面的依赖。

// 蒹葭的核心代码

implementation 'io.gitee.zhongte:jianjia:1.0.1'

// 数据转换器,数据转换器使用gson来帮我们解析json,不需要我们手动解析json

implementation 'io.gitee.zhongte:converter-gson:1.0.1'

implementation "com.google.code.gson:gson:2.8.2"

3、3 在布局文件添加流式布局

xmlns:ohos="http://schemas.huawei.com/res/ohos"

ohos:height="match_parent"

ohos:width="match_parent"

ohos:orientation="vertical">

ohos:id="$+id:flow_layout"

ohos:height="match_content"

ohos:width="match_parent"/>

3、4 在布局文件中创建流式布局的子组件

xmlns:ohos="http://schemas.huawei.com/res/ohos"

ohos:background_element="$graphic:background_ability_main"

ohos:height="match_content"

ohos:margin="10vp"

ohos:padding="10vp"

ohos:text_alignment="center"

ohos:text_color="#ffffff"

ohos:text_size="15fp"

ohos:width="match_content">

3、5 创建接口

/**

* @author 裴云飞

* @date 2021/5/16

*/

public interface Wan {

@GET("/hotkey/json")

Call getHotKey();

}

3、6 在AbilityPackage中创建蒹葭对象,并创建接口的实例对象

public class MyApplication extends AbilityPackage {

private static MyApplication application;

private JianJia mJianJia;

private Wan mWan;

public static MyApplication getInstance() {

return application;

}

@Override

public void onInitialize() {

super.onInitialize();

application = this;

// 创建蒹葭对象

mJianJia = new JianJia.Builder()

.baseUrl("https://www.wanandroid.com/")

.addConverterFactory(GsonConverterFactory.create())

.build();

// 创建接口的实例对象

mWan = mJianJia.create(Wan.class);

}

/**

* 获取蒹葭对象

*

* @return 蒹葭对象

*/

public JianJia getJianJia() {

return mJianJia;

}

/**

* 获取接口的实例对象

*

* @return

*/

public Wan getWan() {

return mWan;

}

}

3、7 在MainAbilitySlice里面使用蒹葭访问服务器,将搜索热词显示到流式布局里面

public class MainAbilitySlice extends AbilitySlice {

private FlowLayout mFlowLayout;

@Override

public void onStart(Intent intent) {

super.onStart(intent);

super.setUIContent(ResourceTable.Layout_ability_main);

mFlowLayout = (FlowLayout) findComponentById(ResourceTable.Id_flow_layout);

// 请求服务端的搜索热词

MyApplication.getInstance().getWan().getHotKey().enqueue(new Callback() {

@Override

public void onResponse(Call call, Response response) {

// 请求成功

if (response.isSuccessful()) {

HotKey hotKey = response.body();

// 设置搜索热词

setHotKey(hotKey);

}

}

@Override

public void onFailure(Call call, Throwable throwable) {

// 请求失败

LogUtils.info("yunfei", throwable.getMessage());

}

});

}

/**

* 设置搜索热词

*

* @param hotKey

*/

private void setHotKey(HotKey hotKey) {

if (hotKey == null || hotKey.data == null || hotKey.data.isEmpty()) {

// 判空操作

return;

}

List hotKeys = hotKey.data;

for (Data data : hotKeys) {

// 将布局文件转换成组件对象,并强转为Text组件

Text text = (Text) LayoutScatter.getInstance(this).

parse(ResourceTable.Layout_item_text, null, false);

if (data != null && !TextUtils.isEmpty(data.name)) {

// 显示组件的内容

text.setText(data.name);

// 将组件添加到流式布局

mFlowLayout.addComponent(text);

}

}

}

@Override

public void onActive() {

super.onActive();

}

@Override

public void onForeground(Intent intent) {

super.onForeground(intent);

}

}

更多代码讲解,请查看博客 ,

博客以自定义流式布局为例,非常详细的介绍了

自定义布局的各方面知识,非常适合鸿蒙的初学者。

四、感谢

感谢玩Android 提供的开放接口

鸿蒙系统主题如何自定义,自定义流式布局相关推荐

  1. 自定义 FlowLayout流式布局搜索框 加 GreenDao存取搜索记录,使用RecyclerView展示

    输入框布局的shape <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android ...

  2. 100行Android代码自定义一个流式布局-FlowLayout

    首先来看一下 手淘HD - 商品详情 - 选择商品属性 页面的UI 商品有很多尺码,而且展现每个尺码所需要的View的大小也不同(主要是宽度),所以在从服务器端拉到数据之前,展现所有尺码所需要的行数和 ...

  3. 自定义View----滑动刻度尺与流式布局 实例(四)

    2019独角兽企业重金招聘Python工程师标准>>> 近在系统学习自定义View这一块的知识,前面几篇基本都是理论知识,这篇博客着重从实战来加强对自定义View的理解与运用.实现的 ...

  4. Android 自定义UI 实战 02 流式布局

    Android 自定义UI 实战 02 流式布局-- 自定义ViewGroup 第二章 自定义ViewGroup 流式布局 文章目录 Android 自定义UI 实战 02 流式布局-- 自定义Vie ...

  5. android自定义view流布局,Android控件进阶-自定义流式布局和热门标签控件

    一.概述: 在日常的app使用中,我们会在android 的app中看见 热门标签等自动换行的流式布局,今天,我们就来看看如何 自定义一个类似热门标签那样的流式布局吧 类似的自定义换行流式布局控件.下 ...

  6. android 流式布局官方,Android 流式布局

    FlowLayoutManager 这是一个自定义实现流式布局的LayoutManager,配合RecyclerView使用,可实现标签效果:目前的问题是没有实现View的缓存,以后再补吧. 代码示例 ...

  7. Android自定义组合布局,Android 流式布局 + 自定义组合控件

    自定义组合控件 package yanjupeng.bawei.com.day09.two; import android.content.Context; import android.util.A ...

  8. Android自定义ViewGroup的布局,往往都是从流式布局开始

    前言 前面几篇我们简单的复习了一下自定义 View 的测量与绘制,并且回顾了常见的一些事件的处理方式. 那么如果我们想自定义 ViewGroup 的话,它和自定义View又有什么区别呢?其实我们把 V ...

  9. Adnroid 自定义流式布局

    一般常见的流式布局由两种,一种是横向的个数固定,列表按照竖向进行排列.另一种是横向先排,横向排满之后再竖向排列.而本框架实现是以第二种方式进行处理. 那么这个框架到底该如何使用呢? 首先引入资源 这里 ...

  10. android自定义流式布局思路,Android 自定义控件基础-流式布局

    什么是流式布局?其实我们在平时遇到过,只是有可能叫不出它的名字. 如图: 如上图,就是一个流式布局的样式. &esmp;这里,将记录一下怎么实现这个功能.其实实现这个功能的方法,就是自定义Vi ...

最新文章

  1. labview虚拟心电监测系统_机器视觉系统单相机模型
  2. PHP zval内存回收机制和refcount_gc和is_ref_gc
  3. Java 正则表达式使用详解
  4. Hive简单案例WordCount
  5. 下拉菜单的option的value属性值问题
  6. 小米盒子4 android版本,安卓系统越用越卡,曾学忠:小米 10 至尊纪念版搭载黑科技 MITurbo 4.0 技术...
  7. c# ef报错_C# EF调用MySql出现“未将对象引用设置到对象的实例”错误解决方案
  8. 【SqlServer】Sqlserver中的DOS命令操作
  9. 使用abcpdf将html转换成pdf文件
  10. 杨森翔的书法(对联、斗方、圆光)
  11. oracle11g安装副武器类,oracle 11g 服务器类
  12. 数值分析期末考试复习(引论)
  13. ADAS工程师的成长之路——ACC法规(ISO 15622-2018 — Adaptive cruise control systems)
  14. android gps信号检测工具,【分享】GPS Test Plus全球GPS定位卫星信号检测工具
  15. 网易云音乐接口大全(亲测可用)
  16. Excel使用教程: 关于Excel的窗口冻结与拆分
  17. python、pygame开发的太空大战游戏源代码,供学习参考
  18. 【KnewOne Talk】芋头君:不想做码农
  19. HP打印机显示状态出错
  20. 启发式搜索算法(A*算法)

热门文章

  1. 手把手教你如何安装水晶易表——靠谱的安装教程
  2. 魔兽世界服务器同时在线人数,魔兽世界服务器人数,魔兽世界服务器人数查询...
  3. 程序员应该具备哪些素养
  4. 阿尔山自驾游(2010年8月中旬,北京出发)
  5. 网络API接口的使用
  6. Windows记事本编码反汇编分析
  7. Tesseract-OCR5.0软件安装和语言包安装(Windows系统)
  8. linux安装docker容器(copy就完了)
  9. base URL是什么意思?干什么用的?
  10. 问题 F: 是你飘了,还是我拿不动刀了(字符串问题)