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);
}


}



源码下载请点这里:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值