问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

android开发中如何旋转布局

发布网友 发布时间:2022-04-24 20:16

我来回答

3个回答

热心网友 时间:2023-10-09 14:54

  Android 平台提供了两类动画,一类是 Tween 动画,即通过对场景里的对象不断做图像变换(平移、缩放、旋转)产生动画效果;第二类是 Frame
动画,即顺序播放事先做好的图像,跟电影类似。本文分析 Tween动画的rotate实现旋转效果。

  在新浪微博客户端中各个操作进行中时activity的右上角都会有个不停旋转的图标,类似刷新的效果,给用户以操作中的提示。这种非模态的提示方式推荐使用,那么下面就分享下如何实现这种效果吧

  1、定义一个ImageView

  定义一个ImageView是为了装载图片,其中的图片将被rotate用来进行旋转,其他View亦可。

  资源文件为

  Java代码  
  xmlns:android="http://schemas.android.com/apk/res/android"

  android:layout_width="match_parent"

  android:layout_height="match_parent">

  
  android:id="@+id/infoOperating"

  android:layout_width="wrap_content"

  android:layout_height="wrap_content"

  android:src="@drawable/operating"

  android:scaleType="center">

  其中的android:src为图片内容,可使用附件中的图片。

  java代码为

  Java代码

  ImageView infoOperatingIV =
(ImageView)findViewById(R.id.infoOperating);

  2、定义rotate旋转效果

  在res/anim文件夹下新建tip.xml文件,内容如下

  Java代码
  android:fromDegrees="0"

  android:toDegrees="359"

  android:ration="500"

  android:repeatCount="-1"

  android:pivotX="50%"

  android:pivotY="50%" /> 

  含义表示从0到359度开始循环旋转,0-359(若设置成360在停止时会出现停顿现象)度旋转所用时间为500ms,旋转中心距离view的左顶点为50%距离,距离view的上边缘为50%距离,即正中心,具体每个含义见下面的具体属性介绍。

  java代码为

  Java代码

  Animation operatingAnim = AnimationUtils.loadAnimation(this,
R.anim.tip);

  LinearInterpolator lin = new LinearInterpolator();

  operatingAnim.setInterpolator(lin);

  setInterpolator表示设置旋转速率。LinearInterpolator为匀速效果,Accelerateinterpolator为加速效果、DecelerateInterpolator为减速效果,具体可见下面android:interpolator的介绍。

  a. 关于其中的属性意义如下(红色部分加以注意):

  android:fromDegrees 起始的角度度数

  android:toDegrees
结束的角度度数,负数表示逆时针,正数表示顺时针。如10圈则比android:fromDegrees大3600即可

  android:pivotX 旋转中心的X坐标

  浮点数或是百分比。浮点数表示相对于Object的左边缘,如5; 百分比表示相对于Object的左边缘,如5%;
另一种百分比表示相对于父容器的左边缘,如5%p; 一般设置为50%表示在Object中心

  android:pivotY 旋转中心的Y坐标

  浮点数或是百分比。浮点数表示相对于Object的上边缘,如5; 百分比表示相对于Object的上边缘,如5%;
另一种百分比表示相对于父容器的上边缘,如5%p; 一般设置为50%表示在Object中心

  android:ration
表示从android:fromDegrees转动到android:toDegrees所花费的时间,单位为毫秒。可以用来计算速度。

  android:interpolator表示变化率,但不是运行速度。一个插补属性,可以将动画效果设置为加速,减速,反复,反弹等。默认为开始和结束慢中间快,

  android:startOffset 在调用start函数之后等待开始运行的时间,单位为毫秒,若为10,表示10ms后开始运行

  android:repeatCount 重复的次数,默认为0,必须是int,可以为-1表示不停止

  android:repeatMode
重复的模式,默认为restart,即重头开始重新运行,可以为reverse即从结束开始向前重新运行。在android:repeatCount大于0或为infinite时生效

  android:detachWallpaper 表示是否在壁纸上运行

  android:zAdjustment 表示被animated的内容在运行时在z轴上的位置,默认为normal。

  normal保持内容当前的z轴顺序

  top运行时在最顶层显示

  bottom运行时在最底层显示

  b. 运行速度

  运行速度为运行时间(android:ration)除以运行角度差(android:toDegrees-android:fromDegrees),比如android:ration为1000,android:toDegrees为360,android:fromDegrees为0就表示1秒转1圈。

  c. 循环运行

  Java代码

  android:fromDegrees="0"

  android:toDegrees="360"

  android:repeatCount="-1"

  android:repeatCount="-1"即表示循环运行,配合上android:fromDegrees="0"
android:toDegrees="360"表示不间断

  3、开始和停止旋转

  在操作开始之前调用

  Java代码

  if (operatingAnim != null) {

  infoOperatingIV.startAnimation(operatingAnim);

  }

  在操作完成时调用

  Java代码

  infoOperatingIV.clearAnimation();

  许多朋友不知道如何停止旋转animation,所以强制设置rotate转动多少圈表示操作,但却无法与操作实际的进度匹配上,实际上只要如上代码所示清除animation即可。

  其他:

  对于上面的转动在横屏(被设置为了不重绘activity)时会出现问题,即旋转中心偏移,导致动画旋转偏离原旋转中心。解决如下

  Java代码

  @Override

  public void onConfigurationChanged(Configuration newConfig) {

  super.onConfigurationChanged(newConfig);

  if (operatingAnim != null && infoOperatingIV != null &&
operatingAnim.hasStarted()) {

  infoOperatingIV.clearAnimation();

  infoOperatingIV.startAnimation(operatingAnim);

  }

  }

热心网友 时间:2023-10-09 14:54

楼主你好,这个可以通过动画来达到这个效果的,代码如下:
只要把您的layout对象传进去就行了
public void showAnimation(View mView)
{
final float centerX = mView.getWidth() / 2.0f;
final float centerY = mView.getHeight() / 2.0f;
//这个是设置需要旋转的角度,我设置的是180度
RotateAnimation rotateAnimation = new RotateAnimation(0, 180, centerX,
centerY);
//这个是设置通话时间的
rotateAnimation.setDuration(1000*3);
rotateAnimation.setFillAfter(true);
mView.startAnimation(rotateAnimation);
}
希望能帮到您

热心网友 时间:2023-10-09 14:55

楼主你好,这个可以通过动画来达到这个效果的,代码如下:
只要把您的layout对象传进去就行了
public void showAnimation(View mView)
{
final float centerX = mView.getWidth() / 2.0f;
final float centerY = mView.getHeight() / 2.0f;
//这个是设置需要旋转的角度,我设置的是180度
RotateAnimation rotateAnimation = new RotateAnimation(0, 180, centerX,
centerY);
//这个是设置通话时间的
rotateAnimation.setDuration(1000*3);
rotateAnimation.setFillAfter(true);
mView.startAnimation(rotateAnimation);
}
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
踏板摩托车没电了启动技巧 我经常睡觉时梦遗 情人节创意标语 酒店与情人节的宣传标语 为什么热敏电阻有对温度高度敏感的特性? 如何用安卓手机给电脑当摄像头用 用手机充当电脑摄像头的方法怎样用手机与电脑连接充当摄像头 EXCEL表格无法运行宏怎么解决呢 昂科威发动机舱盖电路对蓄电池短路怎么解决,仪表提示检修车辆,发动机报... 黑龙江康辉医疗器械有限公司怎么样? 安卓如何实现横屏后改变页面布局 如何让Android自适应不同分辨率或不同屏幕大小的layout布局 开发安卓手机软件,新建一个布局文件,如何将它设置为横屏, android 横屏和竖屏布局不同时,需要onCreate()重新载入,如何不重新载入让数据保存,并切换不同的布局 android 的界面布局 怎么适应不同分辨率的手机 以及横竖屏间的切换 android 怎么使布局横向显示 联网电视突然显示无信号 意外险什么时候买?真的有必要买吗? 手机可以上网,但是电视处于无信号状态,咋办? 意外险的投保有哪些限制你知道多少 符合4个条件才算意外的意外险 买了多久可以生效 出国旅游意外医疗保险要提前多长时间买 平安意外险的生效时间和治疗时间怎么理赔 意外险什么时候生效 白色桑蚕丝的衣服如何洗? 哪个机构的人工智能辅导课专业? 白色蚕丝衣服洗后发黄怎么变白? 未来已来,人工智能+教育,路在何方? 人工智能教育平台有哪些? AI人工智能教育的未来发展方向是什么? 我用windowsandroid 运行软件自动横屏,怎么设置 android 切换横屏时怎么全屏 android如何在代码中判断横竖屏 15年股指期货交割时间表 2015年期指交割日是什么时候 2015年7月份股指期货的交割日是哪天? 期指交割日是什么时候? 1、股指交割日怎么算?有人说是合约的第三个周五,合约是哪天?怎么看?2... 二零一五年九月期指交割是哪天 期指交割日是什么时间 期指如何交割? 期指交割日是什么时间? 2o15年6月股指期货交割是贴水还是升水 闪讯用户如何解决DNS污染 和网页商店都打不开是DNS污染还是被墙了 安卓手机如何彻底清除dns污染? 安卓手机如何彻底清除dns污染,重启,飞行模式没用 我的域名被GFW+DNS投毒污染了,有人知道怎么解 华为手机没有铃声了怎么办 我的华为手机来电没有铃声
  • 焦点

最新推荐

猜你喜欢

热门推荐