Welcome 微信登录

首页 / 移动开发 / Android

根据USER-AGENT判断手机类型并跳转到相应的app下载页面

根据USER-AGENT判断手机类型并跳转到相应的app下载页面

实现的原理,是检测浏览器的 USER-AGENT 这个header,然后根据正则表达式来确定客户端类型。如果都不匹配,Fallback回退策略是显示对应的页面,让用户自己选择。 适合采用二维码扫描方式下载APP:JSP版本的代码如下所示:其他服务端版本请百度搜索。<%@page import="java.util.regex.Matcher"%> <%@page import="java.util.regex.Pattern"%> ...
Android中实现为TextView添加多个可点击的文本

Android中实现为TextView添加多个可点击的文本

本文实例展示了Android中实现为TextView添加多个可点击的文本的方法。该功能在Android社交软件的制作中非常具有实用价值。分享给大家供大家参考。具体如下:很多时候我们在使用社交软件的过程中多多少少会为别人的帖子点赞,如下图所示:可以看到用户页面显示出来的只是点了赞的用户的名称,点击这些名称可以进入到该用户的主页。下面我们就来实现类似的效果。具体代码如下:@Override protected void onCreate(Bundle save...
Android程序设计之AIDL实例详解

Android程序设计之AIDL实例详解

通常来说,AIDL这项技术在我们的应用开发过程中并不是很常用,虽然新浪微博提供了SSO登录,但是其原理就是使用AIDL。本文就以完整的实例形式讲述了AIDL的原理及实现方法。AIDL(AndRoid接口描述语言)是一种借口描述语言; 编译器可以通过aidl文件生成一段代码,通过预先定义的接口达到两个进程内部通信进程的目的. 如果需要在一个Activity中, 访问另一个Service中的某个对象, 需要先将对象转化成 AIDL可识别的参数(可能是多个参数)...
Android显式启动与隐式启动Activity的区别介绍

Android显式启动与隐式启动Activity的区别介绍

前段时间立志坚持写博客,但是发现自己的积累的确不多,于是假期泡了泡图书馆,读了一些很有价值的文章。收获颇多,今天的文章分享为主,共同学习。为什么要写显式启动与隐式启动Activity。这源于自己的一次面试,被Baidu工程师问道,但是后来觉得自己回答的不好,废话少说,进入正题。如题,Android的Acitivity启动大致有两种方式:显式启动与隐式启动。下面分别介绍:A:显式启动对于初学者来说,这个最常见,下面用代码来解释什么是显式启动。复制代码 代码如...
Android按钮单击事件的四种常用写法总结

Android按钮单击事件的四种常用写法总结

很多学习Android程序设计的人都会发现每个人对代码的写法都有不同的偏好,比较明显的就是对控件响应事件的写法的不同。因此本文就把这些写法总结一下,比较下各种写法的优劣,希望对大家灵活地选择编码方式可以有一定的参考借鉴价值。xml文件代码如下:<Buttonandroid:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content"an...
Android消息处理机制Looper和Handler详解

Android消息处理机制Looper和Handler详解

Message:消息,其中包含了消息ID,消息处理对象以及处理的数据等,由MessageQueue统一列队,终由Handler处理。Handler:处理者,负责Message的发送及处理。使用Handler时,需要实现handleMessage(Message msg)方法来对特定的Message进行处理,例如更新UI等。MessageQueue:消息队列,用来存放Handler发送过来的消息,并按照FIFO规则执行。当然,存放Message并非实际意义的...
Android实现Back功能代码片段总结

Android实现Back功能代码片段总结

实现Back键功能方法有:一:重写onBackPressed方法复制代码 代码如下:@Overridepublic void onBackPressed() {// do something what you wantsuper.onBackPressed();}二:使用测试框架Instrumentation,模拟任意键按下动作,注意的是该方法不能在主线程中使用,只能开启新线程,带来的问题就是反应速度较慢,项目中不建议使用。 调用onBack()方法;产生...
Android中通过view方式获取当前Activity的屏幕截图实现方法

Android中通过view方式获取当前Activity的屏幕截图实现方法

此方法是通过view的方式获取当前activity的屏幕截图,并不是framebuffer的方式,所以有一定的局限性。但是这种方法相对简单,容易理解。首先通过下面的函数获取Bitmap格式的屏幕截图:复制代码 代码如下:public Bitmap myShot(Activity activity) {// 获取windows中最顶层的viewView view = activity.getWindow().getDecorView();view.build...
Android中给fragment写入参数的轻量开发包FragmentArgs简介

Android中给fragment写入参数的轻量开发包FragmentArgs简介

Android开发有时候会令人头痛。你不得不为诸如建立fragment这样简单的事情写很多代码。幸运的是java支持一个强大的工具:注释处理器(Annotation Processors)。Fragment的问题是你不得不设置很多参数,从而让它正常运行。很多android开发新手通常这样写:复制代码 代码如下:public class MyFragment extends Fragment{private int id;private String tit...
Android中的广播、服务、数据库、通知、包等术语的原理和介绍(图解)

Android中的广播、服务、数据库、通知、包等术语的原理和介绍(图解)

简介在Android中运用了很多机制,例如:广播、服务、数据库、通知、包……等等。什么是广播?Broadcast是一种广泛运用的在应用程序之间传输信息的机制。类似广播电台,根据特定频率来接收发送。什么是服务?Service是android 系统中的四大组件之一,它跟Activity级别一样,但不能自己运行只能后台运行,并且可以和其他组件进行交互。使用场合例如:后台音乐播放器。使用了什么数据库?在android中使用了开源项目sqlite操作数据。 SQLi...
Android中实现自动生成布局View的初始化代码方法

Android中实现自动生成布局View的初始化代码方法

在android开发过程中,界面布局是及其重要的,但同时也是复杂。有的时候我们急于实际运行查看布局效果。但是android的编译速度我实在不想吐槽啥,尤其在布局越来越复杂,项目越来越大,资源文件越来越多的情况下。尤其是是android的view的初始化,findViewbyId 完全是体力活,我们完全可以根据布局文件自动生成View的初始化代码。首先声明:1.这是及其容易做到的,实用性性一般,但是在复杂布局和首次写初始化View代码的时候及其好用。2.只能...
Android中的windowSoftInputMode属性详解

Android中的windowSoftInputMode属性详解

在前面的一篇文章中,简单的介绍了一下如何实现软键盘不自动弹出,使用的方法是设置android:windowSoftInputMode属性。那么,这个属性到底是干什么的,他有什么作用呢?今天这篇文章,就是探索android:windowSoftInputMode属性的作用的。 首先,我们从这个属性的名称中,可以很直观的看出它的作用,这个属性就是来设置窗口软键盘的交互模式的。 android:windowSoftInputMode属性一共有9个取值,分别是...
Android网络编程之UDP通信模型实例

Android网络编程之UDP通信模型实例

什么是Android UDP?UDP是User Datagram Protocol的简称,中文名是用户数据包协议,是OSI参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。它是IETF RFC 768是UDP的正式规范。在网络中它与TCP协议一样用于处理数据包。在OSI模型中,在第四层-传输层,处于IP协议的上一层。UDP有不提供数据报分组、组装和不能对数据包的排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。UD...
Android中刷新界面的二种方法

Android中刷新界面的二种方法

Android提供了Invalidate方法实现界面刷新,但是Invalidate不能直接在线程中调用,因为他是违背了单线程模型:Android UI操作并不是线程安全的,并且这些操作必须在UI线程中调用。Android界面刷新方法有两种,分别是利用Handler和利用postInvalidate()来实现在线程中刷新界面。利用Handler刷新界面实例化一个Handler对象,并重写handleMessage方法调用invalidate()实现界面刷新;...
<< 161 162 163 164 165 166 167 168 169 170 >>