鸿蒙系统主题如何自定义,自定义流式布局
一、介绍
在鸿蒙系统上自定义流式布局
二、效果图
效果图里面的内容是从服务器获取的,我们使用蒹葭网络库来请求服务器,
蒹葭是鸿蒙系统上一款网络请求框架,本质上是从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 提供的开放接口
鸿蒙系统主题如何自定义,自定义流式布局相关推荐
- 自定义 FlowLayout流式布局搜索框 加 GreenDao存取搜索记录,使用RecyclerView展示
输入框布局的shape <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android ...
- 100行Android代码自定义一个流式布局-FlowLayout
首先来看一下 手淘HD - 商品详情 - 选择商品属性 页面的UI 商品有很多尺码,而且展现每个尺码所需要的View的大小也不同(主要是宽度),所以在从服务器端拉到数据之前,展现所有尺码所需要的行数和 ...
- 自定义View----滑动刻度尺与流式布局 实例(四)
2019独角兽企业重金招聘Python工程师标准>>> 近在系统学习自定义View这一块的知识,前面几篇基本都是理论知识,这篇博客着重从实战来加强对自定义View的理解与运用.实现的 ...
- Android 自定义UI 实战 02 流式布局
Android 自定义UI 实战 02 流式布局-- 自定义ViewGroup 第二章 自定义ViewGroup 流式布局 文章目录 Android 自定义UI 实战 02 流式布局-- 自定义Vie ...
- android自定义view流布局,Android控件进阶-自定义流式布局和热门标签控件
一.概述: 在日常的app使用中,我们会在android 的app中看见 热门标签等自动换行的流式布局,今天,我们就来看看如何 自定义一个类似热门标签那样的流式布局吧 类似的自定义换行流式布局控件.下 ...
- android 流式布局官方,Android 流式布局
FlowLayoutManager 这是一个自定义实现流式布局的LayoutManager,配合RecyclerView使用,可实现标签效果:目前的问题是没有实现View的缓存,以后再补吧. 代码示例 ...
- Android自定义组合布局,Android 流式布局 + 自定义组合控件
自定义组合控件 package yanjupeng.bawei.com.day09.two; import android.content.Context; import android.util.A ...
- Android自定义ViewGroup的布局,往往都是从流式布局开始
前言 前面几篇我们简单的复习了一下自定义 View 的测量与绘制,并且回顾了常见的一些事件的处理方式. 那么如果我们想自定义 ViewGroup 的话,它和自定义View又有什么区别呢?其实我们把 V ...
- Adnroid 自定义流式布局
一般常见的流式布局由两种,一种是横向的个数固定,列表按照竖向进行排列.另一种是横向先排,横向排满之后再竖向排列.而本框架实现是以第二种方式进行处理. 那么这个框架到底该如何使用呢? 首先引入资源 这里 ...
- android自定义流式布局思路,Android 自定义控件基础-流式布局
什么是流式布局?其实我们在平时遇到过,只是有可能叫不出它的名字. 如图: 如上图,就是一个流式布局的样式. &esmp;这里,将记录一下怎么实现这个功能.其实实现这个功能的方法,就是自定义Vi ...
最新文章
- labview虚拟心电监测系统_机器视觉系统单相机模型
- PHP zval内存回收机制和refcount_gc和is_ref_gc
- Java 正则表达式使用详解
- Hive简单案例WordCount
- 下拉菜单的option的value属性值问题
- 小米盒子4 android版本,安卓系统越用越卡,曾学忠:小米 10 至尊纪念版搭载黑科技 MITurbo 4.0 技术...
- c# ef报错_C# EF调用MySql出现“未将对象引用设置到对象的实例”错误解决方案
- 【SqlServer】Sqlserver中的DOS命令操作
- 使用abcpdf将html转换成pdf文件
- 杨森翔的书法(对联、斗方、圆光)
- oracle11g安装副武器类,oracle 11g 服务器类
- 数值分析期末考试复习(引论)
- ADAS工程师的成长之路——ACC法规(ISO 15622-2018 — Adaptive cruise control systems)
- android gps信号检测工具,【分享】GPS Test Plus全球GPS定位卫星信号检测工具
- 网易云音乐接口大全(亲测可用)
- Excel使用教程: 关于Excel的窗口冻结与拆分
- python、pygame开发的太空大战游戏源代码,供学习参考
- 【KnewOne Talk】芋头君:不想做码农
- HP打印机显示状态出错
- 启发式搜索算法(A*算法)