/**
- 计算器 */ @Entry @Component
struct Calculator{ /创建数组,用来设置计算器按钮上显示的内容/ private buttonTexts = [ 'AC' , 'Del' , '+/-' , '/' , '7' , '8' , '9' , '' , '4' , '5' , '6' , '-' , '1' , '2' , '3' , '+' , '%' , '0' , '.' , '=' ] @State displayText: string = '0' @State firstOperand: number | null = null @State operator: string | null = null @State waitingForSecondOperand: boolean = false /构件界面/ build() { /添加列/ Column(){ /--------------------------添加第一列 上面空白的部分*/ Column(){ }/设置列的样式/ .width('100%') .height('10%') /-------------------------------添加第二列 输入框/ Column(){ /添加文本框用来输入计算/ TextInput() .fontSize(70) .height('80%')/设置文本框的高度/ .textAlign(TextAlign.End)/设置文本框的对齐方式 输入显示在右边/ .backgroundColor(Color.White) .fontColor(Color.Black) .padding({right:20}) }/设置列的样式/ .width('100%') .height('35%') .backgroundColor(Color.White)
/*------------------------------------添加第三列 按钮框*/
Column(){
/*添加网格组件*/
Grid(){
/*循环创建计算器的按钮 同时设置按钮上显示的内容*/
ForEach(this.buttonTexts, (item: string , index) => {
/*添加网格项*/
GridItem(){
/*添加按钮*/
Button(item)
.width('100%')/*设置按钮的宽度*/
.height('100%')/*设置按钮的高度*/
.fontSize(30)/*设置按钮的字体大小*/
.borderRadius(50)/*设置按钮的圆角*/
.backgroundColor(this.setButtonBackgroundColor(item))/*设置按钮的背景颜色*/
.fontColor(this.setButtonFontColor( item))/*设置按钮的字体颜色*/
.onClick(()=>{
//this.handleButonClick(item)
})
}
})
}/*设置网格的样式*/
.columnsTemplate('1fr 1fr 1fr 1fr')/*设置4列的模板*/
.rowsTemplate('1fr 1fr 1fr 1fr 1fr')/*设置5行的模板*/
.columnsGap(10)
.rowsGap(10)
}/*设置列的样式*/
.width('95%')
.height('55%')
.margin(10)/*设置列的边距*/
}/*设置列的样式*/
.width('100%')
.height('100%')
} /创建函数用来处理按钮点击事件//* handleButonClick(item: string) { switch (item) { case 'AC': this.displayText = '0' this.firstOperand = null this.Operand = null this.waitingForSecondOperand = false break case 'Del': if (this.displayText.length > 1 ) { this.displayText = this.displayText.slice(0, -1) } else { this.displayText = '0'; } break case '+/-': const currentValue = parseFloat(this.displayText); this.displayText = String(currentValue * -1) break case '%': const currentValue = parseFloat(this.displayText); this.displayText = String(percentValue); break case '.': if (!this.displayText.includes('.')) { this.displayText += '.' } break case '=': if (this.operator && this.firstOperand !== null) { const secondOperand = parseFloat(this.displayText) let result = 0
switch (this.operator) {
case '+':
result = this.firstOperand + secondOperand
break
case '-':
result = this.firstOperand - secondOperand
break
case '*':
result = this.firstOperand * secondOperand
break
case '/':
result = secondOperand !== 0 ? this.firstOperand / secondOperand : 0
break
}
this.displayText = String(result)
this.firstOperand = result
this.operator = null
this.waitingForSecondOperand = false
}
break
default:
if (this.waitingForSecondOperand) {
this.displayText = item
this.waitingForSecondOperand = false
} else {
this.displayText = this.displayText === '0' ? item : this.displayText + item
}
break
}
}*/
/***
- 设置按钮背景颜色 / setButtonBackgroundColor(item: string) { /分支判断/ switch (item) { case '/': case '': case '-': case '+': return '#ffef8282'; case '=': return '#ffdd4637'; default: return '#ededed'; } } /**
- 创建函数用来设置按钮上显示的内容的颜色 / setButtonFontColor(item: string){ switch( item){ case 'AC': case 'Del': case '+/-': case '/': case '': case '-': case '+': return '#ffef3c3c'; case '=': return '#ffffffff'; default: return '#ff000000'; } } }
WWechat import { window } from '@kit.ArkUI' import { MyPage } from '../component/Mypage' import { WechatPage } from '../component/WechatPage'
/**
- @Description: 微信主页面
- @Author: khc
- @Date: 2026/3/30 9:15
- @Version: 1.0 */ @Entry @Component struct Home{ /创建变量,用来获取点击选项时选项的索引值/ @State selectedIndex: number = 0
aboutToAppear(): void { /设置全铺整个屏幕/ window.getLastWindow(getContext(),(error,win)=>{ win.setWindowLayoutFullScreen(true) }) } /构造界面/ build() { /添加列/ Column(){ /添加选项卡组件 1: barPosition: BarPosition.End在底部显示 index:指定默认选中的选项 指定选项的索引/ Tabs({barPosition: BarPosition.End,index: this.selectedIndex}){ /-----------------------------------微信/ TabContent(){ /调用微信页面/ //WechatPage() /添加列/ Column(){
}/*设置列的样式*/
.width('100%')
.height('100%')
.backgroundColor(Color.Red)
}/*设置选项的标题*/
//.tabBar('微信')
.tabBar(this.buildTabBar(0,'微信',$r('app.media.wechat1'),$r('app.media.wechat2')))
/*------------------------------------通讯录*/
TabContent(){
/*添加列*/
Column(){
}/*设置列的样式*/
.width('100%')
.height('100%')
.backgroundColor(Color.Green)
}/*设置选项的标题*/
//.tabBar('通讯录')
.tabBar(this.buildTabBar(1,'通讯录',$r('app.media.contacts1'),$r('app.media.contacts2')))
/*------------------------------------------发现*/
TabContent(){
/*添加列*/
Column(){
}/*设置列的样式*/
.width('100%')
.height('100%')
.backgroundColor(Color.Blue)
}/*设置选项的标题*/
//.tabBar('发现')
.tabBar(this.buildTabBar(2,'发现',$r('app.media.find1'),$r('app.media.find2')))
/*------------------------------------------我*/
TabContent(){
/*调用MyPage主页面*/
//MyPage()
/*添加列*/
Column(){
}/*设置列的样式*/
.width('100%')
.height('100%')
.backgroundColor(Color.White)
}/*设置选项的标题*/
//.tabBar('我')
.tabBar(this.buildTabBar(3,'我',$r('app.media.me1'),$r('app.media.me2')))
}/*设置Tabs的样式*/
.onChange((index: number)=>{/*index就是选中的选项的索引*/
/*把选中的索引保存到selectedIndex中*/
this.selectedIndex = index
})
}/*设置列的样式*/
.width('100%')/*设置列的宽度*/
.height('100%')/*设置列的高度*/
} /**
- 创建选项中的内容
- index 选项的索引
- title 标题
- icon 默认的图标
- selection 选中时的图标
- */ @Builder buildTabBar(index: number,title: string,icon: Resource,selection: Resource ){ /添加列/ Column(){ /添加图标/ Image(this.selectedIndex == index ? selection:icon) .width(30) .height(30) /添加标题/ Text(title) .fontColor(this.selectedIndex == index ? Color.Green:'')
}/*设置列的样式*/
.width('100%')
.height('65%')
} }