您的位置:首页 > 移动开发 > Android开发

android中生成随机点

2016-06-20 19:21 477 查看
 先上图,效果图是这样这是我自定义一个view来生成的很简单 代码就不贴了 原理就是自己写一个VIew控件  在里面重写onDraw方法然后自己画点
canvas.drawCircle(x, y, 半径, 透明度);
划线
canvas.drawLine(x,y,x2,y2,线的样式)
通过一系列的逻辑就可以实现了
算了 还是贴代码吧  下面是我写死的5个点
public class MyView extends View{private Canvas css=new Canvas();private String SHIBAI="-1";//获取颜色失败private List<String> colorlist=new ArrayList<>();//颜色集合 防止重复private List<MyBean> list ;private boolean START = true;// 如果不设置这个START进行判断,每次点击屏幕后,屏幕只允许出现一个圆//获取传递过来的X,Yprivate int width;private int hight;private Context context;public MyView(Context context) {super(context);this.context=context;}public MyView(Context context,AttributeSet attrs){super(context, attrs);}/*** MyView大小*/@Overrideprotected void onMeasure(int widthMeasureSpec, int heigh4000tMeasureSpec) {super.onMeasure(widthMeasureSpec, heightMeasureSpec);list = new ArrayList<MyBean>();suijiDian();}@Overrideprotected void onDraw(Canvas canvas) {for (int i = 0; i < list.size(); i++) {MyBean wave = list.get(i);canvas.drawCircle(wave.x, wave.y, wave.radius, wave.paint);}if(list.size()>1){Paint paint = new Paint();paint.setColor(Color.BLACK);for(int i=1;i<list.size();i++){canvas.drawLine(list.get(0).x,list.get(0).y,list.get(i).x,list.get(i).y,paint);}}}public void suijiDian(){List<Myzuobiao> listtwo=new ArrayList<>();listtwo=MyDome.list;for(int i=0;i<listtwo.size();i++){MyBean bean=new MyBean();//自己定义的一个bean 只有X,Y属性bean.radius=20;bean.x= listtwo.get(i).getX();bean.y=listtwo.get(i).getY();bean.paint = initPaint(bean.alpha);list.add(bean);}if (list.size() == 0) {// 如果不设置这个START进行判断,每次点击屏幕后,屏幕只允许出现一个圆START = true;}invalidate();if (START) {handler.sendEmptyMessage(0);}}/*** 初始化paint*/private Paint initPaint(int alpha) {Paint paint = new Paint();paint.setAntiAlias(true);// 抗锯齿paint.setStyle(Paint.Style.FILL);// STROKE圆环  这个是实心的paint.setAlpha(alpha);// 透明度String getcolor=getColormy();while(getcolor==SHIBAI){getcolor=getColormy();}paint.setColor(Color.parseColor("#"+getcolor));// 颜色return paint;}private Handler handler = new Handler() {@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);switch (msg.what) {case 0:Refresh();invalidate();if (list != null && list.size() > 0) {//下面这个代码如果不注释的话 会一直刷新 我们要它重写一下 如果传入的list值不变的话 就不要刷新//handler.sendEmptyMessageDelayed(0, 1000);// 每50毫秒发送}break;default:break;}}};/**** 刷新*/private void Refresh() {for (int i = 0; i < list.size(); i++) {MyBean bean = list.get(i);if (START == false && bean.alpha == 0) {list.remove(i);bean.paint = null;continue;} else if (START == true) {START = false;}bean.radius = 20; //半径bean.alpha = 110;// 透明度bean.width = 20;bean.paint.setAlpha(bean.alpha);bean.paint.setStrokeWidth(bean.width);}}/*** 产生一个或多个唯一的颜色* @return 产生的颜色*/public String getColormy(){int ss= (int) (Math.random()*(255-0)+0);int ss1= (int) (Math.random()*(255-0)+0);int ss2= (int) (Math.random()*(255-0)+0);// Log.e("hgx",ss+":"+ss1+":"+ss2);String mycolor=Integer.toHexString(ss)+Integer.toHexString(ss1)+Integer.toHexString(ss2);// Log.e("hgx",mycolor);while(mycolor.length()<6){mycolor=mycolor+"0";}for(int i=0;i<colorlist.size();i++){if(colorlist.get(i).equals(mycolor)){return SHIBAI;}}colorlist.add(mycolor);return  mycolor;}}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: