=>1.SQLite

图形化界面来查看数据库,使用Sqliteman

>sudo apt-get install sqliteman

=>2.关于Activity间的跳转

>1.Intent it = getIntent();

>2.Intent it = new Intent();

说说第一种,假设注册了个单击跳转的事件,第一次点击是有反应的,现在退出整个应用程序,再次启动,此时的单击事件都失效,其他的监听事件都没问题,就属单击事件.

=>3.关于ListView 和 ExpandableListView这种列表控件

@Overridepublic void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {ExpandableListContextMenuInfo info = (ExpandableListContextMenuInfo) menuInfo;int type = ExpandableListView.getPackedPositionType(info.packedPosition);if (type == ExpandableListView.PACKED_POSITION_TYPE_GROUP) {String title = ((TextView) info.targetView.findViewById(R.id.groupName)).getText().toString();menu.setHeaderTitle(title);menu.add(0, MENU_GROUP_ADD, 0, "添加分组");menu.add(0, MENU_GROUP_DELETE, 0, "删除分组");menu.add(0, MENU_GROUP_MODIFY, 0, "重命名");menu.add(0, MENU_GROUP_ADDCONTACT, 0, "添加联系人");} else if (type == ExpandableListView.PACKED_POSITION_TYPE_CHILD) {String title = ((TextView) info.targetView.findViewById(R.id.chats_view_name)).getText().toString();menu.setHeaderTitle(title);menu.add(0, MENU_CONTACTS_DELETE, 0, "删除联系人");menu.add(0, MENU_CONTACTS_MODIFY, 0, "编辑联系人");menu.add(0, MENU_CONTACTS_MOVE, 0, "移动联系人到...");}}@Overridepublic boolean onContextItemSelected(MenuItem item) {ExpandableListContextMenuInfo menuInfo = (ExpandableListContextMenuInfo) item.getMenuInfo();int type = ExpandableListView.getPackedPositionType(menuInfo.packedPosition);if (type == ExpandableListView.PACKED_POSITION_TYPE_GROUP) {String groupName = ((TextView) menuInfo.targetView.findViewById(R.id.groupName)).getText().toString();Log.i(TAG, groupName);switch (item.getItemId()) {case MENU_GROUP_ADD:break;case MENU_GROUP_DELETE:break;case MENU_GROUP_MODIFY:break;case MENU_GROUP_ADDCONTACT:break;}} else if (type == ExpandableListView.PACKED_POSITION_TYPE_CHILD) {String childName = ((TextView) menuInfo.targetView.findViewById(R.id.chats_view_name)).getText().toString();Log.i(TAG, childName);switch (item.getItemId()) {case MENU_CONTACTS_DELETE:break;case MENU_CONTACTS_MODIFY:break;case MENU_CONTACTS_MOVE:break;}}return true;}

如果需要给group或者child 加上个长按事件

这样写了,没反应,需要将实列注册给监听器

ExpandableListView mElv = (ExpandableListView) findViewById(android.R.id.list);registerForContextMenu(mElv); 

另外需要提到一点的是,我在项目里注册了长按事件,同时group下的child也有个onClick()事件,这时候,onClick()事件无效

需要给child增加单击事件

mElv.setOnChildClickListener(mChildClickListener);// 注册group下的item的点击事件
OnChildClickListener mChildClickListener = new OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView parent, View v,int groupPosition, int childPosition, long id) {
// TODO Auto-generated method stub
Intent intent = new Intent();
intent.setClass(Main.this, ChatActivity.class);
startActivity(intent);
return false;
}
};

> 今天发现 想要将列表控件中间的分割符去掉,可以通过android:divider="@null"来设置.

=>4.让控件显示在底部(不是界面上的底部),也就是从底部开始显示,可以采用android:layout_gravity="bottom",该控件不能放在相对布局里,否则没效果

=>5.想做出个跟CSS里的Float效果,可以采用RelativeLayout的嵌套,在子RelativeLayout里设置android:layout_alignParentRight="true"等一系列属性.

=>6.ListView中如何使用Button,让onClick和onItemClick事件共存,可以在布局文件里,将这个Button添加个android:focusable="false"属性

=>7.EditText控件,让光标停在字符最後

EditText inputField = new EditText(this);Editable eText = inputField.getText();int position = eText.length();Selection.setSelection(eText, position);

=>8.让控件均匀分布,整齐的排列

<LinearLayout android:id="@+id/chat_bottom"android:layout_width="fill_parent" android:layout_height="50dip"android:orientation="horizontal" android:visibility="gone"><RelativeLayout android:layout_width="fill_parent"android:layout_height="wrap_content" android:layout_weight="1.0"android:layout_gravity="center_vertical"><Button android:id="@+id/btn_chat_history"android:layout_width="wrap_content" android:layout_height="wrap_content"android:background="@drawable/chat_history_button"android:layout_centerInParent="true" /></RelativeLayout><RelativeLayout android:layout_width="fill_parent"android:layout_height="wrap_content" android:layout_weight="1.0"android:layout_gravity="center_vertical"><Button android:id="@+id/button2" android:layout_width="wrap_content"android:layout_height="wrap_content" android:background="@drawable/widget_qq"android:layout_centerInParent="true" /></RelativeLayout><RelativeLayout android:layout_width="fill_parent"android:layout_height="wrap_content" android:layout_weight="1.0"android:layout_gravity="center_vertical"><Button android:id="@+id/back_chats_view"android:layout_width="wrap_content" android:layout_height="wrap_content"android:background="@drawable/back_btn"android:layout_centerInParent="true" /></RelativeLayout></LinearLayout>

=>9.有时候发现你界面上有个EditText控件,真机上进入这个界面,会获得焦点,然后弹出一个软键盘出来,可以做如下处理,将焦点给转移.

<!-- 使EditText的焦点移到linearlayout上,同时保证EditText还可以获得焦点 --><LinearLayout android:focusable="true"android:focusableInTouchMode="true" android:layout_height="0px"android:layout_width="0px"></LinearLayout>

=>10.控制软件盘的显示与隐藏

/*** 控制软键盘的显示与隐藏*/private void opSoftInput(View view, boolean hasFocus){if(hasFocus){((InputMethodManager)getSystemService(INPUT_METHOD_SERVICE)).showSoftInput(view, 0);} else { ((InputMethodManager)getSystemService(INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); }}

=>11.上次写了篇关于TextView里解析包含图片的博客,这次去弄了下EditText中,点击表情,将表情图片添加到EditText (类似QQ表情的发送吧)

呵呵,中间走了点弯路,开始是将EditText中的内容拿去解析,还用了正则去匹配,结果失败,

SpannableString类的setSpan(Object what, int start, int end, int flags)

我采用map保存了表情,

看下当时写的重写的EditText的setText()方法

@Overridepublic void setText(CharSequence text, BufferType type) {// TODO Auto-generated method stubinitFaceMap();// 需要处理的文本SpannableString spannable = new SpannableString(text.toString());if (text != null && faceMap != null) {// 对表情符以img标记进行修饰,改用drawable显示出来Set<String> keys = faceMap.keySet();for (String key : keys) {if (text.toString().contains(key)) {Drawable drawable = getResources().getDrawable(faceMap.get(key)); drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());//要让图片替代指定的文字就要用ImageSpanImageSpan span = new ImageSpan(drawable, ImageSpan.ALIGN_BASELINE);   int start = text.toString().indexOf(key);spannable.setSpan(span, start, start + key.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);}}}super.setText(spannable, type);}

这样写,如果有输入相同的表情,则只有第一个显示正常,后续的都是字符,因为我只遍历了一遍map,而且是替换了一遍.

下面是简单方法(需要在布局文件里给每个表情按钮添加一个tag属性,展示的是表情,实质内容还是tag的文本,方便接收方的解析)

/** 聊天表情图片监听器 */private OnClickListener faceImageButtonListener = new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stub  ImageButton imageButton = (ImageButton) v;String emotionTag = imageButton.getTag().toString();int cursor = content.getSelectionEnd();content.getText().insert(cursor, emotionTag);SpannableString spannable = new SpannableString(content.getText());Drawable draw = imageButton.getDrawable();ImageSpan span = new ImageSpan(draw, ImageSpan.ALIGN_BASELINE);// 下面flags参数换成Spannable.SPAN_INCLUSIVE_EXCLUSIVE,会导致添加了表情后,无法删除表情,也无法输入字符spannable.setSpan(span, cursor, cursor + emotionTag.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);content.setText(spannable);Editable eText = content.getText(); Selection.setSelection(eText, content.getText().length());// 控制光标显示在字符最后}};

最后贴上效果图

=>12.activity A startActivityForResult启动的B,如果A设置了运行模式android:launchMode="singleInstance"之类的,会导致启动B前就调用onActivityResult方法。

=>13.命令操作sdcard

-- 进入sdcard目录
>cd ~/android-sdk-linux/platform-tools
>./adb shell
>ls
>cd mnt
>cd sdcard

-- 安装apk
>cd ~/android-sdk-linux/platform-tools
>./adb install ~/Downloads/cdjm.autoquery.apk

--从sdcard下拉取文件
>./adb pull sdcard/odk/metadata/instances.db

--从PC端copy文件到sdcard下
>./adb push ~/Desktop/xxx.db /sdcard/xxx.db

=>14.apktool

http://code.google.com/p/android-apktool/

Linux:
Download apktool-install-linux-* file
Download apktool-* file
Unpack both to /usr/local/bin directory (you must have root permissions)

> ll /usr/local/bin
> chmod a+w /usr/local/bin
> apktool d -f zhangshangrenbao.apk /home/sushuo/Desktop/a

android整理的一些零散笔记相关推荐

  1. Android群英传神兵利器读书笔记——第三章:Android Studio奇技淫巧

    Android群英传神兵利器读书笔记--第三章:Android Studio奇技淫巧 这篇文章篇幅较长,可以使用版权声明下面的目录,找到感兴趣的进行阅读 目录 3.1 Android Studio使用 ...

  2. 《Android 开发艺术探索》笔记2--IPC机制

    <Android 开发艺术探索>笔记2--IPC机制 思维导图 Android IPC简介 Android中的多进程的模式 IPC基础概念 Serializable接口 Parcelabl ...

  3. 家庭财务管理系统_我31岁,30天整理出这些财务笔记干货,从宝妈成功逆袭成为会计...

    [我31岁,30天整理出这些财务笔记干货,从宝妈成功逆袭成为会计] 今天和大家分享一个真实案例.内容来自一个粉丝朋友. 她叫小莉,今年大学刚毕业,但是她的爸妈在她上高三的时候已经离婚了. 可能更多人印 ...

  4. 一个PHP使用重新整理数组的小笔记

    一个PHP使用重新整理数组的小笔记 今天写PHP的时候,因为写好的一个库接受的一个数组参数中,第一个元素不符合那个函数的要求,所以要unset掉.于是我unset(0);但是这个操作之后发现数组中的0 ...

  5. 《Android群英传》读书笔记---10.2(终篇)

    <Android群英传>读书笔记-10.2 标签(): android中级 读书笔记 Activity过渡动画 曾经的 Android在Activity之间进行跳转的时候,只是非常生硬的切 ...

  6. 《思考致富》的零散笔记

    这是阅读<思考致富>时的一些零散笔记,按章节排序. 第二章 欲望:成熟一切的起点 [印象最深刻的部分] 欲望转换为财富的6个步骤: 1)在头脑里确定你渴望得到的准确金钱数量. 2)确定为了 ...

  7. Android移动应用开发教程笔记①

    本文为第一篇,主要为Android的简介和Android studio的安装以及第一个安卓程序"hello world"的创建! 本文是对B站教程 动脑学院 Android教程 学 ...

  8. 《android开发艺术探索》笔记之Bitmap的加载和Cache

    <Android开发艺术探索>笔记之Bitmap的加载和Cache<一> 我放暑假前,就在图书馆借了一本<Android开发艺术探索>,这也是我看到很多人推荐的.之 ...

  9. Android(java)学习笔记176: 远程服务的应用场景(移动支付案例)

    一. 移动支付:       用户需要在移动终端提交账号.密码以及金额等数据 到 远端服务器.然后远端服务器匹配这些信息,进行逻辑判断,进而完成交易,返回交易成功或失败的信息给移动终端.用户提交账号. ...

最新文章

  1. yii mysql 事务处理_Yii2中事务的使用实例代码详解
  2. 跌宕中,特斯拉拿下上海工厂,给蔚来们留下不到两年窗口期
  3. 库存系统难破题?京东到家来分享
  4. stm32IAP代码升级小结
  5. windows 2008初体验常见问题: 无线网络没有正确配置为使用IP协议 错误解决办法...
  6. 运行快捷指令无法连接服务器失败,快捷指令打不开怎么回事?iPhone快捷指令无法载入的解决办法...
  7. Leetcode--105. 从前序与中序遍历序列构造二叉树(Java)
  8. Android填坑系列:Android JSONObject 中对key-value为null的特殊处理
  9. WIndows10下 MySQL 5.7(社区版)安装
  10. html之div拖拽,html5拖拽
  11. 数据库设计软件-powerdesign,导出表结构为Word文档
  12. spider.php使用方法,phpspider爬虫框架的使用
  13. ctfshow 网络迷踪-来点福利
  14. 虚拟机配置文件vmx放置路径问题
  15. 内网漫游(lateral movement)的破解之道
  16. 大学生最好用搜题的APP,个人开发的,吊打一切搜题软件
  17. 使用clipboard.js实现复制内容至剪贴板
  18. dos攻击的工具——pentmenu
  19. 啥子是volatile
  20. 基于偏置比例导引的任意指定攻击角度控制导引律(matlab源代码+原理)

热门文章

  1. java炫酷龙卷风源码_Java-使用二叉树实现快速排序-遁地龙卷风
  2. 第0003 天:论团队分工、成长
  3. c++容器vector介绍
  4. git 21天打卡day10-创建昵称分支并切换
  5. wps计算机一级考试提纲,2017计算机一级考试大纲:WPS Office (汇总)
  6. 16年毕业,刚入行软件测试,就拿到这么多薪资......因为稳定的时刻学习
  7. 面试必问的 Linux 命令帮你整理好啦 (下)
  8. 在职测试多年整理了自己常用的Linux命令...
  9. 关于 Appium 各种版本的安装,都在这里
  10. 图像分类中数据增强的有效性