Android studio 实现随机位置画10个随机大小的五角星的代码

Android studio:实现随机位置画10个随机大小的五角星今天做了一下老师布置的实验课作业安卓的作业。实现在屏幕上随机位置绘制10个随机大小的五角星。虽然我之前自己学习过安卓,但是还有很多的功能没有用到,学到,比如这次这个画图的功能没有使用过,所以在做这个实验的时候有很多的问题。实现的方法是自己自定义组件,新建一个类来继承View,进行自定义组件。先开始五角星的画法,通过translate(x,y)方法来改变起点的位置,使用rotate()方法进行笔锋的转角。代码如下:

	canvas.translate(10,100);//确定五角星的起点的位置
   canvas.drawLine(0,0,r,0,paint);
   canvas.translate(r,0);
   canvas.rotate(144);//转的角度
   canvas.drawLine(0,0,r,0,paint);
   canvas.translate(r,0);
   canvas.rotate(144);
   canvas.drawLine(0,0,r,0,paint);
   canvas.translate(r,0);
   canvas.rotate(144);
   canvas.drawLine(0,0,r,0,paint);
   canvas.translate(r,0);
   canvas.rotate(144);
   canvas.drawLine(0,0,r,0,paint);

然后就是如何进行随机的选位置随机的的大小,我是用的方法是,代码:

 int x = (int) (Math.random()*600+200);//起点的X轴的位置
   int y = (int) (Math.random()*1000+100);//起点y轴的位置
   int r = (int) (Math.random()*250 +20);//五角星的长度

然后我就把这两个放在一起,用一个For循环循环10次。然而!

五角星画出去了?这是为什么,我就开始找呀找,然后发现是因为我的画笔的坐标的位置改了,没有改回来,画下一个五角星的时候就会把之前的坐标当成(0,0)。这个可怎么办呀,我想到了一种方式就是打破思路,重新用一种方式,用数学来计算五角星每一笔的起点和终点。这个方法不会出现画出去的情况(数值合理)。

这个方法连接(同学写的)

https://blog.csdn.net/weixin_43624626/article/details/106150822然后:我又想到了看一看有没有别的方式能解决,开始在网上搜,然后就看到了一种方法,可以记住之前的位置,和还原位置。代码:

 canvas.save();//记住一开始坐标的位置
   canvas.translate(x,y);
   canvas.drawLine(0,0,r,0,paint);
   canvas.translate(r,0);
   canvas.rotate(144);
   canvas.drawLine(0,0,r,0,paint);
   canvas.translate(r,0);
   canvas.rotate(144);
   canvas.drawLine(0,0,r,0,paint);
   canvas.translate(r,0);
   canvas.rotate(144);
   canvas.drawLine(0,0,r,0,paint);
   canvas.translate(r,0);
   canvas.rotate(144);
   canvas.drawLine(0,0,r,0,paint);
   canvas.restore();//还原上一个记住的位置

成功了!!!!!!!!!!!!!!

经过多次的实验,没有出现画出去的情况。作业完成了,我写了这篇博客,我看看我之前的博客,发现好像这次的博客写的字好多呀!!!代码:XML:

<com.example.shiyan5.CanvasView
  android:layout_width="match_parent"
  android:layout_height="match_parent"/>

class:

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.View;
import androidx.annotation.Nullable;
import java.util.Random;
public class CanvasView extends View {
 public CanvasView(Context context, @Nullable AttributeSet attrs) {
  super(context, attrs);
 }
 @Override
 protected void onDraw(Canvas canvas) {
  super.onDraw(canvas);
  Paint paint1 = new Paint();
  for (int i = 0; i < 10; i++) {
   Paint paint = paint1;
   paint.setAntiAlias(true);
   paint.setStyle(Paint.Style.STROKE);
   paint.setStrokeWidth(5);
   paint.setColor(Color.GREEN);
   paint.setTextSize(24);
   int x = (int) (Math.random()*600+200);
   int y = (int) (Math.random()*1000+100);
   int r = (int) (Math.random()*250 +20);
   canvas.save();
   canvas.translate(x,y);
   canvas.drawLine(0,0,r,0,paint);
   canvas.translate(r,0);
   canvas.rotate(144);
   canvas.drawLine(0,0,r,0,paint);
   canvas.translate(r,0);
   canvas.rotate(144);
   canvas.drawLine(0,0,r,0,paint);
   canvas.translate(r,0);
   canvas.rotate(144);
   canvas.drawLine(0,0,r,0,paint);
   canvas.translate(r,0);
   canvas.rotate(144);
   canvas.drawLine(0,0,r,0,paint);
   canvas.restore();
  }
}

觉得不错的话:嘿嘿!

总结

到此这篇关于Android studio 实现随机位置画10个随机大小的五角星的文章就介绍到这了,更多相关Android studio 实现随机位置画10个随机大小的五角星内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Android自定义wheelview随机选号效果

    先看下利用wheelview实现滚动随机选择号码效果: 直接上代码 首页就是dialog显示不在描述 主要看dialog代码 package com.yskj.jh.wheeldemo; import android.app.Dialog; import android.content.Context; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android

  • Android随机生成验证码

    Android随机生成验证码,Android利用随机数绘制不规则的验证码,加强用户登录或者注册的安全性. 具体思路如下: 在一块固定宽高的画布上,画上固定个数的随机数字和字母,再画上固定条数的干扰线 随机数和干扰线的颜色随机生成,随机数的样式随机生成. 界面效果如下: 1.生成随机数代码,Code.java: public class Code { //随机数数组 private static final char[] CHARS = { '2', '3', '4', '5', '6', '7'

  • Android自定义控件深入学习 Android生成随机验证码

    在上一篇的文章中介绍了自定义控件的属性,详情见<详解Android自定义控件属性TypedArray以及attrs>.那么在这基础上实现随机验证码生成,里面的代码是自定义控件以及涉及到自定义view绘画. 1.先看实现的效果图 看到这个效果图是不是感觉还可以.那么就看看源码吧. 2.attr文件 <?xml version="1.0" encoding="utf-8"?> <resources> <attr name=&qu

  • Android实现随机圆形云标签效果

    本文实例为大家分享了Android实现圆形云标签效果展示的具体代码,供大家参考,具体内容如下 下面是实现的效果图: 这个适合用于选择 用户的一些兴趣标签,个性名片等. 代码: Activity package com.dyl.cloudtags; import java.util.ArrayList; import java.util.Arrays; import java.util.Random; import android.app.Activity; import android.cont

  • Android编程实现随机生成颜色的方法示例

    本文实例讲述了Android编程实现随机生成颜色的方法.分享给大家供大家参考,具体如下: 网上有个ColorPicker开源项目,选择颜色值.而在这里我想实现的是动态修改一个view的背景色. 开一个线程,每隔1s修改一次view的背景色. 我们知道在Android里设置一个view的背景色有 framelayout.setBackgroundColor(Color.parseColor("#"+arg0.obj)); 就是用android的Color类去解析一个带#号的十六进制色值.

  • Android studio 实现随机位置画10个随机大小的五角星的代码

    Android studio:实现随机位置画10个随机大小的五角星今天做了一下老师布置的实验课作业安卓的作业.实现在屏幕上随机位置绘制10个随机大小的五角星.虽然我之前自己学习过安卓,但是还有很多的功能没有用到,学到,比如这次这个画图的功能没有使用过,所以在做这个实验的时候有很多的问题.实现的方法是自己自定义组件,新建一个类来继承View,进行自定义组件.先开始五角星的画法,通过translate(x,y)方法来改变起点的位置,使用rotate()方法进行笔锋的转角.代码如下: canvas.t

  • Android Studio debug.keystore位置介绍

    如果你在网上搜debug.keystore的位置,大部分文章都会告诉你在 C:\Users\XXX\.android 目录下,但我电脑的该目录下确实没有这个文件,放入同事的debug.keystore也不会生效. 后来在Android SDK的子目录.android下搜到了debug.keystore文件,猜测的原因是IDE里做了配置,但也不知道是哪里修改的. 最后在 StackOverflow 上找到一个靠谱答案,链接:http://stackoverflow.com/a/30908688 意

  • 易语言向画板中指定或随机位置画指定颜色的点

    画点方法 英文命令:SetPixel 操作系统支持:Windows    所属对象:画板 语法:  无返回值  画板.画点 (点横坐标,点纵坐标,欲画入点的颜色值) 例程 说明 通过"画点"命令向画板的指定位置画一个指定颜色的点. 运行结果: 总结 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持.如果你想了解更多相关内容请查看下面相关链接

  • Android Studio和Gradle使用不同位置JDK的问题解决

    初次安装Android Studio,遇到了不少问题,这是其中的一个,分享如下,同时求各位dalao关注一下啦((*^__^*) ) 使用不同的JDK位置可能会导致Gradle产生多个守护进程 ,首先Android Studio默认下使用的下载时自带的jre,这种jre的功能显然达不到jdk的标准,这会使得开发时可能产生不兼容的问题,当然也可以选择忽略这个警告,但是将来也可能出现问题.因此还是解决掉为好. 注意的问题:下载Android Studio一定是要下载JDK的,如果原先电脑里下载了JA

  • Android Studio 4.0新特性及升级异常问题的解决方案

    一.升级问题 1. dataBinding开启配置修改 升级到AS 4.0以后,出现如下的预警,对于我这种有代码洁癖的人是不能忍的,必须解决 DSL element 'android.dataBinding.enabled' is obsolete and has been replaced with 'android.buildFeatures.dataBinding' 解决方法: dataBinding { enabled = true } 这是原有的DataBinding开启方式,在升级后

  • 浅谈Android Studio JNI生成so库

    1.新建Android studio工程 2.新建class:AppKey.java.主要为了保存密钥 代码块 package com...adminapp.lib.utils.jni; /** * Created by seven on 16/9/8. */ public class AppKey { static { System.loadLibrary("AppKey"); } public static native String WechatId(); public stat

  • 在Android Studio中使用BaiduMap SDK实时获取当地位置信息

    配置BaiduMap 环境 1.在百度API中新建自己的一个APP包名和APP名需要注意和自己Android Studio 中的包名和APP名保持一致: 2.百度地图中还需要填写一个SHA1 数字签名: a.输入keytool -list -v -keystore debug.keystore,会得到三种指纹证书,选取SHA1类型的证书(密钥口令是android),这个获取到的SHA1的值和ecplise中获取的值是一样的,是作为debug用的. b.输入keytool -list -v -ke

  • 如何设置Android studio 3.0显示光标返回上一次浏览位置的箭头图标

    这几天刚升级了Android studio 3.0,发现光标返回上一次浏览位置的箭头图标没有了.快捷键 ctrl+alt+左右键,按着真不方便.方便按的按键早已经被占满了,也懒得去改动快捷键了.来,把小箭头找回来.原来Android studio 3.0把Toolbr给默认关闭了,打开就好了.看下图: 总结 以上所述是小编给大家介绍的如何设置Android studio 3.0显示光标返回上一次浏览位置的箭头图标,希望对大家有所帮助!

  • Android studio圆形进度条 百分数跟随变化

    本文实例为大家分享了Android studio圆形进度条展示的具体代码,供大家参考,具体内容如下 MainActivity import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; public class MainActivity extends AppCompatActivity impl

  • 详解android studio游戏摇杆开发教程,仿王者荣耀摇杆

    最近在做一个山寨版的王者荣耀,刚开始做的时候毫无头绪 摇杆的多点触控做的特别烂 经过几天的思考已完美解决所有问题,下面就和大家分享下这个摇杆的开发思路 若有不正之处,请多多谅解并欢迎指正. 首先这个摇杆要用到较多的数学知识,小编的数学特别烂也就高中水平吧 我们这个摇杆一共就五个按钮,一个移动摇杆.三个技能摇杆和一个普通攻击按钮 最终效果 好了废话少说让我们开始吧 新建一个项目 建好项目之后,我们先新建一个类叫做"画".也是我们的主View 修改Hua.java的代码 public cl

随机推荐