05.HarmonyOS-页面渲染
1.循环控制
//创一个类
class Item {
name: string
image: ResourceStr
price: number
discount: number
constructor(name: string, image: ResourceStr, price: number, discount: number = 0) {
this.name = name
this.image = image
this.price = price
this.discount = discount
}
}
@Entry
@Component
struct Index {
//创建一个变量
private items: Array<Item> = [
new Item("李宁健身衣服男运动专业高弹紧身衣", "https://img.alicdn.com/bao/uploaded/O1CN01SBAgM31CvXQ6ALKEU_!!6000000000143-0-yinhe.jpg", 55),
new Item("李宁健身衣服男运动专业高弹紧身衣", "https://img.alicdn.com/bao/uploaded/O1CN01SBAgM31CvXQ6ALKEU_!!6000000000143-0-yinhe.jpg", 55,10.5),
new Item("李宁健身衣服男运动专业高弹紧身衣", "https://img.alicdn.com/bao/uploaded/O1CN01SBAgM31CvXQ6ALKEU_!!6000000000143-0-yinhe.jpg", 55),
new Item("李宁健身衣服男运动专业高弹紧身衣", "https://img.alicdn.com/bao/uploaded/O1CN01SBAgM31CvXQ6ALKEU_!!6000000000143-0-yinhe.jpg", 55),
new Item("李宁健身衣服男运动专业高弹紧身衣", "https://img.alicdn.com/bao/uploaded/O1CN01SBAgM31CvXQ6ALKEU_!!6000000000143-0-yinhe.jpg", 55),
new Item("李宁健身衣服男运动专业高弹紧身衣", "https://img.alicdn.com/bao/uploaded/O1CN01SBAgM31CvXQ6ALKEU_!!6000000000143-0-yinhe.jpg", 55),
new Item("李宁健身衣服男运动专业高弹紧身衣", "https://img.alicdn.com/bao/uploaded/O1CN01SBAgM31CvXQ6ALKEU_!!6000000000143-0-yinhe.jpg", 55)
]
build() {
Column() {
Row() {
Text("商品展示")
.fontSize(16)
}
.width("100%")
.margin({ top: 10 })
ForEach(this.items, (item: Item) => {
Row() {
Image(item.image)
.width("40")
.margin({ right: 5 })
Column() {
Text(item.name)
.fontSize(10)
if(item.discount){
Text("原价:¥" + item.price)
.fontSize(10)
.fontColor("#ccc")
.decoration({type:TextDecorationType.LineThrough})
Text("补贴:¥" + item.discount)
.fontSize(10)
.fontColor("#f36")
Text("¥" + (item.price-item.discount))
.fontSize(10)
.fontColor("#f36")
}else{
Text("¥" + item.price)
.fontSize(10)
.fontColor("#f36")
}
}
.alignItems(HorizontalAlign.Start)
.justifyContent(FlexAlign.Start)
}
.width("100%")
.borderRadius(10)
.padding(10)
.backgroundColor("#fff")
.margin({ top: 5 })
})
}
.width('100%')
.height("100%")
.backgroundColor("#efefef")
.padding(20)
}
}
查看布局
2.List提供页面滚动
//创一个类
class Item {
name: string
image: ResourceStr
price: number
discount: number
constructor(name: string, image: ResourceStr, price: number, discount: number = 0) {
this.name = name
this.image = image
this.price = price
this.discount = discount
}
}
@Entry
@Component
struct Index {
//创建一个变量
private items: Array<Item> = [
new Item("李宁健身衣服男运动专业高弹紧身衣", "https://img.alicdn.com/bao/uploaded/O1CN01SBAgM31CvXQ6ALKEU_!!6000000000143-0-yinhe.jpg", 55),
new Item("李宁健身衣服男运动专业高弹紧身衣", "https://img.alicdn.com/bao/uploaded/O1CN01SBAgM31CvXQ6ALKEU_!!6000000000143-0-yinhe.jpg", 55,10.5),
new Item("李宁健身衣服男运动专业高弹紧身衣", "https://img.alicdn.com/bao/uploaded/O1CN01SBAgM31CvXQ6ALKEU_!!6000000000143-0-yinhe.jpg", 55),
new Item("李宁健身衣服男运动专业高弹紧身衣", "https://img.alicdn.com/bao/uploaded/O1CN01SBAgM31CvXQ6ALKEU_!!6000000000143-0-yinhe.jpg", 55),
new Item("李宁健身衣服男运动专业高弹紧身衣", "https://img.alicdn.com/bao/uploaded/O1CN01SBAgM31CvXQ6ALKEU_!!6000000000143-0-yinhe.jpg", 55),
new Item("李宁健身衣服男运动专业高弹紧身衣", "https://img.alicdn.com/bao/uploaded/O1CN01SBAgM31CvXQ6ALKEU_!!6000000000143-0-yinhe.jpg", 55),
new Item("李宁健身衣服男运动专业高弹紧身衣", "https://img.alicdn.com/bao/uploaded/O1CN01SBAgM31CvXQ6ALKEU_!!6000000000143-0-yinhe.jpg", 55),
new Item("李宁健身衣服男运动专业高弹紧身衣", "https://img.alicdn.com/bao/uploaded/O1CN01SBAgM31CvXQ6ALKEU_!!6000000000143-0-yinhe.jpg", 55),
new Item("李宁健身衣服男运动专业高弹紧身衣", "https://img.alicdn.com/bao/uploaded/O1CN01SBAgM31CvXQ6ALKEU_!!6000000000143-0-yinhe.jpg", 55),
new Item("李宁健身衣服男运动专业高弹紧身衣", "https://img.alicdn.com/bao/uploaded/O1CN01SBAgM31CvXQ6ALKEU_!!6000000000143-0-yinhe.jpg", 55),
new Item("李宁健身衣服男运动专业高弹紧身衣", "https://img.alicdn.com/bao/uploaded/O1CN01SBAgM31CvXQ6ALKEU_!!6000000000143-0-yinhe.jpg", 55),
new Item("李宁健身衣服男运动专业高弹紧身衣", "https://img.alicdn.com/bao/uploaded/O1CN01SBAgM31CvXQ6ALKEU_!!6000000000143-0-yinhe.jpg", 55),
new Item("李宁健身衣服男运动专业高弹紧身衣", "https://img.alicdn.com/bao/uploaded/O1CN01SBAgM31CvXQ6ALKEU_!!6000000000143-0-yinhe.jpg", 55),
new Item("李宁健身衣服男运动专业高弹紧身衣", "https://img.alicdn.com/bao/uploaded/O1CN01SBAgM31CvXQ6ALKEU_!!6000000000143-0-yinhe.jpg", 55)
]
build() {
Column() {
Row() {
Text("商品展示")
.fontSize(16)
}
.width("100%")
.height(30)
.margin({ top: 10 })
.layoutWeight(0)
List(){
ForEach(this.items, (item: Item) => {
ListItem(){
Row() {
Image(item.image)
.width("40")
.margin({ right: 5 })
Column() {
Text(item.name)
.fontSize(10)
if(item.discount){
Text("原价:¥" + item.price)
.fontSize(10)
.fontColor("#ccc")
.decoration({type:TextDecorationType.LineThrough})
Text("补贴:¥" + item.discount)
.fontSize(10)
.fontColor("#f36")
Text("¥" + (item.price-item.discount))
.fontSize(10)
.fontColor("#f36")
}else{
Text("¥" + item.price)
.fontSize(10)
.fontColor("#f36")
}
}
.alignItems(HorizontalAlign.Start)
.justifyContent(FlexAlign.Start)
}
.width("100%")
.borderRadius(10)
.padding(10)
.backgroundColor("#fff")
.margin({ top: 5 })
}
})
}
.width("100%")
//权重数越大权重越小,数小的占完剩下的给数大的,数字一样大进行平分
.layoutWeight(1)
}
.width('100%')
.height("100%")
.backgroundColor("#efefef")
.padding(20)
}
}
3.自定义组件
组件
@Component
//如果是页内组件,不需要使用export
export struct Header {
private title: ResourceStr
build() {
Row() {
Text("< ")
.fontSize(16)
Text(this.title)
.fontSize(16)
//没用的地方使用 Blank填满
Blank()
Text(" 刷新")
.fontSize(16)
}
.width("100%")
.height(30)
.margin({ top: 10 })
.layoutWeight(0)
}
}
使用
//创一个类
class Item {
name: string
image: ResourceStr
price: number
discount: number
constructor(name: string, image: ResourceStr, price: number, discount: number = 0) {
this.name = name
this.image = image
this.price = price
this.discount = discount
}
}
import {Header} from '../../common/Common'
//自定义函数(全局)
@Builder function Card(item:Item){
Row() {
Image(item.image)
.width("40")
.margin({ right: 5 })
Column() {
Text(item.name)
.fontSize(10)
if(item.discount){
Text("原价:¥" + item.price)
.fontSize(10)
.fontColor("#ccc")
.decoration({type:TextDecorationType.LineThrough})
Text("补贴:¥" + item.discount)
.fontSize(10)
.fontColor("#f36")
Text("¥" + (item.price-item.discount))
.fontSize(10)
.fontColor("#f36")
}else{
Text("¥" + item.price)
//组件特有样式
.textStyle()
}
}
.alignItems(HorizontalAlign.Start)
.justifyContent(FlexAlign.Start)
}
//公共样式
.fillScreen()
}
//公共样式
@Styles function fillScreen(){
.width("100%")
.borderRadius(10)
.padding(10)
.backgroundColor("#fff")
.margin({ top: 5 })
}
//继承模式样式
@Extend(Text) function textStyle(){
.fontSize(10)
.fontColor("#f36")
}
@Entry
@Component
struct Index {
//创建一个变量
private items: Array<Item> = [
new Item("李宁健身衣服男运动专业高弹紧身衣", "https://img.alicdn.com/bao/uploaded/O1CN01SBAgM31CvXQ6ALKEU_!!6000000000143-0-yinhe.jpg", 55),
new Item("李宁健身衣服男运动专业高弹紧身衣", "https://img.alicdn.com/bao/uploaded/O1CN01SBAgM31CvXQ6ALKEU_!!6000000000143-0-yinhe.jpg", 55,10.5),
new Item("李宁健身衣服男运动专业高弹紧身衣", "https://img.alicdn.com/bao/uploaded/O1CN01SBAgM31CvXQ6ALKEU_!!6000000000143-0-yinhe.jpg", 55),
]
build() {
Column() {
//组件使用
Header({title:"商品列表"})
List(){
ForEach(this.items, (item: Item) => {
ListItem(){
//调用函数(全局)
Card(item);
//函数调用(内部)
this.Card(item)
}
})
}
.width("100%")
//权重数越大权重越小,数小的占完剩下的给数大的,数字一样大进行平分
.layoutWeight(1)
}
.width('100%')
.height("100%")
.backgroundColor("#efefef")
.padding(20)
}
//自定义函数(内部)
@Builder Card(item:Item){
Row() {
Image(item.image)
.width("40")
.margin({ right: 5 })
Column() {
Text(item.name)
.fontSize(10)
if(item.discount){
Text("原价:¥" + item.price)
.fontSize(10)
.fontColor("#ccc")
.decoration({type:TextDecorationType.LineThrough})
Text("补贴:¥" + item.discount)
.fontSize(10)
.fontColor("#f36")
Text("¥" + (item.price-item.discount))
.fontSize(10)
.fontColor("#f36")
}else{
Text("¥" + item.price)
.fontSize(10)
.fontColor("#f36")
}
}
.alignItems(HorizontalAlign.Start)
.justifyContent(FlexAlign.Start)
}
.width("100%")
.borderRadius(10)
.padding(10)
.backgroundColor("#fff")
.margin({ top: 5 })
}
}
赞(1)
赏