当前位置:   article > 正文

【ArkTS】鸿蒙开发 在用户界面点击图片实现图片旋转和图片缩小动画_鸿蒙开发图片旋转动画

鸿蒙开发图片旋转动画

为了实现图片点击旋转、缩放、位移等功能,我主要应用了多态样式:stateStyles()属性和动画animation()属性,具体用法可以参考官网给出的说明:

stateStyles()属性: https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V2/arkts-statestyles-0000001482592098-V2

animation()属性: https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V2/arkts-layout-update-animation-0000001500356349-V2

对于图片实现动画效果 总结为三个步骤

1.给出图片原有状态

2.设置图片变化后状态

3.给出原状到变化后状态的动画效果(比如变化速度,延迟的变化时间)

一:设置图片原有状态和变化后状态
stateStyles()属性的参数可以参考官网指南,normal()为正常态  presses()为按压态

  1. .stateStyles({
  2. //变化前图片样式
  3. normal:
  4. {
  5. .width('100%')
  6. },
  7. //变化后图片样式(pressed为选中后变化)
  8. pressed:{
  9. .width('50%')
  10. }
  11. })

二:设置图片变化效果
该变化效果即简单的变化时间为1000(默认单位毫秒)

  1. .animation({
  2. //转变时间
  3. duration:1000
  4. })

三:效果展示
经过一二步骤小羊的点击变化效果如下所示

按同样方法 改变不同参数 也可以实现按压旋转效果

将两个效果结合 可以形成旋转消失的效果 

如果想松开按压后依然是消失状态,可以将normal()参数中的正常态效果移出直接给到图片下面,为了提高小路,只有normal中的状态会恢复

四、完整代码

  1. @Entry
  2. @Component
  3. struct Index {
  4. build() {
  5. Column() {
  6. Column(){
  7. Image($r('app.media.BSHEEP'))
  8. //状态样式
  9. .stateStyles({
  10. //变化前图片样式
  11. normal:
  12. {
  13. .width('100%')
  14. },
  15. //变化后图片样式(pressed为选中后变化)
  16. pressed:{
  17. .width('50%')
  18. }
  19. })
  20. //动画效果
  21. .animation({
  22. //转变时间
  23. duration:1000
  24. })
  25. .width('100%')
  26. .border({width:5,color:'#383838'})
  27. //圆角
  28. .borderRadius(40)
  29. Text('我是青青草原上最骚的小黑羊')
  30. .fontColor(Color.White)
  31. .fontSize(30)
  32. .margin({ top:50,left:10 })
  33. .lineHeight(40)
  34. .fontWeight(600)
  35. .stateStyles({
  36. normal:
  37. {
  38. .rotate({angle:0})
  39. .scale({x:1, y: 1})
  40. },
  41. pressed:{
  42. .rotate({angle:180})
  43. .scale({x: 0, y: 0})
  44. }
  45. })
  46. .animation({
  47. duration:1000
  48. })
  49. Row(){
  50. Text() {
  51. ImageSpan($r('app.media.BSHEEP'))
  52. .width(100)
  53. .borderRadius(200)
  54. Span('B-SHEEP')
  55. .fontColor(Color.White)
  56. }
  57. .stateStyles({
  58. normal:
  59. {
  60. .rotate({angle:0})
  61. },
  62. pressed:{
  63. .rotate({angle:180})
  64. }
  65. })
  66. .animation({
  67. duration:1000
  68. })
  69. }
  70. .width('100%')
  71. .padding({top:50,left:100})
  72. }
  73. .width(300)
  74. .height(500)
  75. .backgroundColor('#383838')
  76. .margin({top:50})
  77. .padding(5)
  78. .shadow({radius:50,color:Color.Pink})
  79. }
  80. .width('100%')
  81. .height('100%')
  82. .backgroundColor('#757575')
  83. }
  84. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/383809
推荐阅读
相关标签
  

闽ICP备14008679号