首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在android中旋转一个圆围绕另一个圆

在Android中旋转一个圆围绕另一个圆,可以使用动画和自定义视图来实现。下面是一个实现的示例:

  1. 首先,创建一个自定义的View类,继承自View,并重写onDraw方法来绘制两个圆。
代码语言:txt
复制
public class CircleView extends View {
    private Paint paint;
    private float centerX, centerY;
    private float radius1, radius2;
    private float angle = 0;

    public CircleView(Context context) {
        super(context);
        init();
    }

    public CircleView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    private void init() {
        paint = new Paint();
        paint.setColor(Color.BLUE);
        paint.setStyle(Paint.Style.FILL);
    }

    @Override
    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
        super.onSizeChanged(w, h, oldw, oldh);
        centerX = w / 2f;
        centerY = h / 2f;
        radius1 = Math.min(w, h) / 4f;
        radius2 = Math.min(w, h) / 8f;
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        canvas.drawCircle(centerX, centerY, radius1, paint);

        float x = (float) (centerX + radius1 * Math.cos(Math.toRadians(angle)));
        float y = (float) (centerY + radius1 * Math.sin(Math.toRadians(angle)));
        canvas.drawCircle(x, y, radius2, paint);
    }

    public void setAngle(float angle) {
        this.angle = angle;
        invalidate();
    }
}
  1. 在Activity中使用这个自定义View,并通过属性动画来实现旋转效果。
代码语言:txt
复制
public class MainActivity extends AppCompatActivity {
    private CircleView circleView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        circleView = findViewById(R.id.circle_view);

        ObjectAnimator animator = ObjectAnimator.ofFloat(circleView, "angle", 0, 360);
        animator.setDuration(2000);
        animator.setRepeatCount(ValueAnimator.INFINITE);
        animator.setInterpolator(new LinearInterpolator());
        animator.start();
    }
}
  1. 在布局文件中添加自定义View。
代码语言:txt
复制
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="16dp"
    tools:context=".MainActivity">

    <com.example.myapplication.CircleView
        android:id="@+id/circle_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</RelativeLayout>

这样就可以在Android中实现一个圆围绕另一个圆旋转的效果了。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android如何判断当前点击位置是否的内部

我们都知道,一个圆形的ImageView控件(本项目中使用的圆形控件是github上的),其实所占的区域还是正方形区域,只是显示内容为圆形,当我们给ImageView设置触摸事件时,没有显示区域也会相应点击事件...如上图所示,当点击之内拖动时,跟着移动,但是点击之外拖动时,没有任何反应。...,y2)与圆心(x1,y1)的距离d的长度,然后与的半径r相比较,如果d r则当前按下的点在之外,如果d<r,则当前按下的点在之内, 如下图所示: ?...MotionEvent.ACTION_DOWN: lastX = (int) event.getRawX(); lastY = (int) event.getRawY(); //获取控件屏幕的位置...,证明点击位置没有内 if(distanceZ r){ return false; } isView = true; break; case MotionEvent.ACTION_MOVE

2.1K20

android 一个应用启动另一个应用android 一个应用启动另一个应用

android 一个应用启动另一个应用 程序开发过程当中,常遇到需要启动另一个应用程序的情况,比如在点击软件的一个按钮可以打开地图软件。...pi = null; try { pi = packageManager.getPackageInfo("com.alibaba.android.rimet...intent.addCategory(Intent.CATEGORY_LAUNCHER); ComponentName cn = new ComponentName("com.alibaba.android.rimet...其实手机安装的每一个应用的包名都是可以查到的,只要我们查到相关应用的包名,再通过它获得主类名,再按照上面的方法就可以了。 第一步:怎么获得包名?...反编译工具:android-classyshark https://github.com/EasySpringBoot/android-classyshark 通过java -jar xxx.jar执行

48640

一个比想象更骚气的-svg实现

之前写了一篇Canvas画图-一个比想象更骚气的(渐变圆环),其实SVG也可以实现类似的效果,而且两者api惊人的相似。...关于SVG SVG是一种矢量图形,图形改变尺寸的情况下质量不会损失。 相比canvas,svg有一个很大的优势就是内联进html的时候可以像操作dom一样操作svg,这样做起动画来非常方便。...下面的那个circle标签就是定义一个,cx,cy,r分别是圆心坐标和半径,fill和stroke分辨对应canvas的fillStyle和strokeStyle,stroke-width对应canvas...另外我还在上面加了一个,用来做底色,同时给做动画的做了一个旋转transform="rotate(-88 54 54)"用来改变起始点。 效果如下: ?...不过svgandroid4.3以上才有比较好的支持,相对来说canvas的支持就比较好了。

3K70

教你Tableau绘制蝌蚪图等带有空心的图表(多链接)

本文将通过分享多种方法,包括成功的与失败的尝试,来讲解如何在Tableau创建蝌蚪图等带有空心的图表。...Tableau,哑铃图很容易构建。它需要两个轴,一个轴作为点,另一个轴作为线来连接点。...我发现创建空白圆圈的最好方法就是用另一个圆圈填充白色(或其他背景颜色)的点内部。因此,我们将复制销售圈栏并将其覆盖在当前圆圈的顶部。...测量值卡上,拖动总和(销售圈(复印件))到列表顶部,也就是总和(销售圈)的前面。 这将颠倒圆圈的大小。或者也可双击图例一个尺寸图标,然后选择“反转”。...带有空心圆圈的哑铃图: 前一时段用空心而当前时段用实心表示的哑铃图: 用白色圆圈点与线之间构造间隙的哑铃图: 带有空心圆圈的棒棒糖图: 带有空心圆圈的折线图

8.4K50

计算两点间的距离、点到线的距离,判断一点是否一个内、一点是否一矩形内、两是否相交

circle2.r+circle3.r && LEN5 > 0) { return 1; } else { return 0; } } /* 功能:计算两点间的距离、点到线的距离,判断一点是否一个内...a,&line1.b,&line1.c); printf("点到线的距离为:%.3lf",poinToLine(point3,line1)); printf("n"); //计算一点是否一个内...fflush(stdin); printf("nn计算一点是否一个内n"); printf("请输入点的坐标:(x,y)"); scanf("%lf,%lf",&point4.x,&point4...内为1,反之为0:%0.lf",poinToCircle(point4,circle1)); printf("n"); //判断一点是否一矩形内 fflush(stdin); printf...n"); printf("请依次输入第一个的半径r以及圆心(x,y):"); scanf("%lf%lf%lf",&circle2.r,&circle2.x,&circle2.y); printf

1.2K10

Android 一个APP里打开另一个APP

前言 不知道你们有没有注意过,每次打开一些软件的时候都会有广告引导页,有时候手滑点到了,会有进入手机上的另一个APP,这有没有引起你的注意呢? 运行效果图 ?...① 打开另一个APP 接下来DemoA的MainActivity里面写一个按钮,用于点击之后打开DemoB应用 <Button android:id="@+id/btn_open_b...然后另一个APP里面接收并显示出来。现在先修改一下DemoB的布局,增加一个TextView用来显示接收的内容。...因为是要DemoB的TestActivity页面,所以这个activityAndroidManifest.xml需要配置 android:exported 属性,布尔类型,是否支持其他应用访问目标...其实还有一种方式是通过URL打开另一个APP,但是我不推荐这样做,为什么?没有原因…

2.5K30

在编程中发现数学之美——使用python和Processing绘制几何图形

计算机图形转换变得非常有趣而且容易。processing,可以很容易的移动或旋转一个三角形或类似的图形。...使用rotate旋转对象 几何旋转表示将一个物体围绕一个中心转动。Processingrotate函数围绕着原点旋转坐标系。它只接受一个参数,这个参数是旋转坐标系的角度。角度的单位是弧度。...上面的代码表示围绕着原点旋转坐标系20度,这儿的原点在窗口的左上角。下面的图形首先移动原点到窗口中心,然后旋转20度。 Rotate函数使上绘制对象变得很容易: 移动原点,到你想要画的的圆心。...接下来我们试着旋转每个单独的方块。 旋转单独的方块 因为processing旋转围绕着原点的,循环中我们需要首先移动到我们需要旋转的方块,然后旋转,最后绘制这个方块。...当移动到方块的位置之后,移动到下一个方块之前,我们需要再回到方块组成的的圆心。可以使用另一个translate函数返回到之前的状态,但是因为需要返回的太多,你会很容易搞混。

5.7K11

如何实现超萌动感小炸弹?

可以发现身体其实也就是一个,然后加上左上角的高光。那么高光是怎么实现的呢? 三个点的高光,很简单的,用Path画弧,然后使用DashPathEffect效果,完美。 那么另一个高光呢?看图。 ?...可以看到就是条圆弧和一个路径合成的,然后裁剪保持内。路径的形成就是取弧度的两个点,然后用贝塞尔曲线进行绘制,控制点位于弧度中分线(下图红点)。 ? ?...android实现 9 脸左右移动动画 可以看到左右移动,移动的时间然后我们只需要在画脸的时间加一个偏移,然后移动的过程,会发现脸会绕炸弹身体的中心旋转。所以代码如下 ?...使用camera,进行z轴的旋转,然后再进行translate左右移动,然后使用valueanimator动画对变偏移进行设置,搞定!移动过程,可以发现眼睛有眯下的效果。...其实就是一个金色的实心,然后一个红色的边框,中间白色,三个按不同的速率和极限做放大缩小动画 (这里原设计还加入了变色的功能,金色会变色,可以用ArgbEvaluator实现)。 ?

75340

CorelDRAW 2019 软件应用项目(五)

选择对页面居中,就可以得到镇中心的,随机填充一种颜色,并且取消描边,复制这个椭圆,原地粘贴 如果什么都不按进行缩小,会以图形外八点组成矩形的对角线端点进行缩放,八点边正中四点,会改变图形的长和宽...修剪空心 可以将上面放大的圆形关闭切换为选择工具,按住 shift 选择,金小圆和最底层大圆菜单栏中选择移除前面对象我们就会得到一个空心,包括之前选中的小圆,也会被裁剪,想要保留小圆,我们可以先点击相交就相当于是复制了中间的小圆...你也可以之前就复制两个一模一样的校园,将一个托拽到旁边备用,然后再把他拖进去,然后点击对齐和分布,让该图居中即可。 同样选中这两个,直接点击移除前面对象,这样两个图层同时被裁减。...这代表你选中的渐变填充,是由中心向外填充拖动圆形把手可以更改最外面椭圆形的路径大小,这个椭圆形就是从中心点填充的,渐变向外扩张,最终碰触到椭圆虚线界线,它是圆形把手的运动路径,你可以理解为有两个方形颜色产生的渐变围绕一个方形为圆心...,袁心和空心把手为半径进行旋转,以至于原本填充的条形渐变经过圆形把手沿路径旋转后形成的中心向外渐变,椭圆虚线界限最远端可达另一个色块和圆形把手处当圆心与另一个色块和圆心与型,把手之间的距离相等,并且两条线夹角为

1.7K10

JSP页面调用另一个JSP页面的变量

https://blog.csdn.net/huyuyang6688/article/details/16896447          jsp学习,经常需要在一个jsp页面调用另一个jsp...的值传到b.jsp:                       a.jsp页面的核心代码为:                            传参     (说明:给i赋值时也可以用jsp表达式,例如i=)                       b.jsp页面的核心代码为:                          ...name的值传送到b.jsp:                       a.jsp页面的核心代码为:                            <%request.setAttribute...a.jsp的核心代码为:                              <%!

7.3K52

Android仿网易云 鲸云音效效果

画三角形 自定义surfaceView的通用写法都一样,随便看一下文章 Android的SurfaceView详解:https://www.jianshu.com/p/b037249e6d31 我们先清空画布...colorMatrix); iv_bg.setColorFilter(colorFilter); 改变了亮度后对动态获取颜色会有影响,亮色的可能获取不到了,获取颜色应该提前获取 开始画线 仔细看了一下,先画围绕这个画很多点...,隔一段一个点,然后把点用曲线圈起来就ok了,动的时候就是设置一个上下移动的距离,一个点变成两个,两个点先连线,然后同一侧的点重新连成曲线,感觉是这样的,先试试 围绕画点 这个就是直线和的交点问题,...2 + getHeight() / 2 - mBytes[i]; } canvas.drawLines(mPoints, mPaint); } 效果是这样纸,用另一个频谱图也差不多...这样的话,那是不是我把它绕一圈,然后在按相反方向绕一圈,同样跳动的两个点连线,然后随便画画曲线是不是就ok啦;做完就发现里面的值太大了,都看不出来是个了,那就都减去一点高度什么的,调整一下大小;然后这次就先画一个三次贝塞尔曲线吧

2.3K20

《破局射频前端》之三:SOI晶射频前端的使用和价值量分析

这里我们来梳理下SOI晶射频前端的使用和相关价值量的变化。文章的重点是变化和量化。 为什么是SOI? 蜂窝通信终端开关性能需求 有下面几个因素影响了开关的选择。...采用SOI工艺的另外好处是可以将开关的逻辑控制单元集成到相同一个SOI晶上面。 上表比较了一个开关分支上面,pHEMT和SOI 工艺带来的差异。...上图为5G Sub6的收发模块。我们用它来做一个简单地展示。...小结 首先引用了RFMD的分析文章,讲述了SOI开关类产品的应用和性能指标要求。接着分析SOI不同射频前端器件的分布情况。最后展示了SOI晶逐年的需求增长情况。...5G毫米波模组SOI的需求,是未来的一个不确定性因素,我们拭目以待。

80920

感受一波Android自定义view实现超萌动感小炸弹!!

那么另一个高光呢?看图。 image.png 可以看到就是条圆弧和一个路径合成的,然后裁剪保持内。路径的形成就是取弧度的两个点,然后用贝塞尔曲线进行绘制,控制点位于弧度中分线(下图红点)。...再次出场 33.gif 9.脸左右移动动画 可以看到左右移动,移动的时间然后我们只需要在画脸的时间加一个偏移,然后移动的过程,会发现脸会绕炸弹身体的中心旋转。...移动过程,可以发现眼睛有眯下的效果。这个很简单,可以把眼睛用椭圆来实现,保持宽度不变,改变高度就可以了。...其实就是一个金色的实心,然后一个红色的边框,中间白色,三个按不同的速率和极限做放大缩小动画 (这里原设计还加入了变色的功能,金色会变色,可以用ArgbEvaluator实现)。...欢迎关注我,分享Android干货,交流Android技术。 对文章有何见解,或者有何技术问题,欢迎评论区一起留言讨论!

45220
领券