1. 根据《疯狂Android讲义(第2版)》P127页---仿Android系统launcher界面, 我本来想做一个AllApp的应用分页效果Activity,每个显示的应用都可以点
进去,效果如
但是发现页面总是间隔性的有点击事件,
按照书上的写法在加自己的想法,我在oncreate里添加了mGridView.setOnItemClickListener(this);
//下一屏函数是这么写的
public void next(){
Log.v("调用next", " ");
//如果不是最后一屏,左划切换屏幕
if(screenNow < screenNum - 1)
screenNow++;
else
screenNow = 0;
((GridView)switcher.getNextView()).setAdapter(adpter);
switcher.setOutAnimation(this, R.anim.slide_out_left);
switcher.setInAnimation(this, R.anim.slide_in_right);
switcher.showNext();
}
问题在于:True if the listener has consumed the event, false otherwise.。加入你返回false表示你没有处理这个事件,那么你的相关处理代码会被忽略。而假如你处理一个右键的事件,然后全部返回true,那有会出问题,这时候假如按上下左,系统都不会给你处理了,它认为你已经处理过了。这时候就要在右键处理事件中return true,其他情况return false。
3. 使用由其他Activity传来的Context获取控件,因为其实Activity本质上也是Context,所以我们可以Activity activity = (Activity)context;
imageView = (ImageView)activity.findViewById(R.id.albumImage);用这种方式获取控件。
4. 获取ImageView中的图片资源:
imageView.setDrawingCacheEnabled(true);
Bitmap mSrc = imageView.getDrawingCache();
imageView.setDrawingCacheEnabled(false);
获取图像之前,一定要调用setDrawingCacheEnabled(true)方法,否则,无法从ImageView对象iv_photo中获取图像;
获取图像之后,一定要调用setDrawingCacheEnabled(false)方法,以清空画图缓冲区,否则,下一次从ImageView对象iv_photo中获取的图像,还是原来的图像。
如果设置的是背景,可使用getBackground,如果是src,可用getDrawable();
BitmapDrawable tmpBitmapDrawable = (BitmapDrawable)imageView.getBackground();
mSrc = tmpBitmapDrawable.getBitmap();
5. 读取文件谨防脏数据的出现
byte[] buffer2 = new byte[1024];
while( inputstream.read(buffer2) != -1){
fout.write(buffer2);
}
以这种写法读出来的数据很容易出现脏数据,因为write会把Buffer2的全部字节写入,而如果最后一次读取的内容不足整个数组长度,也就是1024,则write时会把这次部分和后面脏数据部分(上一次读出)一起写入。
6. 你把一个控件的Android id定义去掉,如果在其他地方,如相对布局中有其他组件引用了它,那它在R文件中还是会生成。