andriod中一些需要注意的问题
转载请注明出处http://blog.csdn.net/qq_33536981/article/details/78224379
楼主马上就转去学习C++做游戏了,android的学习就要暂时停止一段时间了,有一些我学习时遇到的问题,我再次分享出来希望可以帮助到大家
1:environment.getexternalstoragedirectory()
获取外部储存(包含SD卡)
2:自定义View时可以MeasureSpec获取View的测量模式和大小。
3:创建Canvas时 一般传入一个Bitmap对象,为了让所有绘制都在这个Bitmap上完成。
4:viewGroup会调用dispatchDraw方法来绘制子View
5:canvas.save();和canvas.restore();是两个相互匹配出现的,作用是用来保存画布的状态和取出保存的状态的
当我们对画布进行旋转,缩放,平移等操作的时候其实我们是想对特定的元素进行操作,比如图片,一个矩形等,但是当你用canvas的方法来进行这些操作的时候,其实是对整个画布进行了操作,那么之后在画布上的元素都会受到影响,所以我们在操作之前调用canvas.save()来保存画布当前的状态,当操作之后取出之前保存过的状态,这样就不会对其他的元素进行影响
6:postInvalidateDelayed可以用来刷新View
7:LinearGradient
LinearGradient shader = new LinearGradient(0, 0, endX, endY, new int[]{startColor, midleColor, endColor},new float[]{0 , 0.5f, 1.0f}, TileMode.MIRROR);
其中参数new int[]{startColor, midleColor, endColor}是参与渐变效果的颜色集合,
其中参数new float[]{0 , 0.5f, 1.0f}是定义每个颜色处于的渐变相对位置,
这个参数可以为null,如果为null表示所有的颜色按顺序均匀的分布
8:向量的叉乘可以判断点的顺逆时针
*用于做旋转判断
9:postInvalidate()和invalidate()
postIncalidate()可以在线程中调用。
invalidate()不可以在线程中调用。
10:getWritableDatabase() 和 getReadableDatabase()
getWritableDatabase()读的方式来打开数据库,要是没有写就会报错
getReadableDatabase()读和写的方式来打开数据库
11:contentProvider 由系统调用,必须有个无参构造器
12:ContentUris.withAppendeId(Uri,id) 返回id 的Uri
13:setContentView()作用
14:activity、window和view之间的关系
而当我们运行程序的时候,有一个setContentView()方法,Activity其实不是显示视图(直观上感觉是它),实际上Activity调用了PhoneWindow的setContentView()方法,然后加载视图,将视图放到这个Window上,而Activity其实构造的时候初始化的是Window(PhoneWindow),Activity其实是个控制单元,即可视的人机交互界面。
15: Message message = Message.obtain();
可以复用一些Message
16:时间转化
SimpleDateFormat formatter = new SimpleDateFormat ("yyyy年MM月dd日 HH:mm:ss");
Date curDate = new Date(System.currentTimeMillis());
String data = formatter.format(curDate);
由于楼主是很晚才开始做笔记了,所以就只有这些了,大家学习的时候一定要勤做笔记,不然一定时间就忘了!
android暂时就到这了,我要开始另一个坑了,希望大家学习有什么好的方法和想法都分享出来,这样我们才能更厉害!!!