注意事项
来源:互联网 发布:md5算法可逆吗 编辑:程序博客网 时间:2024/04/24 02:31
1.先做出总体框架*后再细分代码实现
2. 查看系统所有空间的样式: E:\sdk1\adt-bundle-windows-x86-20131030\sdk\platforms\android-19\data\res\values---style :
找到文件修改放在工程中,覆盖系统的;模仿系统代码使用
继承父类:重写属性
<style name="widget_text" parent="@android:style/Widget.ProgressBar.Horizontal">
3. 生成方法返回的值, findViewById(R.id.listview);----------------------ctrl+2+L
4. 颜色的十六进制
5. 静态代码块:
一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目 启动的时候就初始化,在不创建对象的情况下,其他程序来调用的时候,需要使用静态方法,这种代码是被动执行的.静态方法在类加载的时候就已经加载可以用类名直接调用
比如main方法就必须是静态的这是程序入口
两者的区别就是:静态代码块是自动执行的;
静态方法是被调用的时候才执行的.
6. 大一点的数据存储到本地,一般用序列化(XML)
7. 生成get,set方法----右键?—Source—Generate Getters and Setters
有参构造函数:Source—Generate Constructor using Fields
无参构造函数: Generate Constructors from Superclass
8. 增强for循环------------for(Person person:personList)
9. int类型转换成string类型:如果在循环中或大量转换,不要用+"",会降低效率;应该用valueof();
10. ctrl+点击:查看类的源码:-----------------------导入源码—Attach Source---Android-18
11. ctrl+F :搜索关键字
12. Android not Responding(应用程序无响应)阻塞了主线程 ANR异常
13. 只有原始的线程(主线程, ui线程)才能修改view对象
14. 访问网络一般用子线程
15. 手机和模拟器默认为utf-8
16. Toast.makeText(MainActivity.this, state, 0).show();-----------------context
17. android导入jar包----------放进工作空间libs目录下------然后在工程中配路径-----BuildPath—Configure Build Path---Add External JARs
18. 下载时服务器一般返回的是206----------可以使用if(code/100==2)来判断
19. 动态清空Linearlayout中的布局,removeAllViews()
20. 进度条可以在子线程中修改,因为进度条已经封装了handler方法
21. 开启activity获得返回值
22. 配置Activity横屏,在配置文件中配置,android;screenOrientation
23. onBackPressed()-----------------------捕获返回键
24. 四大组件:a. activity b. content provider(内容提供者) c broadcast receiver(广播接收者)d. service(服务)
25. 找错误时,找我们代码所在的包名
26. private类只暴露某个方法,新建一个接口
27. 图片可以修改----------------------------位图bitmap
28. 同步代码:方法是顺序执行 异步代码:开新的线程执行代码
29. 计时器:Timer()---------------------39播放器的进度条
30. 把一个文件的Uri显示出来: Uri.fromFile(file)
31. 自定义旋转进度---------------------样式和主题模块中
32. 夜间模式: 定义两个主题
33. 版本控制各种安装文档-----见资料
34. 公司中版本控制一般写完一段提交一段
35. 创建工程时最好不要选择最大版本,防止以后新版本无法安装
36. 快速导包:ctrl+shift+o
37. Search Everything:速度最快的文件搜索软件
39. 工具类:StreamTools.java :把流转换成字符串
40. 工具包(拷贝到libs下): afinal_0.5_bin.jar :提供下载,断点下载
41. 查找: Ctrl+O
42. 判断是否为空:TextUtils.isEmpty(string)
43. 跳转后使用finish(),不会保存到回退栈
44. 系统源码:D:\安卓\adt-bundle-windows-x86-20131030\sdk\platforms\android-19
45. 控件中加入控件或图片等--------------android:drawable.......
46. 查看控件样式D:\安\adt-bundle-windows-x86-20131030\sdk\platforms\android-19\data\res\values\styles.ml
47. public void next(View view)
48. 其他控件实施点击事件,直接在属性中加android:clickable=”true” android:onClick=”next”
49. 查看官网API文档: Develop-----API Guides(api 引导):-----------直接查看例子
50. 自定义组合控件整体设置点击事件
51. 不是四大组件的需要加上Context上下文
52. 音频资源:res目录下创建raw文件夹
53. 数据库放在工程assets目录下
54. Intent i=new Intent(HomeActivity.this,AtoolsActivity.class);尽量使用这种方式
55. 把数据库拷贝到assets目录并创建包com.itheima.mobilesafe.db.dao包创建该类 file://android_aset/address.db这种无法访问
56. WebView还可以加载图片String str =file:///android_asset/icon.png; //把address.db拷贝到我们的/data/data/包名/files/address.db
57. 打开已有数据库和sql语句操作
String path="data/data/com.example.mobilesafe/files/address.db";SQLiteDatabase database=SQLiteDatabase.openDatabase(path, null, SQLiteDatabase.OPEN_READONLY);Cursor cursor = database.rawQuery("select location from data2 where id = (select outkey from data1 where id = ?)",new String[] { number.substring(0, 7) });
58. 文本改变的监听 addTextChangedListener(new TextWatcher(){})
59. 输入框抖动和震动效果
60. 导入工程后改变不同api,右键-----Properties for XXX
61. 搜索代码:Ctrl+H
62. 可以在服务中嵌套广播接收者
63. 广播接收者不光可以在清单文件中注册,还可以在代码中注册------------接收去电广播
64. 动态添加布局View view = View.inflate(this, R.layout.address_show, null);
65. 外部数据库放在asset目录下,再操作
66. 新建数据库放在db包中,操作数据库放在db.dao包中
67. Android测试类,放在一个独立的包中.test
(1)新建一个测试类,继承AndroidTestCase
(2)在配置文件中配置相关
68. 新建一个测试工程
69. 业务bean:放在一个独立的包下,.domain------------------------------类似人物类等
70. findViewById() -----遍历查找id------listview优化
71. 实时更新listview中的内容 ------手机卫士05
72. 使数据倒着显示,即新添加的数据在上面,倒着查数据库:select number,mode from blacknumber order by _id desc
73. 状态选择器: 按下改变状态
74. builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {}); 对话框
75. listview数据改变实时, adapter.notifyDataSetChanged(); 通知适配器数据改变了
76. 广播接收者如果在清单文件中配置,程序一旦加载就无法关闭。用代码注册则可以关闭(在服务中注册广播接收者)
77. xml是跨平台的,其他语言也可以解析
78. 在子线程中更新简单的ui,像吐司,可以用runOnUiThread(new Runnable(){public void run(){}}
79. 睡眠:直接用try{Thread.sleep(5000);}catch{}
80. 消耗时间的------放在子线程中
81. 可以直接在子线程中运行UI的特例
runOnUiThread(new Runnable(){public void run(){}}
82. listview的滚动事件
83. listview数据太多时使用分批显示,如果更多就使用分页显示
84. 在代码中设置的宽高值都是像素px,不能适配各种手机
85. 带checkbox的item点击事件,checkbox会抢走焦点,见博客
86. adapter.notifyDataSetChanged();-------------通知适配器数据改变了
87. 当集合在迭代的时候。不能修改集合的大小
88. 尽量使用9.path格式的图片,可以拉伸
89.
timer = new Timer();//初始化一个定时任务timerTask = new TimerTask() {@Overridepublic void run() {
90. 如果是在服务里面往activity界面跳的话。需要设置flag
91. 暴露接口给对方
A.
private OnToggleStateChangeListner listner;public void setOnToggleStateChangeListener(OnToggleStateChangeListner listner){this.listner = listner;}//暴露数据给用户public interface OnToggleStateChangeListner{void onToggleStateChange(ToggleState state);} //暴露state
B.
toggleButton.setOnToggleStateChangeListener(new OnToggleStateChangeListner() {@Overridepublic void onToggleStateChange(ToggleState state) {Toast.makeText(MainActivity.this, state==ToggleState.Open?"开启":"关闭", 0).show();}});
92. state==ToggleState.Open?"开启":"关闭"
93. 布局覆盖Res…Layout
94.
/** * 获取当前系统时间,并格式化 * @return */private String getCurrentTime(){SimpleDateFormat format = new SimpleDateFormat("yy-MM-dd HH:mm:ss");return format.format(new Date());}
95. setSelection(position);将对应位置的item放置到屏幕顶端
96. 展示性图片没必要用一个ImageView来封装
<TextView style="@style/MenuTabText" android:background="#33aa9900" android:drawableLeft="@drawable/tab_news"android:drawpadding="15dp" android:text="新闻"/>
97. 抽取样式
<style name="MenuTabText"> <item name="android:layout_width">match_parent</item> <item name="android:layout_height">wrap_content</item> <item name="android:textColor">#ffffff</item> <item name="android:gravity">center_vertical</item> <item name="android:drawablePadding">15dp</item> <item name="android:padding">15dp</item> <item name="android:textSize">22sp</item> </style>
98. 单个Activity去掉标题栏 requestWindowFeature(Window.FEATURE_NO_TITLE);
99. 无标题样式 android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
100. setBackgroundResource的参数为资源ID,比如说R.drawable.icon
101.
// 表示事件是否拦截, 返回false表示不拦截@Overridepublic boolean onInterceptTouchEvent(MotionEvent arg0) {return false;}/** * 重写onTouchEvent事件,什么都不用做 */@Overridepublic boolean onTouchEvent(MotionEvent arg0) {return false;}
102. 可以滑动的页面一般为ViewPager
103. 使用开源框架的代码是效果不一样 可能activity的样式不同,改变样式,如果背景为黑色,可以手动改变activity的背景
104. 查看系统样式,改变系统属性
105. android:drawable="@android:color/transparent" 透明颜色
106. button控件不要背景,设为透明
107.
// ViewPager跳转下一个页面@OnClick(R.id.btn_next)public void nextPage(View view) {int currentItem = mViewPager.getCurrentItem();mViewPager.setCurrentItem(++currentItem);}
108. ViewPager中请求父控件和祖宗控件不要拦截触摸事件
//事件分发,请求父控件及祖宗控件不要拦截事件public boolean dispatchTouchEvent(MotionEvent ev){ getParent().requestDisallowInterceptTouchEvent(true); return super.dispatchTouchEvent(ev);}
109.
<span style="font-size:14px;">ImageView image = new ImageView(mActivity); image.setScaleType(ScaleType.FIT_XY);// 基于控件大小填充图片</span>
110. ImageView: 使图片撑大成imageview的大小
Imageview写死大小
android:scaleType="fitXY"
111. android:cacheColorHint="#fff" 缓存时listview的颜色
112. 一个ListView可以加多个HeadView,最先添加的在最上面
113. 下拉刷新头部用LinearLayout,其他的可能会出问题
114. 改变进度条的背景图案
<ProgressBar android:id="@+id/pb_progress" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:indeterminateDrawable="@drawable/custom_progress" android:visibility="invisible" />
115. android:cacheColorHint="#fff" //点击item时的颜色
android:divider="@null" //去掉listview分割线
116. Android 文档镜像 http://wear.techbrood.com
117. <!-- 凡是以layout开头的属性 其实都是经过父容器批准才能生效 因为在listView 中 layout_height 无论写什么熟悉 都是包裹 内 容 -->
118. ListView
// setSelector 点击显示的颜色
// setCacheColorHint 拖拽的颜色
// setDivider 每个条目的间隔 的分割线
119. background会根据ImageView组件给定的长宽进行拉伸,而src就存放的是原图的大小,不会进行拉伸。src是图片内容(前 景),bg是背景,可以同时使用
120. 动手之前,分析界面,抽取共性 -------------先分析
121.
android:layout_height="0dp" android:layout_weight="1"
122. 用FramLayout填充,然后动态添加布局
123. 记得实例化: list=newArrayList<BasePager>();
124. ListView item点击效果android:listSelector="@android:color/transparent"
125. ListView去掉分割线:android:divider="@android:color/transparent"
126. 使按钮不能点击:android:enabled="false"
127. initView() & initData() 尽量分离,加载数据时会消耗资源,应在适当的位置调用
128. android:background="@android:color/transparent"
129. ViewPager事件分发
/** * 事件分发, 请求父控件及祖宗控件是否拦截事件 */@Overridepublic boolean dispatchTouchEvent(MotionEvent ev) {if (getCurrentItem() != 0) {getParent().requestDisallowInterceptTouchEvent(true);// 用getParent去请求,// 不拦截} else {// 如果是第一个页面,需要显示侧边栏, 请求父控件拦截getParent().requestDisallowInterceptTouchEvent(false);// 拦截}return super.dispatchTouchEvent(ev);}
130. listView滑动时出现黑色:android:cacheColorHint="#fff"
131. 睡一会SystemClock.sleep(2000); //不能在主线程中用
132. 请求服务器 在子线程中执行,但改变界面需要在主线程中执行,所以使用
runOnUiThreadnew Thread() {public void run() {SystemClock.sleep(2000);final LoadResult result = load();if (getActivity() != null) {getActivity().runOnUiThread(new Runnable() {@Overridepublic void run() {if (result != null) {state = result.getValue();showPage(); // 状态改变了,重新判断当前应该显示哪个界面}}});}};}.start();
133. 在子线程中改变界面
new Thread() {public void run() {SystemClock.sleep(2000);final LoadResult result = load();if (getActivity() != null) {getActivity().runOnUiThread(new Runnable() {@Overridepublic void run() {if (result != null) {state = result.getValue();showPage(); // 状态改变了,重新判断当前应该显示哪个界面}}});}};}.start();
134. 代码习惯,封装成方法
135. 布局老是在改变,用FramLayout代替,后期动态添加view
136. 点击listview某个item时,保持不变,状态选择器
<span style="font-size:14px;"><selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_enabled="true" android:color="#f00"/> <item android:color="@android:color/white"/></selector></span>
137. 定义第一个fragment时获取getActivity----对应的activity对象
并标记对应的fragment
transaction.replace(R.id.fl_left_menu, new LeftMenuFragment(),FRAGMENT_LEFT_MENU);// 用fragment替换framelayouttransaction.replace(R.id.fl_content, new ContentFragment(),FRAGMENT_CONTENT); //通过activity对象的传递,可以在不同fragment中传递数据,中枢纽带为该Activity //通过标记获得对应fragment // 获取主页面fragmentpublic ContentFragment getContentFragment() {FragmentManager fm = getSupportFragmentManager();ContentFragment fragment = (ContentFragment) fm.findFragmentByTag(FRAGMENT_CONTENT);return fragment;}
138.
/*** 获取当前系统时间,并格式化*@return*/private String getCurrentTime(){SimpleDateFormat format = newSimpleDateFormat("yy-MM-dd HH:mm:ss");return format.format(new Date());}
139. 枚举
/** 枚举*/public enum ToggleState{Open,Close} private ToggleState toggleState = ToggleState.Open;//开关的状态
140. 假如listview的item中有Button,ImageButton,CheckBox等会强制获取焦点的view
此时,listview的item无法获取焦点,从而无法被点击
解决方法:给item的根布局增加以下属性
android:descendantFocusability="blocksDescendants"
设置之后,Button获取焦点,item中其他控件也可以获取焦点
141. 权重为一
android:layout_width="0dp"android:layout_weight="1"
142. 动态创建一个Listview或其他,不用布局,常用于简单的使用
listView = new ListView(this);
143. 代码习惯
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);initView();initListener();
144. 手机本地地址:http://127.0.0.1
145. 解决工程部分类乱码方法,编码不一致 谷歌应用市场
146. 判断json文件是否过期
(1)MD5比对 加密后的文件与服务器发来的文件加密后对比
(2)在json文件第一行写一个过期时间,对比
147. 上下文context
public static Context getContext(){return BaseApplication.getApplication();}
148. 查看系统控件的样式 D:\安卓\adt-bundle-windows-x86-20131030\sdk\platforms\android- 19\data\res\values
149. ListView ----透明图片
// setSelector 点击显示的颜色
// setCacheColorHint 拖拽的颜色
// setDivider 每个条目的间隔 的分割线
150. Drawable drawable =getResources().getDrawable(R.drawable.ic_launcher);
160. UiUtils
161. 不能在子线程中改变UI
public void run() {UserProtocol protocol=new UserProtocol();final UserInfo load = protocol.load(0);Uiutils.runOnUiThread(new Runnable() {@Overridepublic void run() {setData(load); // 当调用该方法的时候 就会调用refreshView}});}
162. 在代码中设置字体大小为dp,指定单位
textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14);//设置字体大小14dp
163. mListView.setOverScrollMode(View.OVER_SCROLL_NEVER);//去掉拉倒最顶时的蓝边
164. mImage.getLayoutParams().height = newHeight;//改变控件的宽高
165. UiUtils获得单例的吐司--------------*****
public static Toast mToast;public static void showToast(Context mContext, String msg) {if (mToast == null) {mToast = Toast.makeText(mContext, "", Toast.LENGTH_SHORT);}mToast.setText(msg);mToast.show();}
166. 与jar包代码关联--------侧拉删除
1.提升自己
1. 有很好的`开源意识`,`开放平台`思想
2. Libraries for developersV3.39`:众多开源效果集合-->国外-->只是提供了地址
3. android开源项目汇总`:众多开源效果集合-->国人-->只是提供了地址
4. baseAnimation`:众多开源效果-->针对动画效果-->国人-->开源的.需要效果的时候.要自行去找对应的代码
5. http://www.23code.com/`-->开源项目集合网站
6. http://a.code4app.com/`-->开源项目集合网站
7. 一些demo的集合-->5000
8. 深度理解`,`广度知道`
2.快速开发型框架
1.6个值得推荐的Android开源框架简介:http://www.open-open.com/lib/view/open1404894803482.html
167.环境变量的配置:http://blog.sina.com.cn/s/blog_9d52aeaf01013npe.html
- 注意事项!
- 注意事项
- 注意事项
- 注意事项
- 注意事项
- 注意事项
- 注意事项
- 注意事项
- 注意事项
- 注意事项
- 注意事项
- 注意事项
- 注意事项
- 注意事项
- 【注意事项】
- 注意事项
- 注意事项
- 注意事项
- HTML5 网页存储 Web Storage
- Android 自定义View (三) 圆环交替 等待效果
- IOS 整体框架类图
- Delphi System.Sqr、System.Sqrt - 求一个数的平方与平方根
- OC_NSArray
- 注意事项
- 植王分享:养兰花的十大好处
- [Redmine] Centos5上安装Redmine3.0+nginx+thin部署
- Android 自定义View (四) 视频音量调控
- [Object-c]获取文件的大小 清除缓存
- 桥接模式
- JSPatch – 动态更新iOS APP
- Node.js 的 http 模块
- 字符设备初始化流程