标签‘android’

Android View动画进行中事件无效解决方法

Android View动画运行时,在运动的View上绑定的事件将不能被触发,因为诸如点击事件等,触发点是绑定在View控件初始化时所在位置的点击,当动画移动后点击坐标就发生了改变,通过查询一些资料,了解到,Android 3.0以下,动画存在问题,它只移动了View绘制显示的地方,却没有移动View的物理位置,具体底层实现大家可以看源代码了解,我不大清楚底层,这里就不多说了,下面说说简单的解决方法。

只需继承父级布局,覆盖onTouchEvent(或者其他需要捕获的事件)。这里我以FrameLayout为例,因为要捕获点击事件,实现onTouchEvent,然后通过获取当前点击坐标计算出当前点击范围内包含的View控件,找到第一个就直接触发该View的事件,然后break,示例代码如下: 查看更多...

离线更新Android Studio

手动更新适合以下场景:
1. 目前版本与Gradle版本不一致。
2. 错误 IllegalStateException: Can’t deserialize target data of key ‘IdeaAndroidProject’.
Given class loaders: [PluginClassLoader[org.jetbrains.android, 10.0]]:
3. 新建工程出错,在线更新更新失败。
4. 无外网,不能在线更新。

我们采用离线更新的方法解决:

1.获取安装的Android Studio 的Build Number
如果已经安装了Android Studio,那么我们只需要增量更新即可。所以下载更新jar包即可,首先要知道自己当前的Android Studio的版本号,Help-》About。

Build #AI-135.1404660 135.1404660即为版本号 查看更多...

Android应用软件反编译还原工程全解

android
众所周知,Android应用层软件是使用Java语言开发的,而Android的安装文件*.apk则是将Java编译后的*.class文件打包成*.Jar后再打包classes.dex文件,最后打包成*.apk发布。找到封装步骤,想反编译应该不难。这里介绍Windows环境下进行反编译的全过程。

说明:反编译不是为了破解,而是为了更好的学习,通过反编译可以更好的借鉴成熟软件的可取之处。

反编译Android应用来还原Android工程,其实很简单,这里分为两个步骤。 查看更多...

Android中View与SurfaceView的区别要点

首先介绍一下View类,View类是android的一个超类,每一个View都有一个用于绘画的画布,这个画布可以进行任意的扩展。有的时候我们需要自定义VIew实现自己想要的视图。view、SurfaceView是游戏开发中经常用到的视图。

View:显示视图,内置画布,提供图形绘制函数、触屏事件、按键事件函数等;必须在UI主线程内更新画面,速度较慢。

SurfaceView:基于view视图进行拓展的视图类,更适合2D游戏的开发;是view的子类,类似使用双缓机制,在新的线程中更新画面所以刷新界面速度比view快。 查看更多...

Android程序与服务器大容量数据交互问题

对于目前的状况来说,移动终端的网络状况没有PC网络状况那么理想。在一个Android应用中,如果需要接收来自服务器的大容量数据,那么就不得不考虑客户的流量问题。本文根据笔者的一个项目实战经验出发,解决大容量数据的交互问题,解决数据大小会根据实际情况动态切换问题(服务器动态选择是否要压缩数据,客户端动态解析数据是否是被压缩的),还有数据交互的编码问题。

解决数据过大的问题,最直观的方法就是压缩数据。服务器将需要传递的数据先进行压缩,再发送给Android客户端,Android客户端接收到压缩的数据,对其解压,得到压缩前的数据。

如果规定Android客户端和服务器的交互数据必须是经过某种压缩算法后的数据,那么这种“规定”失去了视具体情况而定的灵活性。笔者拟将Http协议进行封装,将动态的选择传输的数据是否要经过压缩,客户端也能动态的识别,整理并获得服务器想要发送的数据。Android客户端向服务器请求某个方面的数据,这个数据也许是经过压缩后传递比较合适,又也许是将原生数据传递比较合适。 查看更多...

Android图形系统中形状Drawable使用详解

当你想动态画二维图形,ShapeDrawable对象是可能是你合适的选择.使用ShapeDrawable,你可以随意画出原始的形状并且应用到任何风格.

ShapeDrawable是一个Drawable的派生类,所以你可以用于任何想使用Drawable的地方—比如可能是一个View的背景,通过setBackgroundDrawable()所设置.当然,你也可以把你的形状作为它自己的自定义View绘制,然后以你喜欢的方式添加到你的Layout.因为ShapeDrawable有它自己的draw()方法,你可以创建一个View的子类然后在View.onDraw()的方法中画这个ShapeDrawable. 查看更多...

Android图形系统中Drawable使用详解

Android提供了一个自定义的2D图形库来绘制图像和图像.在android.graphics.drawable包中你就可以找到这些用于2维绘画的通用类.

本文讨论使用Drawable对象来作画的基础知识以及如何使用一对Drawable类的派生类.
Drawable是通常指的那种可以作画的东西的抽象.你将发现Drawable类扩展出了很多特定的可绘图形类,包括BitmapDrawable,ShapeDrawable,PictureDrawable,LayerDrawable,等等.当然,你也可以从它们派生出你自己的类来定义你自己的Drawable对象,当然以你独有的方式来表现.

有三种方法来定义并实例化一个Drawable:使用一个保存在你的项目资源中的图像;使用一个定义了Drawable属性的XML文件;或使用普通的类对象构造方式.下面,我们将讨论前两种方式(类对象构就是new出一个对象,傻子都知道,所以不说了).

从资源中的图像创建 查看更多...

Android图形系统中Canvas使用详解

当写一个应用时,恰当的决定你的图形需求是很重要的.不同的图形任务对应不同的技术.例如,一个静态应用的图形和动画的实现肯定与一个交互式游戏非常不同.这里,我们将讨论一些在android上绘制图形时的操作以及它们最适合应用的任务.

Canvas和Drawable
Android提供了一系列View部件来为大多数用户界面提供通常的功能.你也可以扩展这些部件来修改它们的外观和行为.另外,你可以使用Canvas类的方法来绘制你自己的2D显示或为那些像纹理按钮或逐帧显示的动画之类的东西或创建Drawable对象.

硬件加速
从Android3.0开始,你可以硬加速大多数以CanvasAPI完成的绘画工作来大幅提高它们的性能.

OpenGL
Android支持OpenGLES 1.0和2.0,Android框架API和(NDK)都同样支持. 查看更多...

CM rom下android data2ext简化操作步骤

小子使用android机器乃过时几年的旧机型。配置在这高发烧的时代已经远远达不到了。只说内存,小小的512就完全不能满足了。下面就说一下小子是怎么折腾data2ext来扩展内存的。目前大部分早期比较流行的水货htc android system的机子都有cm rom的支持。只不过似乎无望升级4.0+了,但出于暂时没rmb换机。就将就继续折腾了。其实小子做data2ext已经是三四个月之前的事了,使用几个月后也算给大家分享下心得体会吧。

老规矩,不废话。先确定两点。第一,你使用的是cm rom(其他的小子未曾尝试);第二,你rom内存满足不了现状(够用的话就没必要折腾了)。

第一步:下载文件,下载cm的rom,或者你之前用的,准备好以防系统损坏,到时候可以直接重刷。这里不再提地址了有兴趣查看小子之前的相关文章《Andriod第三方定制系统CM使用及谷歌套件安装》。 查看更多...

简析Android平台中的多线程、Handler应用

在Android平台中多线程应用很广泛,在UI更新、游戏开发和耗时处理(网络通信等)等方面都需要多线程。Android线程涉及的技术有:Handler;Message;MessageQueue;Looper;HandlerThread。

很多初入Android或Java开发的新手对Thread、Looper、Handler和Message仍然比较迷惑,衍生的有HandlerThread、java.util.concurrent、Task、AsyncTask由于目前市面上的书籍等资料都没有谈到这些问题,今天就这一问题做更系统性的总结。

Android开发过程中为什么要多线程

我们创建的Service、Activity以及Broadcast均是一个主线程处理,这里我们可以理解为UI线程。但是在操作一些耗时操作时,比如I/O读写的大文件读写,数据库操作以及网络下载需要很长时间,为了不阻塞用户界面,出现ANR的响应提示窗口,这个时候我们可以考虑使用Thread线程来解决。
查看更多...