Android 页面左右切换动画实现

<div> slide_left_in.xml <?xml version=&#8221;1.0&#8243; encoding=&#8221;utf-8&#8243;?> <set xmlns:android=&#8221;http://schemas.android.com/apk/res/android&#8221;> <translate android:duration=&#8221;300&#8243; android:fromXDelta=&#8221;-100.0%p&#8221; android:toXDelta=&#8221;0.0&#8243; /> </set> slide_left_out.xml <?xml version=&#8221;1.0&#8243; encoding=&#8221;utf-8&#8243;?> slide_right_in.xml <?xml version=&#8221;1.0&#8243; encoding=&#8221;utf-8&#8243;?> slide_right_out.xml <?xml version=&#8221;1.0&#8243; encoding=&#8221;utf-8&#8243;?> </div> <div> </div> <div> 1. 在Style文件里面定义 </div> </div> 2.在Manifest里面application设置Theme android:theme=”@style/AppTheme” ...

2014年6月23日 · 1 分钟 · 天边的星星

Android开发者必知的5个开源库

过去的时间里,Android开发逐步走向成熟,一个个与Android相关的开发工具也层出不穷。不过,在面对各种新鲜事物时,不要忘了那些我们每天使用的大量开源库。在这里,向大家介绍的就是,在这个任劳任怨的大家庭中,最受开发者喜爱的五个Android库。希望通过对它们的了解,能够对你的开发工作有所帮助。 ** ** 1. GSON Gson是Google提供的用来在Java对象和JSON数据之间进行映射的Java类库。可用于将Java对象转换成对应的JSON表示,也可以将JSON字符串转换成一个等效的Java对象。如果与API打交道的话,那么这将会是你经常需要的东西。我们主要使用JSON的原因就是,相较XML,轻量级的JSON要简单的多。 **[js]** [view plain](http://www.csdn.net/article/2014-06-16/2820224-top-5-android-libraries#)[copy](http://www.csdn.net/article/2014-06-16/2820224-top-5-android-libraries#)[![在CODE上查看代码片](https://code.csdn.net/assets/CODE_ico.png)](https://code.csdn.net/snippets/394286)[![派生到我的代码片](https://code.csdn.net/assets/ico_fork.svg)](https://code.csdn.net/snippets/394286/fork) <div> </div> </div> - <span style="color: #000000;"><span class="comment" style="color: #008200;">// Serialize </span> </span> - <span style="color: #000000;">String userJSON = <span class="keyword" style="font-weight: bold; color: #006699;">new</span> Gson().toJson(user); </span> - <span style="color: #000000;"> </span> - <span style="color: #000000;"><span class="comment" style="color: #008200;">// Deserialize</span> </span> - <span style="color: #000000;">User user = <span class="keyword" style="font-weight: bold; color: #006699;">new</span> Gson().fromJson(userJSON, User.<span class="keyword" style="font-weight: bold; color: #006699;">class</span>); </span> 2. RETROFIT ...

2014年6月20日 · 6 分钟 · 天边的星星

MVP模式与MVC模式

源地址:http://www.cnblogs.com/cuihongyu3503319/archive/2009/01/09/1372820.html [MVP模式与MVC模式(转)](http://www.cnblogs.com/cuihongyu3503319/archive/2009/01/09/1372820.html) MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负责显示。作为一种新的模式,MVP与MVC有着一个重大的区别:在MVP中View并不直接使用Model,它们之间的通信是通过Presenter (MVC中的Controller)来进行的,所有的交互都发生在Presenter内部,而在MVC中View会从直接Model中读取数据而不是通过 Controller。Alex在他的blog中对于这两者之间的比较很直观也比较清楚,原文可以下面的地址找到:[http://ameleta.spaces.live.com/blog/cns!5F6316345A821420!163.entry](http://ameleta.spaces.live.com/blog/cns!5F6316345A821420!163.entry)【译文】: **Model View Presenter vs Model View Controller** **简介** 在我工作中经常需要处理一些由于开发人员没能很清楚地理解MVC和MVP模式的区别的情况下使用它们而产生的问题。在这篇文章中我将会阐述一下我对两者之间区别的一些理解。 在N层体系结构中MVC/P模式仅仅只是用于表示层(presentation layer),理解这一点很重要。这两个模式并不是关于怎么构建数据层(data layer)和服务层(service layer)的,而是关于怎么将数据(data)从用户接口(view)中分离出来,以及用户接口如何与数据进行交互的。这些模式的使用让解除你的程序中表示层对对数据和控制逻辑的依赖,从而可以自由的变更表示层。 这两种模式的一般性概念 1、模型(Model)表示数据模型和业务逻辑(business logic)。模型并不总是DataSet,DataTable之类的东西,它代表着一类组件(components)或类(class),这些组件或类可以向外部提供数据,同时也能从外部获取数据并将这些数据存储在某个地方。简单的理解,可以把模型想象成“外观类(facade class)”。译注:这里的外观是指“外观模式”中所说的外观。外观的一般作用是为一个复杂的子系统提供高层次的简单易用的访问接口,可以参看下面的图来理解它的原理: ![](http://images.cnblogs.com/cnblogs_com/chen-cxb/1.jpg) 2、视图(View)将数据层现给用户。一般的视图都只是包含用户界面(UI),而不包含界面逻辑。比如,Asp.net中包含控件的页面(page)就是一个视图。视图可以从模型中读取数据,但是不能修改或更新模型。 3、层现器(Presenter)/控制器(Controller)包含了根据用户在视图中的行为去更新模型的逻辑。视图仅仅只是将用户的行为告知控制器,而控制器负责从视图中取得数据然后发送给模型。 **MVC/P模式的核心是为了将模型从视图/控制器中分离出来,从而使得模型独立于它们,因此模型不包含对视图和控制的引用。 什么是MVC(Model View Presenter)模式?** 1、为了使得视图接口可以与模型和控制器进行交互,控制器执行一些初始化事件 2、用户通过视图(用户接口)执行一些操作 3、控制器处理用户行为(可以用观察着模式实现)并通知模型进行更新 4、模型引发一些事件,以便将改变发告知视图 5、视图处理模型变更的事件,然后显示新的模型数据 6、用户接口等待用户的进一步操作 这一模式的有一下几个要点: 1、视图并不使用控制器去更新模型。控制器负责处理从视图发送过来的用户操作并通过与模型的交互进行数据的更新 2、控制器可以和视图融合在一块。Visual Studion中对Windows Forms的默认处理方式就是这样的。【译注:比如我们双击一个Button,然后在它的事件里写处理逻辑,然后将处理的数据写回模型中。这里处理逻辑时间应该是控制器的功能,但是我们并没有专门写一个控制器来做这件事情而是接受了VS的默认处理方式,将它写在Form的代码中,而这里的Form在MVC中它就是一个View。所以这说vs默认的处理方式是将把控制器和视图融合在一起的。】 3、控制器不包含对视图的渲染逻辑(rendering logic) **“主动—MVC”模式**,也是通常意义下的MVC模式 &nbsp; <div align="center"> ![](http://images.cnblogs.com/cnblogs_com/chen-cxb/2.jpg) </div> &nbsp; &nbsp; 【译注:为什么说是主动的?View不是等Controller通知它Model更新了然后才从Model取数据并更新显示,而是自己监视Model的更新(如果用观察者模式)或主动询问Model是否更新。前面那种等待Controller通知的方式是下面所介绍的“被动—MVC”的实现方式。】 **“被动—MVC”模式** 与主动MVC的区别在于: 1、模型对视图和控制器一无所知,它仅仅是被它们使用 2、控制器使用视图,并通知它更新数据显示 3、视图仅仅是在控制器通知它去模型取数据的时候它才这么做(视图并不会订阅或监视模型的更新) 4、控制器负责处理模型数据的变化 5、控制器可以包含对视图的渲染逻辑 ...

2014年6月20日 · 1 分钟 · 天边的星星

Android上传附件方法,直接复制可以用

Android上传附件方法,直接复制可以用 // 附件上传 public static String post(String actionUrl, String fileName) throws IOException { // 产生随机分割内容 String BOUNDARY = java.util.UUID.randomUUID().toString(); String MULTIPART_FROM_DATA = “multipart/from-data”; String CHARSET = “UTF-8”; // 定义URL实例 URL uri = new URL(actionUrl); // 定义HttpURLConnection实例,打开连接 HttpURLConnection conn = (HttpURLConnection) uri.openConnection(); // 设置从主机读取数据超时(单位:毫秒) conn.setReadTimeout(5 * 1000); // 设置允许输入 conn.setDoInput(true); // 设置允许输出 conn.setDoOutput(true); // 设置不允许使用缓存 conn.setUseCaches(false); // 设置为POST发送方法 conn.setRequestMethod(“POST”); // 设置维持长连接 conn.setRequestProperty(“connection”, “keep-alive”); // 设置文件字符集编码 conn.setRequestProperty(“Charset”, “UTF-8”); // 设置文件类型 conn.setRequestProperty(“Content-Type”, MULTIPART_FROM_DATA ...

2014年6月13日 · 2 分钟 · 天边的星星

Maven安装第三方jar或者so文件

C:\Users\Administrator>mvn install:install-file -DgroupId=com.bspatch -Dartifact Id=libbspatch -Dversion=v3 -Dfile=D:/armeabi/libbspatch.so -Dpackaging=so -Dgene ratePom=true -Dclassifier=armeabi [INFO] Scanning for projects… [INFO] [INFO] ———————————————————————— [INFO] Building Maven Stub Project (No POM) 1 [INFO] ———————————————————————— [INFO] [INFO] — maven-install-plugin:2.3.1:install-file (default-cli) @ standalone-po m — [INFO] Installing D:\armeabi\libbspatch.so to D:\apache-maven-3.0.5\repositories .m\com\bspatch\libbspatch\v3\libbspatch-v3-armeabi.so [INFO] Installing C:\Users\ADMINI~1\AppData\Local\Temp\mvninstall839685187217991 3371.pom to D:\apache-maven-3.0.5\repositories.m\com\bspatch\libbspatch\v3\libb spatch-v3.pom [INFO] ———————————————————————— [INFO] BUILD SUCCESS [INFO] ———————————————————————— [INFO] Total time: 1.349s [INFO] Finished at: Thu Jun 05 14:06:58 CST 2014 [INFO] Final Memory: 2M/15M [INFO] ———————————————————————— ...

2014年6月11日 · 2 分钟 · 天边的星星

Android 实现ListView的A-Z字母排序和过滤搜索功能,实现汉字转成拼音

转载请注明出处:http://blog.csdn.net/xiaanming/article/details/12684155 前段时间因为换工作的缘故又恰巧碰到国庆节,所以有段时间自己没有更新博客了,过完国庆到新公司报道,感觉还不错,就是现在住的地方离新公司有点远,地铁20站,伤不起啊,我每天早上7点多就要起床,然后屁颠屁颠的去挤地铁上班,晚上下班还要挤地铁,先不说路程远,车费一天就要10几块,我的银子啊,有坐龙华线去上班的深圳程序员不?听说那条线上班高峰期很挤?我没在上班高峰期坐过那趟车,我在民治那边找了个房子,离华强北也不远,关键房租便宜,哈哈,乐开花了,下个礼拜就要搬过去啦 不扯了,回到主题,今天给大家带来ListView的A-Z字母排序和过滤搜索功能并且实现汉字转成拼音的功能,我们知道一般我们对联系人,城市列表等实现A-Z的排序,因为联系人和城市列表我们可以直接从数据库中获取他的汉字拼音,而对于一般的数据,我们怎么实现A-Z的排序,我们需要将汉字转换成拼音就行了,接下来就带大家实现一般数据的A-Z排序功能,首先先看下效果图 上面是一个带删除按钮的EditText,我们在输入框中输入可以自动过滤出我们想要的东西,当输入框中没有数据自动替换到原来的数据列表,然后下面一个ListView用来显示数据列表,右侧是一个字母索引表,当我们点击不同的字母,ListView会定位到该字母地方,了解了布局之后,我们先看下项目结构吧 ![](http://img.blog.csdn.net/20131013204932718?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhYW5taW5n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 我按照项目中类的顺序来一一介绍其功能 1.SortModel 一个实体类,里面一个是ListView的name,另一个就是显示的name拼音的首字母 <div class="dp-highlighter bg_java" style="color: #000000;"> <div class="bar"> <div class="tools" style="color: silver;"> **[java]** [view plain](http://blog.csdn.net/xiaanming/article/details/12684155#)[copy](http://blog.csdn.net/xiaanming/article/details/12684155#)[![在CODE上查看代码片](https://code.csdn.net/assets/CODE_ico.png)](https://code.csdn.net/snippets/111689)[![派生到我的代码片](https://code.csdn.net/assets/ico_fork.svg)](https://code.csdn.net/snippets/111689/fork) <div> </div> </div> </div> - <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #006699;">package</span> com.example.sortlistview; </span> - <span style="color: black;"> </span> - <span style="color: black;"><span class="keyword" style="font-weight: bold; color: #006699;">public</span> <span class="keyword" style="font-weight: bold; color: #006699;">class</span> SortModel { </span> - <span style="color: black;"> </span> - <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">private</span> String name; <span class="comment" style="color: #008200;">//显示的数据</span> </span> - <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">private</span> String sortLetters; <span class="comment" style="color: #008200;">//显示数据拼音的首字母</span> </span> - <span style="color: black;"> </span> - <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">public</span> String getName() { </span> - <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">return</span> name; </span> - <span style="color: black;"> } </span> - <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">public</span> <span class="keyword" style="font-weight: bold; color: #006699;">void</span> setName(String name) { </span> - <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">this</span>.name = name; </span> - <span style="color: black;"> } </span> - <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">public</span> String getSortLetters() { </span> - <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">return</span> sortLetters; </span> - <span style="color: black;"> } </span> - <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">public</span> <span class="keyword" style="font-weight: bold; color: #006699;">void</span> setSortLetters(String sortLetters) { </span> - <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: #006699;">this</span>.sortLetters = sortLetters; </span> - <span style="color: black;"> } </span> - <span style="color: black;">} </span> </div> <span style="color: #000000;"> 2.SideBar类就是ListView右侧的字母索引View,我们需要使用setTextView(TextView mTextDialog)来设置用来显示当前按下的字母的TextView,以及使用setOnTouchingLetterChangedListener方法来设置回调接口,在回调方法onTouchingLetterChanged(String s)中来处理不同的操作 ...

2014年6月10日 · 37 分钟 · 天边的星星

Android开源项目第四篇——开发及测试工具篇

本文为那些不错的Android开源项目第四篇——开发工具篇,主要介绍Android开发工具和测试工具相关的开源项目。 最新内容请访问[AndroidOpenProject@Github](https://github.com/Trinea/android-open-project),欢迎Star和Fork。 Android开源项目系列汇总已完成,包括: [Android开源项目第一篇——个性化控件(View)篇](http://www.trinea.cn/android/android-open-source-projects-view/) Android开源项目第二篇——工具库篇 Android开源项目第三篇——优秀项目篇 Android开源项目第四篇——开发及测试工具篇 Android开源项目第五篇——优秀个人和团体篇 **1、Buck** facebook开源的Android编译工具,效率是ant的两倍。主要优点在于: (1) 加快编译速度,通过并行利用多核cpu和跟踪不变资源减少增量编译时间实现 (2) 可以在编译系统中生成编译规则而无须另外的系统生成编译规则文件 (3) 编译同时可生成单元测试结果 (4) 既可用于IDE编译也可用于持续集成编译 (5) facebook持续优化中 项目地址:https://github.com/facebook/buck **2、Android Maven Plugin** Android Maven插件,可用于对android三方依赖进行管理。在J2EE开发中,maven是非常成熟的依赖库管理工具,可统一管理依赖库。 项目地址:https://github.com/jayway/maven-android-plugin **3、Spoon** 可用于android不同机型设备自动化测试,能将应用apk和测试apk运行在不同机器上并生成相应测试报告。 项目地址:https://github.com/square/spoon **4、Android FEST** 提供一些列方便的断言,可用于提高编写Android自测代码效率 项目地址:https://github.com/square/fest-android **5、SelectorChapek for Android** Android Studio插件,可根据固定文件名格式资源自动生成drawable selectors xml文件。 项目地址:https://github.com/inmite/android-selector-chapek **6、Android Resource Navigator** chrome插件,可以方便的查看github上android源码工程的styles.xml和themes.xml。主要功能: (1) 快速打开android styles.xml themes.xml (2) 方便在资源间跳转。styles.xml themes.xml文件中资源链接跳转,可以方便跳转到某个资源 (3) 方便查找某个style和theme。chrome地址栏输入arn+tab+搜索内容回车即可 (4) 自动下载不同分辨率下的drawable (5) 通过映射查找那些不是按照固定命名规则命名的style和theme 项目地址:https://github.com/jgilfelt/android-resource-navigator 示例:https://chrome.google.com/webstore/detail/android-resource-navigato/agoomkionjjbejegcejiefodgbckeebo?hl=en&gl=GB ...

2014年6月6日 · 1 分钟 · 天边的星星

eclipse 中安装 maven 插件 ,建立maven工程

** 一、插件安装:** 1、下载maven插件 打开eclipse ,help-install new software add name : m2e url: http://download.eclipse.org/technology/m2e/releases/ (今天是2014-2-26,这个地址是有效的,以后不知道是否有效) name : m2e url: http://rgladwell.github.com/m2e-android/updates (2014-4-16,这个地址是有效的,以后不知道是否有效) 2、下载 maven-bin 下载地址 http://download.csdn.net/download/cyw8998/6963959 3、 下载下来之后,解压,找个路径放进去, 把bin的位置,设在环境变量里 新建环境变量MAVEN_HOME , PATH里配置解压后的bin路径 检查一下 进入cmd,运行mvn -v,如果显示出版本号,说明配置成功了。 4、 为了使得Eclipse中安装的Maven插件,同windows中安装的那个相同,需要让eclipse中的maven重新定位一下 Window -> Preference -> Maven -> Installation -> Add 现在就可以建立maven工程了。 二、建立工程: **方法A: ** 1、打开eclipse,通过工具new project出现如下窗口: 2、选中Maven Project, 点击Next,然后保持默认选项,再点击next,弹出如下窗口 3、在过滤器中输入android,如果你已经有这样的插件,将会显示出来,否则就需要通过Add Archetype按钮进行添加 4、 3-1、因为我之前已经安装了这三个插件,因此输入过滤器后直接就有了,如果系统没有找到android-quickstart插件,则需点击Add Archetype,弹出如下窗口,然后将所需要的插件的groupid,artifactid及版本号输入进去,根据准备工作中提及,分别是: de.akquinet.android.archetypes android-quickstart 1.0.6 如下图所示: 4、点击OK后,系统会去寻找相关的插件,然后选中此插件,再次点击Next,依次填入新工程的groupid, artifactid, package,如下图所示: 方法B: ...

2014年6月6日 · 1 分钟 · 天边的星星

使用Maven构建Android项目

之前一直在做WEB前端项目,前段时间接手第一个Android项目,拿到代码之后,先试着run起来再说,导入eclipse,一堆错误,设置classpath依赖,折腾半天,还是编译错误,于是联系项目接口人,得知他有一个Android库项目没有提交到SVN,晕。。。 对于习惯使用Maven管理Java项目的我来说,自然想到能否用Maven构建Android项目呢?于是开始Google、百度,发现已经有前人做过这样的实践了,不过在使用过程中还是遇到不少问题,后面经过各种努力终于能比较顺地使用了,这篇文章对如何使用Maven构建Android项目作了简要总结。如果你和我一样饱受项目依赖管理的折磨,和我一样讨厌项目打包发布时的繁琐,希望能通过Maven让这一切自动化完成。那么,这篇文章或许对你有用。 1. 环境搭建 - **JDK与Android SDK安装 做Android开发,这里无需多说,但安装完成后需要正确设置JAVA_HOME、CLASSPATH、ANDROID_HOME等环境变量。其中ANDROID_HOME为Android SDK安装的根目录。并将%ANDROID_HOME%\tools和%ANDROID_HOME%\platform-tools值添加到Path变量中。 - **Maven安装 这里无需多说,下载安装Maven并正确设置环境变量即可。 - **IDE支持 - **Eclipse 大多数人都在使用Eclipse开发Android应用,如果你用Eclipse做Android开发,推荐下载eclipse-with-m2e-and-adt,该版本已经安装了ADT、m2e、m2e-android等重要插件,支持在Eclipse中使用Maven进行Android应用开发。当时为了安装这些插件费了好大劲,所以,如果你看到这里,可以直接下载它,不用像我一样去做那些没有意义又浪费时间的事情。 - **IntelliJ IDEA 做Java开发,你不能不知道的神器,完美支持使用Maven构建Android应用,强烈推荐。即使是装了插件的Eclipse对使用Maven构建Android应用仍然支持不好。如果你是Eclipse的信徒,你也可以试试它,如果你能习惯它,你一定会被它的强大所吸引。 - **NetBeans IDE NetBeans也支持Android开发,但没怎么了解,用的人应该也比较少。 2. 项目构建 以下是我的项目中使用的pom文件,因为涉及保密,部分地方做过修改,但整体结构没有改变,可以清楚地说明问题。 <?xml version=“1.0” encoding=“UTF-8”?> xmlns=“http://maven.apache.org/POM/4.0.0” xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” xsi:schemaLocation=“http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd”> <span class="sc3"><span class="re1" style="color: #ffcc00;"><modelVersion<span class="re2">></span></span></span>4.0.0<span class="sc3"><span class="re1" style="color: #ffcc00;"></modelVersion<span class="re2">></span></span></span> <groupId>com.ikoding.android</groupId> <artifactId>android-app-quickstart</artifactId> <version>1.0.0</version> ...

2014年6月5日 · 3 分钟 · 天边的星星

Android判断正在运行的服务

public boolean isServiceRun(Context context){ ActivityManager am = (ActivityManager)context.getSystemService(context.ACTIVITY_SERVICE); List list = am.getRunningServices(30); for(RunningServiceInfo info : list){ if(info.service.getClassName.equals(“service的全称(一般为包名+service类的名称)”)){ return true; } } return false;}

2014年5月27日 · 1 分钟 · 天边的星星