某些情况下会用到这种非主流的转换方式,最近项目中用到,记录下. ByteArrayOutputStream baos = new ByteArrayOutputStream(); bm.compress(Bitmap.CompressFormat.PNG, 100, baos); InputStream isBm = new ByteArrayInputStream(baos.toByteArray());…
1. 对图片本身进行操作 尽量不要使用 setImageBitmap.setImageResource. BitmapFactory.decodeResource 来设置一张大图,因为这些方法在完成 decode 后,最终都是通过 Java 层的 createBitmap 来完成的,需要消耗更多内存.因此,改用先通过 BitmapFactory.decodeStream 方法,创建出一个 bitmap,再将其设为 ImageView 的 source,decodeStream 最大的秘密在于其直…
TraceView 是 Android 平台配备一个很好的性能分析的工具.它可以通过图形化的方式让我们了解我们要跟踪的程序的性能,并且能具体到 method.详细内容参考:Profiling with Traceview and dmtracedump TraceView 简介 TraceView 是 Android 平台特有的数据采集和分析工具,它主要用于分析 Android 中应用程序的 hotspot.TraceView 本身只是一个数据分析工具,而数据的采集则需要使用 Android S…
从 API 8 开始(参考官方文档:App Install Location | Android Developers),你可以将你的应用安装在外部储存中(例如,安装到设备的 SD 卡上).这是一个可选的特征,你可以在你的应用的 AndroidManifest.xml 中声明 android:installLocation 属性.如果你没有声明这个属性,你的应用程序将会被安装在内部储存,并且不能被移到外置储存中. 修改 AndroidManifest.xml 文件中 <manifest> 元素…
Canvas and Drawables 安卓提供了一组绘制二维图形的 API(参考官方文档:Canvas and Drawables | Android Developers),这组 API 允许开发者通过将自定义图形绘制到画布上或修改现有视图来实现视图的定制,绘制二维图形,通常有以下两种方式: 在布局文件中引入自定义视图或动画,这种方式的图形绘制会交由系统来处理,你只需要将自定义图形引入视图. 直接将图形绘制到画布上,这种方式的绘制就需要开发者重写并调用对应类的 onDraw(android…
什么是 xmlns xmlns是 XML Namespaces 的缩写,中文名称是 XML命名空间. xmlns 使用规则 xmlns:namespace-prefix="namespaceURI". xmlns 在 Android 中的作用 命名空间的作用是什么呢?命名空间里约定了对应类的属性,通过它可以知道对应类下有什么样的属性:也可以理解为语法文件,通过它你可以知道输入属性的正确与否.Android 布局文件中经常能看到的命名空间为:xmlns:android="htt…
有时需为视图属性指定大小尺寸值(通常以像素为单位,但有时也用点.毫米或英寸).最常见的属性有: 文字大小(Text Size),指设备上显示的文字像素高度: 边距(Margin),指定视图组件间的距离: 内边距(Padding),指定视图外边框与其内容间的距离. Android 使用 drawable-ldip.drawable-mdip 以及 drawable-hdip 三个目录下的图像文件自动适配不同像素密度的屏幕.假如图像完成了自动适配,但边距无法缩放适配,又或者用户配置了大于默认值的文字…
Android 中与 Touch 事件相关的方法包括:dispatchTouchEvent(MotionEvent ev).onInterceptTouchEvent(MotionEvent ev).onTouchEvent(MotionEvent ev):能够响应这些方法的控件包括:ViewGroup 及其子类.Activity.方法与控件的对应关系如下表所示: Touch 事件相关方法   方法功能     ViewGroup         Activity        public b…
服务(Service) 是一种在后台运行,没有界面的组件,由其他组件调用开始.Android 中的服务和 Windows 中的服务是类似的东西,它运行于系统中不容易被用户发觉,可以使用它开发如监控之类的程序. 服务(Service)的实现 1. 定义类继承 Service,重写 onCreate(). onStart(Intent intent, int startId). onBind(Intent intent). onUnbind(Intent intent).onDestroy() 中需…
我们很多人应该都做过这样的操作,打开拨号键盘输入 *#*#4636#*#* 等字符就会弹出一个界面显示手机相关的一些信息,这个功能在 Android 中被称为 Android Secret Code,除了这些系统预置的 Secret Code,我们也可以实现自己的 Secret Code,而且实现起来非常简单. 要实现自己的 Secret Code,只需要向系统注册一个 Broadcast Receiver,不需要任何权限,如下所示: <receiver android:name=".Se…