当前位置: 代码迷 >> Android >> Android从零开始(2)
  详细解决方案

Android从零开始(2)

热度:9   发布时间:2016-05-01 11:57:28.0
Android从零开始(二)
  

      知识点:1、DDMS:是Android的一种工具,这个工具可以对Android程序以及设备进行运行追踪和调试
              2、Logcat:android的控制台
             
              将异常或者错误信息输出到Android的控制台(代码如下)
            
try{			Class.forName("111");		}catch(Exception e){			//先输出异常类型和描述信息			Log.e("tag", e.toString());			//然后再将堆栈的方法调用痕迹输出			StackTraceElement[] ste=e.getStackTrace();			for(int i=0;i<ste.length;i++){				Log.e("tag", ste[i].toString());			}		}

            
              如何方便快捷的找出错误信息(输出信息的方式)
    
//输出信息到logcat		Log.e("Tag", "这是error级的信息,字体为红色");		Log.w("Tag", "这是warning级的信息,字体为橙色");		Log.d("Tag", "这是debug级的信息,字体为蓝色");		Log.i("Tag", "这是info级的信息,字体绿色");		Log.v("Tag", "这是verbose级的信息,字体为黑色");		//按理来说我们如果是调试信息,那么应该用d,如果是看变量值,应该是用i		//如果是错误应该是e 		//但是个人建议除了错误外,都使用v,因为黑色在logcat中非常容易区分

        

              3、View:View是android中的一种称呼,在android中所有可见的,不可见的,只要是控件,都可以称呼为view(相当于swing的Component)
                 View分为两类:3.1、ViewGroup:布局,容器View

                              3.2、View:Button,TextView等传统的控件。


              4、一个简单的例子(模拟水滴)

             步骤一:新建一个Circle类模拟水滴(代码如下)
                
package com.zjyb.demo3;import android.graphics.Color;//圈圈的类public class Circle {	//以前我们都喜欢private,然后get/set	//在android中没这种讲法        //水滴的X轴坐标	public float x;        //水滴的Y轴坐标	public float y;        //水滴的半径	public float radius;        //水滴的颜色	public int color=Color.parseColor("#16e9c9");        //水滴的透明度	public int alpha=255;}

     

        步骤二:新建一个MyView类继承View(代码如下)
         
package com.zjyb.demo3;import java.util.ArrayList;import java.util.List;import java.util.Random;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.view.View;public class MyView extends View implements Runnable{		public void run(){		while(true){			//invalidate和postInvalidate			//前者是普通的销毁,是线程不安全的,通常我们会在UI线程中调用			//后者是内部实现了Handler消息队列的销毁方式,可以在非UI线程中调用			//然后具体的执行会有内部实现的Handle去处理			postInvalidate();			try{				Thread.sleep(100);			}catch(Exception e){							}		}	}	public MyView(Context context) {		super(context);		new Thread(this).start();		// TODO Auto-generated constructor stub	}	public Circle c; 	//利用集合存放以前绘制的内容	public List<Circle> historyCircle=new ArrayList();		public void add(Circle c){		//if(historyCircle.size()>10){		//	historyCircle.remove(0);		//}		historyCircle.add(c);	}			//绘制方法,每次当控件被构建的时候调用,然后绘制控件	@Override	protected void onDraw(Canvas canvas) {		Random rd=new Random();		//首先准备画笔		Paint paint=new Paint();		//设置画笔属性				//设置画笔为绘制空心		paint.setStyle(Paint.Style.STROKE);		paint.setStrokeWidth(4);				//开始绘制		for(int i=0;i<historyCircle.size();i++){			Circle c= historyCircle.get(i);			paint.setColor(c.color);			//设置透明度			paint.setAlpha(c.alpha);			canvas.drawCircle(c.x, c.y, c.radius, paint);			c.radius=c.radius+5;			c.alpha=c.alpha-12;			if(c.radius>100){				historyCircle.remove(i);			}		}				//if(c!=null){		//	canvas.drawCircle(c.x, c.y, c.radius, paint);		//}		super.onDraw(canvas);	}}


              步骤三、编写MainActivity中的代码
             
package com.zjyb.demo3;import java.util.Random;import android.os.Bundle;import android.app.Activity;import android.graphics.Color;import android.view.Menu;import android.view.MotionEvent;import android.view.Window;import android.view.WindowManager;public class MainActivity extends Activity {	MyView view;	@Override	protected void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		//全屏,必须在setContentView之前调用		requestWindowFeature(Window.FEATURE_NO_TITLE);		getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);				view=new MyView(this);		setContentView(view);	}	//触摸方法,当屏幕被触摸的时候自动调用	@Override	public boolean onTouchEvent(MotionEvent event) {		// TODO Auto-generated method stub				//Touch表示触摸,有两种状态:Down和Up		//if(event.getAction()==MotionEvent.ACTION_UP){		Random rd=new Random();		Circle c=new Circle();		c.x=event.getX();		c.y=event.getY();		c.radius=10;//rd.nextInt(51)+10;		//c.color=Color.rgb(rd.nextInt(250), rd.nextInt(250), rd.nextInt(250));		view.add(c);		//view.historyCircle.add(c);		//view.c=c;		//摧毁,让view进行重绘		view.invalidate();		//}				return super.onTouchEvent(event);	}}



      源码下载请点这里:

  相关解决方案