1
This commit is contained in:
		
							parent
							
								
									40d5a9cdc0
								
							
						
					
					
						commit
						17106b34c3
					
				
							
								
								
									
										75
									
								
								entry/src/main/ets/pages/compontents/imageBtn.ets
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								entry/src/main/ets/pages/compontents/imageBtn.ets
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,75 @@ | |||||||
|  | @Component | ||||||
|  | export default struct imageBtn { | ||||||
|  |   //状态变量unPressed,用于控制按钮的状态 | ||||||
|  |   @State unPressed: boolean = true | ||||||
|  |   btnWidth: string | ||||||
|  |   btnHeight: string | ||||||
|  |   imgSrc:Resource | ||||||
|  |   opacityNum:number=1 | ||||||
|  |   @Styles customStyle(){ | ||||||
|  |     .width('100%') | ||||||
|  |     .height('100%') | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   build() { | ||||||
|  |     Column() { | ||||||
|  |       Column() { | ||||||
|  |         Stack() { | ||||||
|  |           // Image($r('app.media.topB_back')) | ||||||
|  |           Row() { | ||||||
|  |             // 判断当前组件为放开状态 | ||||||
|  |             if (this.unPressed) { | ||||||
|  |               // 插入Row组件,配置过渡效果 | ||||||
|  |               Image(this.imgSrc) | ||||||
|  |                 // 水波纹扩散动画:Row组件backgroundColor属性变更(#fff -> #ccc),系统插入动画过渡效果,从组建的中心点开始放大,scale{0,0}变更scale{1,1} | ||||||
|  |                 .transition({ | ||||||
|  |                   type: TransitionType.Insert, | ||||||
|  |                   opacity: 0, | ||||||
|  |                 }) | ||||||
|  |             } | ||||||
|  |             // 判断当前组件为按下状态 | ||||||
|  |             else if (!this.unPressed) { | ||||||
|  |               // 插入Row组件,配置过渡效果 | ||||||
|  |               Image(this.imgSrc) | ||||||
|  |                 .opacity(this.opacityNum) | ||||||
|  |                 .onAppear(() => { | ||||||
|  |                   // 水波纹聚拢动画:Row组件backgroundColor属性变更(#ccc -> #fff),插入动画过渡效果,scale{1,1}变化为scale{0,0} | ||||||
|  |                   animateTo({ | ||||||
|  |                     duration: 500, | ||||||
|  |                     // 聚拢动画播放完成后,需要衔接扩散动画,此时Row组件backgroundColor属性变更(#fff -> #ccc),插入动画过渡效果,scale{0,0}变化为scale{1,1} | ||||||
|  |                     onFinish: () => { | ||||||
|  |                       this.opacityNum=1 | ||||||
|  |                     } }, | ||||||
|  |                     () => { | ||||||
|  |                       this.opacityNum=0.2 | ||||||
|  |                     }) | ||||||
|  |                 }) | ||||||
|  |             } | ||||||
|  |             // 其他状态 | ||||||
|  | 
 | ||||||
|  |           } | ||||||
|  |           .justifyContent(FlexAlign.Center) | ||||||
|  |           .alignItems(VerticalAlign.Center) | ||||||
|  |         } | ||||||
|  |         .customStyle() | ||||||
|  |       } | ||||||
|  |       .width(this.btnWidth) | ||||||
|  |       .height(this.btnHeight) | ||||||
|  |     } | ||||||
|  |     // onTouch事件,监听状态 | ||||||
|  |     .onTouch((event: TouchEvent) => { | ||||||
|  |       // 当按钮按下时,更新按钮的状态(unPressed:true -> false) | ||||||
|  |       if (event.type == TouchType.Down) { | ||||||
|  |         animateTo({ duration: 400 }, () => { | ||||||
|  |           this.unPressed = !this.unPressed | ||||||
|  |         }) | ||||||
|  |       } | ||||||
|  |       // 当按钮放开时,更新按钮的状态(unPressed:false -> true) | ||||||
|  |       if (event.type == TouchType.Up) { | ||||||
|  |         animateTo({ duration: 400 }, () => { | ||||||
|  |           this.unPressed = !this.unPressed | ||||||
|  |         }) | ||||||
|  |       } | ||||||
|  |     }) | ||||||
|  |   } | ||||||
|  | } | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user