安卓开发
NicolaAndMartin
这个作者很懒,什么都没留下…
展开
-
Android适配底部返回键等虚拟键盘的完美解决方案
这个问题来来回回困扰了我很久,一直没能妥善解决。场景1:华为手机遮挡了屏幕底部。场景2:进入应用时,虚拟键自动缩回,留下空白区域。需求:需要安卓能自适应底部虚拟按键,用户隐藏虚拟按键时应用要占满整个屏幕,当用户启用虚拟键时,应用能往上收缩,等于是被底部虚拟按键顶上来。需求很简单,实现起来却困难重重。完美解决方案:解释一下下面的代码,就是监听某个视图的变原创 2016-09-06 18:34:55 · 46630 阅读 · 11 评论 -
Volley详解
概念和应用场景:Volley的英文意思是齐射,并发的意思,见文知意,就是专门用来处理大量一起发出的网络请求的框架。当然Volley也有自己的缺点,就是不适合用来做上传下载的网络请求。至于为啥,我也不知道。 第一步.创建一个Volley网络请求。 因为要处理多个同时发生的网络请求,为了方便控制这些请求的查找和取消操作。我们需要先创建一个Volley队列,然后再往这个队列里add请求,请求就能自己执原创 2015-12-14 14:14:56 · 430 阅读 · 0 评论 -
自定义属性
当我们需要实现一些特定的布局显示的时候,我们需要自定义一个控件。自定义控件一般都是继承某种View,然后在里面实现onMesure方法和onLayout方法。 当我们使用自定义控件的时候,我们很希望这个控件能像安卓内部的其它控件一样可以通过在布局文件中写好属性,就能控制着个控件,例如android:layout_width="match_parent"这样这个控件的宽度就会和它的父View一样大小原创 2015-11-03 13:18:18 · 384 阅读 · 0 评论 -
高效的加载图片2.通过子线程(AsyncTask)加载图片
上一篇我们说到如何以较小的内存,打开较大的图片中使用了 BitmapFactory.decodeResource(res, resId, options);我们再主线程中执行了该方法,测试显示没有任何问题。我们的图片资源是来自本地的文件,可是,如果我们的图片来自sd卡甚至是来自网络的资源,再在UI线程中使用该方法,那么是很容易引起线程阻塞,导致ANR异常的(Application Not Resp原创 2015-10-10 13:40:45 · 827 阅读 · 0 评论 -
ERROR: In <declare-styleable> MenuView, unable to find attribute android:preserveIconSpacing
ERROR: In MenuView, unable to find attribute android:preserveIconSpacing 分类: 安卓eclispe开发2015-07-06 17:57 561人阅读 评论(0) 收藏 举报 eclipse sdk从低版本切换到高版本sdk的时候 v7包会包这个错ERROR: In MenuView, unable to f转载 2015-09-24 14:53:02 · 583 阅读 · 0 评论 -
Activity的跳转方式:1.intent.addFlags(),2.四种launchMode
一、Activity和Task(栈)的关系 Task就像一个容器,而Activity就相当与填充这个容器的东西,第一个东西 (Activity)则会处于最下面,最后添加的东西(Activity)则会在最低端。从Task中取出东西(Activity)则是从最顶端取出,也 就是说最先取出的是最后添加的东西(Activity),一次类推,最后取出的是第一次添加的Activity,而Activity在原创 2015-08-03 15:06:33 · 2177 阅读 · 0 评论 -
Android Service 服务(三)—— bindService与remoteService
12月12日北京OSC源创会 —— 开源技术的年终盛典 » 一、bindService简介bindService是绑定Service服务,执行service服务中的逻辑流程。service通过Context.startService()方法开始,通过Context.stopService()方法停止;也可以通过Service.stopSelf()方法或者Ser转载 2015-11-13 16:57:35 · 444 阅读 · 0 评论 -
ActionBarSherlock使用教程(转)
转自:http://www.chenwg.com/android/actionbarsherlock%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B.html Android3.0开始就提供了ActionBar,这让Android的用户体验强了好多,但是这个ActionBar在Android3.0以下是不支持的,谷歌也没推出什么解决方案,不过呢,没有什么是实现不了的,有gi转载 2015-10-27 14:34:01 · 707 阅读 · 0 评论 -
高效的加载图片1.缩放大容量的Bitmap
我们通过眼睛来观察世界,眼睛通过光的反射,折射将世间的万物映射到我们的眼睛里。至于是在眼睛里生成图片传递给大脑,还是眼睛将映射得来的信息传递给大脑,然后大脑再生成图片,我们就不深究了。总之我们通过这些图片,了解了世界。图片何其重要,几乎每一个app都需要加载图片,然而并不是每一个app都很好的加载了图片。图片是什么,我们先说一下图片的属性:形状,大小,颜色。这一节里我们讨论的是图片最简单的属性原创 2015-10-10 13:08:38 · 394 阅读 · 0 评论 -
向ContentProvider中添加媒体文件
先说一下为何要将媒体文件添加到ContentProvider中,不是将如视频,MP3这样的文件通过输入输出流写入到手机的外部存储器中就表示保存好了数据了吗?确实,这样保存了,并且我们也能通过文件管理器来找到这些视频音频了。可是,我们想要使用这些媒体文件必须要知道这些文件的保存路径,而其它应用程序是不会知道你保存的路径的。你只有把这些媒体文件的内容添加到系统自带的一个媒体的内容提供者中,其他应用程序才原创 2015-10-09 10:35:52 · 1119 阅读 · 1 评论 -
关于意见反馈
每个app都会带有意见反馈,得到用户的反馈并得到改善是一件很重要的事情,一个成功的产品肯定是让用户满意的产品。 然而获取app意见反馈我们应该尽可能的获取用户在使用app时的信息,这个信息包括用户使用的手机的版本,用户的地址,运行的设备,使用的语言。这些信息可以帮助我们更好的理解用户的反馈,以便对症下药。 当然,还有一点需要注意,在发送这些消息时,必须确保用户知道的情况下发送这些消息。原创 2015-10-08 17:12:37 · 597 阅读 · 0 评论 -
同时发起多个intent
做设置头像时有这么一种需求,当点击一个按钮时,需要让用户选择是拍照获取照片,还是在图库中选择获取照片。要满足上述需求,有两种解决方案,一种是创建一个选择dialog,这个会比较保险,可以自己定义dialog的样式,也可以很好的控制dialog里面的内容。但是会比较麻烦一点。具体代码如下。 /** * 显示修改头像的对话框 */ private void getPh原创 2015-10-08 16:20:00 · 1729 阅读 · 0 评论 -
自定义控件的实现
如何自定义一个控件呢。现在我们有这么一个需求需要实现三个view叠在一起,你大概会说很简单,使用RelativeLayout,设置他们的相对位置就可以了。确实,这样可以实现,但却不够优雅。如果这个控件是一直都这样不需要改变,并且只在一个地方使用,无疑使用RelativeLayout是最方便省事的。然而,现在需求希望能够动态的改变每个view离上个view的相对位置,并且这个控件在多个地方都需要使用到原创 2015-12-17 16:28:55 · 431 阅读 · 0 评论 -
Android Studio常用快捷键、Android Studio快捷键大全
转载自:http://blog.sina.com.cn/s/blog_9ac333de0102vsxf.html Alt+回车 导入包,自动修正Crtl+X 剪贴 删除本行 ,之前用Eclipse Ctrl+D 就是删除,在AndroidStudio 中是复制本行到下一行Ctrl+N 查找类Ctrl+Shift+N 查找文件Ctrl+Alt+L 格式化代码Ctrl+Alt+O 优化导入的类和包Al转载 2016-04-13 17:45:03 · 420 阅读 · 0 评论 -
Android 截取View,获取View的Bitmap的方法
需求用户在一个Layout中编辑文字和图片。当用户点击保存按钮时,需要将layout里的所有view以一张图片的形式保存并显示。这篇文章主要说的是如何获取View的Bitmap。bitmap的保存和显示不在此文讨论。方案一:使用系统API优点:简单,不易崩溃缺点:有可能得到null的bitmap。(原因是设备不同,显示的View也会不同,如果设置固定大小的View,当用户设备最大能承载的s原创 2017-01-11 12:00:48 · 11062 阅读 · 1 评论 -
Android使用Monkey的自动化测试
执行条件:一部Android手机,一台电脑,一根USB。adb shell手机连上电脑 上面是按照达成由易到难排列的。 第一个不用废话。 第二个我是在windows系统下打开adb shell的。 打开方式是 cmd 进入小黑框(这个是windows shell )cd 到 SDK的platform-tools目录下(c盘要到d盘,直接输入命令 D:)//到platform-to原创 2016-05-11 17:02:54 · 643 阅读 · 0 评论 -
githup中shell命令的常见错误
将本地的代码与网上创建的仓库(以下统称远程仓库)建立连接报错当执行git remote add origin 远程仓库的hhtp地址出现如下错误时 提示出错信息:fatal: remote origin already exists. 解决办法如下: 1、先输入git remote rm origin 2、再输入$ git remote add 远程仓库的hhtp地原创 2015-12-15 23:30:50 · 641 阅读 · 0 评论 -
使用Gson将字符窜转化成Json格式
Gson gson = new Gson(); String json = gson.toJson(req);原创 2015-06-27 17:11:49 · 378 阅读 · 0 评论 -
在屏幕上添加一个可移动,可点击的悬浮按钮。
需求: 1.随手指移动。 2.可触发点击事件实现步骤在Android Studio的Gradle中导入CircularFloatingActionMenudependencies { compile 'com.oguzdev:CircularFloatingActionMenu:1.0.2'}git地址:添加悬浮按钮-在oncreate方法里调用下面的FloatingActionB原创 2016-11-30 16:16:47 · 6121 阅读 · 1 评论 -
EventBus的使用
分享者:蔡永强 分享日期:2016年10月24号EventBus概要-EventBus是针对Android在发布和订阅消息的优化解决方案。为什么要使用EventBus简化了组件之间的通信使你的代码更加简洁小而美(快,且只有50k左右)EventBus简单使用将EventBus引进你的项目中Gradle: compile 'org.greenrobot:eventbus:3.0.0原创 2016-10-24 11:30:31 · 360 阅读 · 0 评论 -
如何让Android应用一直活着,确保占用系统资源。
首先要说的是这是一个比较流氓的办法,会被手机管家等软件检测到有一个后台服务在跑,会提示用户去清除。除非必要,不然还是考虑其他方法吧。应用场景: 没有退出App而是回到home或是进入到其它App后,系统自动回收了我App的资源,导致我再次回到我的App中时发现必须重新启动,而需求是不想每次都重新启动,需要能立即恢复到原来的状态。解决方案1:数据持久化,每次退出时保护现场,将需要的数据保存到本地,等原创 2016-09-06 18:01:08 · 2018 阅读 · 0 评论 -
Android中Toolbar的基本使用
Android的标题栏是很重要的一个模块,App是否易用很大一部分要看标题栏。写这个博客的时候刚发现谷歌推出了一种新的标题栏实现方式。 它相对于以前的ActionBar来说,最大的变化是开发者可以在标题栏上增加自定义的view。同时在最左端添加了一个导航按钮。将Activity的默认标题栏禁用。 这个实现有两中方式,代码控制和xml文件里配置 代码 如果是继承 AppCompatActi原创 2016-05-27 11:45:10 · 1085 阅读 · 0 评论 -
Monkey的基本命令
monkey命令能模拟点击屏幕,达到压力测试的目的。通过其参数可以控制具体如何测试。参数名 -p功能 参数-p用于约束限制,用此参数指定一个或多个包(Package,即App)。指定包之后,Monkey将只允许系统启动指定的APP。如果不指定包,Monkey将允许系统启动设备中的所有APP。参数名 -v功能 用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别:level0-2转载 2016-05-12 14:04:15 · 811 阅读 · 0 评论 -
Android代码混淆
1.编辑proguard-project.txt文件,可以确定哪些代码需要混淆,哪些代码不需要混淆。 a. 把所有你的jar包都申明进来,例如: -libraryjars libs/apns_1.0.6.jar -libraryjars libs/armeabi/libBaiduMapSDK_v2_3_1.so -libraryjars libs/armeabi/liblocSDK4转载 2016-05-12 13:37:32 · 320 阅读 · 0 评论 -
RadioGroup,Android的单选框。
在安卓上,实现单选框。 先看一下需求:在用户注册页面需要填性别项,大家知道性别不是男的便是女的。(这里不考虑其它情况)这时候单选框就派上用场了,先看布局文件。<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" andro原创 2016-05-10 15:36:26 · 773 阅读 · 0 评论 -
自定义一个圆圈View
这篇博客的目的是如何开发一个继承自View的自定义控件。最后的效果是能够得到一个任何页面都能使用的圆圈控件。代码很简单,也很粗陋。但是高楼平地起。 先贴代码,可以先不看,看完后面的解释再看代码:package com.example.administrator.myfirstandroidstudioproject.customView;import android.content.Context原创 2016-04-14 16:37:42 · 484 阅读 · 0 评论 -
ViewPager onPageChangeListener总结
android ViewPager滑动事件讲解OnPageChangeListener这个接口需要实现三个方法:(onPageScrollStateChanged,onPageScrolled ,onPageSelected)onPageScrollStateChanged(int arg0) ,此方法是在状态改变的时候调用,其中arg0这个参数有三种状态(0,1,2)。arg0 ==1的时辰原创 2015-09-14 14:52:33 · 470 阅读 · 0 评论 -
极光推送,注册账户,集成SDK
1 极光推送概述 如上图所示,极光推送就是在服务器上发送一条通知让手机客户端能够接收到这条消息。开发者不用关心中间的JPush Cloud如何运行。只要懂得如何在JPush Web Portal 发送通知,并且如何修改程序代码让手机客户端能够接收通知就行了。发送通知很简单,所以开发者主要完成的就是将JPush集成到自己的应用程序里。 2 注册极光账号 1. 百度搜索“极光推送原创 2015-09-08 13:43:33 · 4154 阅读 · 0 评论 -
安卓操作栏,菜单栏的生成
1.在res/menu的路径下创建一个xml文件。名字就叫menu_list.xml吧。意思是菜单列表。当我们要添加菜单和去掉菜单时,要修改此文件。<menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/action_add" andro原创 2015-08-24 16:37:12 · 728 阅读 · 0 评论 -
Android对文件的读写
现在让我们总结一下Android对文件的读写操作。 不管文件是读是写都需要用到Context类。 1.文件的写: private void Saved() { try { OutputStream out = mContext.openFileOutput("file_name", Context.MODE_P原创 2015-08-24 17:35:01 · 674 阅读 · 0 评论 -
实现操作栏的回退功能
1.启用回退按钮 在oncreate方法里 if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.HONEYCOMB){ getActionBar().setDisplayHomeAsUpEnabled(true); }2.响应回退按钮 @Override public boolean onO原创 2015-08-24 17:12:07 · 1260 阅读 · 0 评论 -
安卓监听EditText
一.TextWatcher watcher = new TextWatcher()实例化TextWatcher ,会有三个函数,简单易懂。二.et.addTextChangedListener(watcher);添加监听器给EditText。这样,当et里的文本发生变化时,就会执行watcher 里对应的函数。原创 2015-06-24 09:18:03 · 541 阅读 · 0 评论 -
Android中Parcelable接口用法
.实现序列化的方法Android中实现序列化有两个选择:一是实现Serializable接口(是JavaSE本身就支持的),一是实现Parcelable接口(是Android特有功能,效率比实现Serializable接口高效,可用于Intent数据传递,也可以用于进程间通信(IPC))。实现Serializable接口非常简单,声明一下就可以了,而实现Parcelable接口稍微复杂一些,但效率更高,推荐用这种转载 2015-07-04 15:04:13 · 324 阅读 · 0 评论 -
Android中数据库的创建和使用
继承 SQLiteOpenHelper创建某个“数据库操作类”使用数据库操作类获取数据库并且进行相应的操作继承 SQLiteOpenHelperpublic class DatabaseHelper extends SQLiteOpenHelper { private Context mContext; //建表语句 private String CREATE_SVHI原创 2015-07-04 11:40:12 · 425 阅读 · 0 评论 -
Android之spinner控件的用法
控件布局 <Spinner android:id="@+id/Type_spinner" android:layout_width="100dp" android:layout_height="50dp" android:entries="@array/spingarr" />添加子项目原创 2015-07-02 17:23:12 · 823 阅读 · 0 评论 -
自定义AlertDialog的创建和使用
填充视图View v = myActivity.this.getLayoutInflater().inflate( R.layout.dialog_nickname, null);其中R.layout.dialog_nickname是已经写好的布局文件,想要显示什么就再这个布局文件中添加控件。 如果想要获得R.layout.dialog_nickname里的控件,原创 2015-07-08 10:48:27 · 455 阅读 · 0 评论 -
向Fragment传递数据
Fragment由Activity托管,当启动这个Activity并且想显示Fragment时,几乎都需要向Fragment传递一个或几个数据,而Fragment则根据传递过来的这几个参数显示不同的画面。下面就是介绍如何向Fragment传递数据。当不需要传递数据时Activity类里 FragmentManager fm=getSupportFragmentManager();原创 2015-06-27 15:38:05 · 614 阅读 · 0 评论 -
android EditText控制光标的位置
利用自定义键盘,需要手动删除编辑框中的文本时,会根据光标的位置来删除字符。那么,如何来控制光标呢,android为我们提供了哪些方法,来处理光标呢?这里提供几个自己写的方法,根据这些方法可以满足在光标任何位置删除字符的要求。// 往文本框中添加内容 public void addString(String sequence) { int index = getEditSele转载 2015-06-26 18:32:10 · 2332 阅读 · 0 评论 -
ListView与ListView里的Button焦点冲突
如果是自定义的ListView,而且恰好这个ListView里有Button,checkbox等可以点击的控件时。因为焦点冲突的问题,安卓默认里只能点击Button,不能点击ListView的Item项。这时候就需要在item的布局文件的根布局中添加descendantFocusability属性原创 2015-06-27 09:47:17 · 511 阅读 · 0 评论 -
Android显示和隐藏软键盘
在Android开发中,经常会有一个需求,做完某项操作后,隐藏键盘,也即让Android中的软键盘不显示。今天,和大家分享如何利用代码来实现对Android的软件盘的隐藏、显示的操作转载 2015-06-25 19:59:02 · 494 阅读 · 0 评论