android移植笔记(第一个版本)

0. 不同包中activity的跳转总是不能生成R.java文件,是因为在子包中需要导入的是主包的R文件,而不是android.R;  或者,在R不能解析时,将import android.R去掉 
1.
imageView的matrix属性  使对折以后的图 还是停留在左上角  而不是居中
2.注意imageButton控件的获取  也需要用imageButton对象  这边设置的几个对折之类的按钮全都是imageButton  一开始用Button对象获取  一直无法进入scrawlpage页面
3. 撇对折时 应该是i+j<=bmp.width-1而不是i+j<bmp.width
4. 出现  “save can not be completed……GBK……” 好像是编码的问题 然后 对新加入的段逐段剪切 找到出错区域 重新再写一遍就对了~~
5. 29号实现控件的拖动了,主要是这片文章 http://blog.csdn.net/aomandeshangxiao/article/details/7415618
需要注意的几点:  activity 的声明需要加
implements  OnTouchListener   然后像 ImageView和TextView这些控件,要想实现拖动,要在xml文件中设置它的clickable为true    
多指触摸放大:根据两指间距离的变化来计算放大倍数
计算空间的left,right,top,bottom参数的各个具体值,然后传到v.layout的参数里设置控件的位置    多指放大的另外一种途径是根据其scaletype的matrix属性,对matrix做各种相应变化~~~
6.cavas在bitmap上绘制path
7.toast每次最后加.show(),擦  
8.移植的难点30号实现剪裁:实现bitmap上的path内部区域置为白色,之前考虑的有两种方案:
1)要用clippath方法,但是这个保留的区域是path内部,跟我们的剪纸是相反的
2)通过CFS(一个递归的方法,每次找相同颜色的相邻点)探测闭合区域,将path内的闭合区域探测出来置为白色,但是这个方法运行速度太慢
  最终通过这个方法http://tw.myblog.yahoo.com/jw!VC_G8MyHBxtRhlvgTUozAPg-/article?mid=573  
主要通过path.computeBounds将边界上的点放到一个rectF对象中  然后通过Region的setpath方法将内部区域记录下来  然后通过re.contains函数判断点是不是在区域内  如果在区域内  那么把这个点置为白色
9.清除触屏轨迹:将这次触屏的path从canvas上去除~~   只要将paint的颜色置为纸张颜色  然后在up事件里再将path重绘一遍就可以了~
10.展开逻辑:在每次触屏完毕事件中,记录这次触屏的闭合区域,根据折叠的逆序,对将区域逐次做轴对称  java的LinkedList跟C#的List差不多~~
11.由于每次的作品需要让用户来选择是否保存以使其可以在“arts show”模块里欣赏到,这样的话就涉及到了 数据的存储:http://www.cnblogs.com/hanyonglu/archive/2012/03/01/2374894.html   (在wp里面是用这个函数Extensions.SaveJpeg将图片放到独立存储里)
1) sharedPreferences 常用来存储一些配置信息如窗口状态  只能存储基本类型数据:int string boolean float long  不能条件查询
    实现步骤:通过context获取SharedPreferences对象  利用edit()方法获取Editor对象  通过Editor对象存储key-value键值对数据   commit()方  
                      法提交数据
2) 文件存储:可以存储文本、图片、音频等   windows->view->other->android->file explorer可以看到sharedpreference生成的.xml文件盒这个
                      文件存储的文件
3) SQLite数据库:http://blog.csdn.net/liuhe688/article/details/6715983 
12. 单例模式:需要在两个页面间传递Bitmap  可以定义一个全局类,然后定义静态的方法或变量来保存全局要用到的变量
      因为Bitmap数据类型 不可序列化,不能用消息机制(Intent--bundle)来传递    
用bundle传递代码: 
  1.  Intent intent = new Intent();  
  2.         intent.setClass(TestBundle.this, Target.class);  
  3.         Bundle mBundle = new Bundle();  
  4.         mBundle.putString("Data""ray'blog");//压入数据  
  5.         intent.putExtras(mBundle);  
  6.         startActivity(intent); 
在接收的类里:
  1.  Bundle bundle = getIntent().getExtras();    
  2.         String data=bundle.getString("Data");//读出数据  
13. getX()是表示Widget相对于自身左上角的x坐标
而getRawX()是表示相对于屏幕左上角的x坐标值(注意:这个屏幕左上角是手机屏幕左上角,不管activity是否有titleBar或是否全屏幕),getY(),getRawY()一样的道理
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值