2.多点击事件implements OnClickListener
private void initListener() {
iv_select.setOnClickListener(this);
}
public void onClick(View v) {
switch (v.getId()) {
case R.id.iv_select:
showNumberList();
break;
}
}
1.布局可以叠加在一起,RelativeLayout,也可以用FrameLayout
0. UI特效大全网站:http://www.23code.com/
0. 查看系统所有空间的样式: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">
1. 生成方法返回的值, findViewById(R.id.listview);----------------------ctrl+2+L
2. 都可以实现
3. 颜色的十六进制
4 .静态代码块:
一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序来调用的时候,需要使用静态方法,这种代码是被动执行的. 静态方法在类加载的时候 就已经加载 可以用类名直接调用
比如main方法就必须是静态的 这是程序入口
两者的区别就是:静态代码块是自动执行的;
静态方法是被调用的时候才执行的.
1. 大一点的数据存储到本地,一般用序列化(XML)
2. 生成get,set方法----右键?—Source—Generate Getters and Setters
有参构造函数:Source—Generate Constructor using Fields
无参构造函数: Generate Constructors fromSuperclass
3. 增强for循环------------for(Personperson:personList)
4. int类型转换成string类型:如果在循环中或大量转换,不要用,会降低效率;
应该用valueof();
5. ctrl+点击:查看类的源码:-----------------------导入源码—Attach Source---Android-18
6. ctrl+F :搜索关键字
7. Android not Responding(应用程序无响应) 阻塞了主线程 ANR异常
8. 只有原始的线程(主线程, ui线程)才能修改view对象.
9. 访问网络一般用子线程
10. 手机和模拟器默认为utf-8
11. Toast.makeText(MainActivity.this,state, 0).show();-----------------context
12. *******:android导入jar包----------放进工作空间libs目录下------然后在工程中配路径-----BuildPath—ConfigureBuild Path---Add External JARs
13. Activity里面就使用了LayoutInflater来载入界面,通过getSystemService(Context.LAYOUT_INFLATER_SERVICE)方法可以获得一个 LayoutInflater, 也可以通过LayoutInflaterinflater = getLayoutInflater();来获得.然后使用inflate方法来载入layout的xml,
14. 颜色16进制:--------------------------见资料中图片
15. 下载时服务器一般返回的是206----------可以使用if(code/100==2)来判断
22. 动态清空Linearlayout中的布局,removeAllViews()
23. 进度条可以在子线程中修改,因为进度条已经封装了handler方法
24. 开启activity获得返回值
25. 配置Activity横屏,在配置文件中配置,android;screenOrientation
26. onBackPressed()-----------------------捕获返回键
27.四大组件:a. activity b. content provider(内容提供者)
c broadcast receiver(广播接收者)
d. service(服务)
28.找错误时,找我们代码所在的包名
29.private类只暴露某个方法,新建一个接口
30 图片可以修改----------------------------位图bitmap
31. 同步代码:方法是顺序执行
异步代码:开新的线程执行代码
32. 计时器:Timer()---------------------39播放器的进度条
33. 把一个文件的Uri显示出来:Uri.fromFile(file)
34. 自定义旋转进度---------------------样式和主题模块中
35. 夜间模式:定义两个主题
36. 版本控制各种安装文档-----见资料
37. 公司中版本控制一般写完一段提交一段*******
38. 创建工程时最好不要选择最大版本,防止以后新版本无法安装
39. 快速导包:ctrl+shift+o
40. Search Everything:速度最快的文件搜索软件
41. 工具类:StreamTools.java :把流转换成字符串
42. 工具包(拷贝到libs下): afinal_0.5_bin.jar :提供下载,断点下载
43. 查找: Ctrl+O
44. 判断是否为空:TextUtils.isEmpty(string)
45. 跳转后使用finish(),不会保存到回退栈。
46. 系统源码:D:\安卓\adt-bundle-windows-x86-20131030\sdk\platforms\android-19
47. 控件中加入控件或图片等
android:drawable........
48. 查看控件样式D:\安\adt-bundle-windows-x86-20131030\sdk\platforms\android-19\data\res\values\styles.ml
49. public void next(View view)
50.其他控件实施点击事件,直接在属性中加android:clickable=”true” android:onClick=”next”
51. 查看API文档:Develop-----API Guides(api 引导):-----------直接查看例子
52. 自定义组合控件整体设置点击事件
53. 不是四大组件的需要加上Context上下文
54. 音频资源:res目录下创建raw文件夹
55. 数据库放在工程assets目录下
56. Intent i=newIntent(HomeActivity.this,AtoolsActivity.class);尽量使用这种方式
57. 把数据库拷贝到assets目录并创建包com.itheima.mobilesafe.db.dao 包创建该类
file:///android_aset/address.db 这种无法访问
知识回顾:
WebView还可以加载图片Stringstr = "file:///android_asset/icon.png";
//把address.db拷贝到我们的/data/data/包名/files/address.db
58.打开已有数据库和sql语句操作
Stringpath="data/data/com.example.mobilesafe/files/address.db";
SQLiteDatabasedatabase=SQLiteDatabase.openDatabase(path, null, SQLiteDatabase.OPEN_READONLY);
Cursor cursor = database
.rawQuery(
"selectlocation from data2 where id = (select outkey from data1 where id = ?)",
newString[] { number.substring(0, 7) });
59.文本改变的监听 addTextChangedListener(newTextWatcher(){})
60. 输入框抖动和震动效果
.61.导入工程后改变不同api,右键-----Propertiesfor XXX
62.搜索代码:Ctrl+H
63.可以在服务中嵌套广播接收者
65.广播接收者不光可以在清单文件中注册,还可以在代码中注册------------接收去电广播
66.动态添加布局View view = View.inflate(this, R.layout.address_show,null);
67. 外部数据库放在asset目录下,再操作
68. 新建数据库放在db包中,操作数据库放在db.dao包中
69. Android测试类,放在一个独立的包中.test
(1)新建一个测试类,继承AndroidTestCase
(2)在配置文件中配置相关
70.也可以新建一个测试工程
71.业务bean:放在一个独立的包下,.domain------------------------------类似人物类等
72.findViewById() -----遍历查找id------listview优化
73.实时更新listview中的内容 ------手机卫士05
74.使数据倒着显示,即新添加的数据在上面,倒着查数据库:select number,mode from blacknumber order by _id desc
75.状态选择器:按下改变状态
76. builder.setPositiveButton("确定", newDialogInterface.OnClickListener() {}); 对话框
77.listview数据改变实时, adapter.notifyDataSetChanged(); 通知适配器数据改变了
78.广播接收者如果在清单文件中配置,程序一旦加载就无法关闭。用代码注册则可以关闭(在服务中注册广播接收者)
79.xml是跨平台的,其他语言也可以解析
80.在子线程中更新简单的ui,像吐司,可以用runOnUiThread(newRunnable(){public void run(){}}
81.睡眠:直接用try{Thread.sleep(5000);}catch{}
82.消耗时间的------放在子线程中;
83.可以直接在子线程中运行UI的特例:
runOnUiThread(new Runnable(){
public void run(){
}
}
84.listview的滚动事件
85.listview数据太多时使用分批显示,如果更多就使用分页显示
86. 在代码中设置的宽高值都是像素px,不能适配各种手机
87.带checkbox的item点击事件,checkbox会抢走焦点,见博客
88. adapter.notifyDataSetChanged();-------------通知适配器数据改变了
89. 当集合在迭代的时候。不能修改集合的大小
90.尽量使用9.path格式的图片,可以拉伸
91. timer = new Timer();
//初始化一个定时任务
timerTask= new TimerTask() {
@Override
publicvoid run() {
92. 如果是在服务里面往activity界面跳的话。需要设置flag
93.代码习惯
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initView();
initListener();
94.动态创建一个Listview或其他,不用布局,常用于简单的使用
listView = new ListView(this);
95.权重为一
<span style="font-size:14px;">android:layout_width="0dp"
android:layout_weight="1"</span>
96..假如listview的item中有Button,ImageButton,CheckBox等会强制获取焦点的view
此时,listview的item无法获取焦点,从而无法被点击
解决方法:给item的根布局增加以下属性
android:descendantFocusability="blocksDescendants"
设置之后,Button获取焦点,item中其他控件也可以获取焦点
1. IDE:
Intelligent Development Environm的简称。即智能开发环境。是一种开发工具。常用的IDE有adt-bundles和Android studio。两个都需要配置jdk。
2. ADT:
Android Development tools的简称。即Android开发工具。ADT为Eclipse的插件。在Eclipse和SDK之间起了一个桥梁的作用。
3. SDK:
Soft Development Kit的简称。软件开发工具包。在Android中,它为开发者提供了库文件以及其它开发所用到的工具。
4. JDK:
Java的开发工具包。包括了Java运行环境、Java工具和Java基础类库。
5. NDK:
概念:
(1).NDK是一系列工具的集合。帮助开发者快速开发C/C++的动态库。
并能自动将so和Java应用一起打包成apk。这些工具对开发者的帮助是巨大的。
(2).NDK将是Android平台开发支持C开发的开端。
作用:
(1).代码的保护。由于Java层代码很容易被反编译,而C/C++库反编译难度很大。
(2).可以方便的使用现存的开源库。大部分现存的开源库都是用C/C++代码编写的。
(3).提高程序的执行效率。将要求高性能的应用逻辑使用C开发,从而提高应用程序的执行效率。
(4).便于移植。用C/C++写的库可以方便的在其他的嵌入式平台上再次使用。
Android中IDE、ADT、SDK、JDK、NDK的含义解释
1.底部为多个TextView,ToolBarUtil自动添加相应的选项--------xmpp即时聊天
2.动态修改textView里面的drawableTop属性
tv.setCompoundDrawablesWithIntrinsicBounds(0, iconArr[i], 0, 0);
3.代码中设置控件的布局
int width = 0;
int height = LinearLayout.LayoutParams.MATCH_PARENT;
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(width, height);
//设置weight属性
params.weight = 1;
container.addView(tv, params);
//保存textView到集合中
mTextViews.add(tv);
4.线程工具ThreadUtils
public class ThreadUtils {
/**
* 子线程执行task
*/
public static void runInThread(Runnable task) {
new Thread(task).start();
}
/**
* 创建一个主线程中handler
*/
public static Handler mHandler = new Handler();
/**
* UI线程执行task
*/
public static void runInUIThread(Runnable task) {
mHandler.post(task);
}
}
使用:
子线程:ThreadUtils.runInThread(new Runnable() {
@Override
public void run() {
}
})
主线程:
ThreadUtils.runInUIThread(new Runnable() {
@Override
public void run() {
5.控件边框颜色值和背景颜色值
<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 边框的颜色值 --><item>
<shape>
<solid android:color="#f34649" />
<corners android:radius="6dp" />
</shape>
</item>
<!-- 主体背景颜色值-->
<item android:bottom="1dp" android:right="1dp" android:top="1dp" android:left="1dp">
<shape>
<gradient android:startColor="#ffffff" android:centerColor="#ffffff"
android:endColor="#ffffff" android:type="linear" android:angle="90"
android:centerX="0.5" android:centerY="0.5" />
<padding android:left="2dp" android:top="2dp" android:right="2dp"
android:bottom="2dp" />
<corners android:radius="6dp" />
</shape>
</item>
</layer-list>
http://blog.csdn.net/brokge/article/details/9713041
6. 手势识别器 GestureDetector
7.自定义对话框 ------手机卫士01
8.创建快捷方式 -------手机卫士07
9.widget小控件-----------手机卫士08
10.大图轮播无限------------大图轮播
11. 监听动画结束--------项目1 智慧北京
12. SharePreferece 封装
13.Fragment 基类 -----项目1
14.防止ViewPager滑动-----项目1
15.ViewPager会默认预加载三个页面内,即执行三次(gerView),所以加载数据最好不放在getView中,否则会预加载下一个页面
16.应用某个功能,找到界面某个关键字,全局搜索Search--File Search
17.修改TabPageIndicator的代码 Ctrl+shift+t 查找具体类
18.判断是否为第一个页面,如果是就拦截-------------项目1
/**
* 事件分发, 请求父控件及祖宗控件是否拦截事件
*/
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (getCurrentItem() != 0) {
getParent().requestDisallowInterceptTouchEvent(true);// 用getParent去请求,
// 不拦截
} else {// 如果是第一个页面,需要显示侧边栏, 请求父控件拦截
getParent().requestDisallowInterceptTouchEvent(false);// 拦截
}
return super.dispatchTouchEvent(ev);
}
19. image.setScaleType()//指定图片是否填充ImageView
20.background会根据ImageView组件给定的长宽进行拉伸,而src就存放的是原图的大小,不会进行拉伸。src是图片内容(前景),bg是背景,可以同时使用。
21.listView滑动时出现黑色:android:cacheColorHint="#fff"
22.改变Progress的图片 : android:indeterminateDrawable="@drawable/custom_progress" -添加自己画的图-----项目1---25
23.自动轮播条 设置监听 ------------项目1
24.四种界面: 加载中, 加载错误,加载为空 ,加载成功 五种状态 根据服务器的数据 切换状态 ---------谷歌应用市场
25.线程池原理和具体实现-------------------谷歌应用市场2
26.透明图片----nothing-------------------谷歌应用市场2
27. 插值器 ---------------- ?
28.在工程中查找类名:ctrl+shift+T
环境变量的配置:http://blog.sina.com.cn/s/blog_9d52aeaf01013npe.html