Android图形界面
文章平均质量分 63
杭州山不高
山不在高
展开
-
Android中View和ViewGroup介绍
1. 概念Android中的View与我们以前理解的“视图”不同。在Android中,View比视图具有更广的含义,它包含了用户交互和显示,更像Windows操作系统中的window。ViewGroup是View的子类,所以它也具有View的特性,但它主要用来充当View的容器,将其中的View视作自己的孩子,对它的子View进行管理,当然它的孩子也可以是ViewGroup类型。转载 2016-10-13 17:11:40 · 763 阅读 · 0 评论 -
Android的基本控件,及其继承关系
android.view.View-+android.widget.TextView---+android.widget.EditView---+android.widget.Button-----+android.widget.CompoundButton-----+android.widget.ToggleButton-----+android.widget.Radio原创 2015-11-17 11:48:47 · 638 阅读 · 0 评论 -
Android的Canvas、Bitmap、Drawable和Paint
Canvas,画布。它拥有一个Bitmap,可以在它上面绘制各种图形图像,它还提供了裁剪、选取等操作,也可以配合Matrix矩阵类给图像做旋转、缩放等操作。其主要方法有:drawLine()/drawText()/drawPicture()/drawBitmap(), clipRect()/clipPath()/clipRegion(), scale()/rotate()/srew()等。原创 2015-12-01 10:41:43 · 785 阅读 · 6 评论 -
Context与Activity/Service/Application
在android中我们经常遇到这样的情况,在创建一个对象的时候,往往需要传递一个this参数,比如:语句 MyView mView = new MyView(this),要求传递一个this参数,这个this究竟指的是什么东西呢?其实这里的this指的就是当前的Activity.this,是这个语句所在的Activity的this。Activity.this取的是这个Activity的Contex转载 2015-12-16 16:41:47 · 2233 阅读 · 1 评论 -
Android来电,显示悬浮窗
AndroidManifest.xml <receiver android:name=".MyReceiver" android:enabled="true" android:exported="true" > 注册监听器 m原创 2015-12-08 17:45:43 · 6135 阅读 · 9 评论 -
Android中的Looper,Handler,Message和MessageQueue
Looper,它拥有MessageQueue,可以跟线程绑定(在prepare时绑定当前线程),对消息进行处理(loop)。其主要方法:prepare(), loop(){msg.target.dispatchMessage(msg);}, quit()等。Handler,它拥有Looper及其MessageQueue,可以获取消息,投递或发送消息,分发或处理消息等。其主要方法:obt原创 2015-12-01 17:41:04 · 635 阅读 · 1 评论 -
Activity的launchMode:singleTop,singleTask与singleInstance
如图所示,如果ABC三个Activity的launchMode都是standard,那么按照图示顺序进行Activity调用后,Activity的堆栈为ABCBB;而如果界面ActivityB的launchMode为singleTop,同样的调用关系下,堆栈为ABCB,栈顶Activity为B,在最后一次调用中,被复用了。singleTop模式,适合于与用户交互时保持信心更新的界面Acti原创 2013-12-18 12:29:27 · 6357 阅读 · 2 评论 -
Service的生命周期
一.基础知识服务一般分为两种:1:本地服务,Local Service 用于应用程序内部。在Service可以调用Context.startService()启动,调用Context.stopService()结束。 在内部可以调用Service.stopSelf() 或 Service.stopSelfResult()来自己停止。无论调用了多少次startService(),都只需调用一转载 2015-11-09 14:15:58 · 520 阅读 · 0 评论 -
Android的所有权限说明
Android权限分的很细,但命名比较人性化,Android permission比SymbianCapabilities有了不少改进,下面就来看看权限许可都有哪些定义吧,发现还是比较繁多的,如果发现你的程序某个地方调试错误很可能是Androidpermission的访问控制在作怪,这也是为了安全防止手机成为病毒的场所。Android开发网获取到的消息来看不用购买高昂的数字签名证书,权限许可权由用转载 2015-04-16 15:26:18 · 775 阅读 · 0 评论 -
[Android] Activity configChanges属性
通过设置这个属性可以使Activity捕捉设备状态变化,以下是可以被识别的内容: 设置方法:将下列字段用“|”符号分隔开,例如:“locale|navigation|orientation”ValueDescription“mcc“The IMSI mobile country code (MCC) has changed — that is, a转载 2015-12-18 10:52:46 · 563 阅读 · 1 评论 -
Activity的生命周期
应用启动:onCreate()->onStart()->onResume()应用终止(BACK键):onPause()->onStop()->onDestory()应用停止(HOME键):onPause()->onStop()应用重启:onRestart()->onStart()->onResume()参考:http://blog.csdn.net/android_tuto原创 2015-11-09 12:20:07 · 561 阅读 · 7 评论 -
悬浮窗口的基本原理(使用WindowManager添加View)
Android系统中的“窗口”类型虽然很多,但只有两大类是经常使用的:一是由系统进程管理的,称之为“系统窗口”;第二个就是由应用程序产生的,用于显示UI界面的“应用窗口”。如果大家熟悉WindowManagerService(窗口管理机制WMS)的话,那么一切都很简单。它是一个负责统筹管理所有窗口的一个服务,从始到终一直在运作。之所以扯上WMS,因为它才是大Boss,所有的窗口变化都要通知到它。而转载 2015-12-04 16:31:19 · 3650 阅读 · 3 评论 -
JPEG解码,解决JPG图片显示成花屏的问题
TJpgDec - Tiny JPEG Decompressor原创 2016-09-13 10:24:52 · 3397 阅读 · 1 评论 -
JavaScript调用Android代码
参考官方链接:https://developer.android.com/guide/webapps/webview.html1、AndroidManifest.xml加联网权限。uses-permission android:name="android.permission.INTERNET"/><manifest xmlns:android="http://schemas.and原创 2016-08-22 16:12:55 · 726 阅读 · 0 评论 -
各种屏幕尺寸,以及Android的系统定义
尺寸 (宽 x 高); 尺寸比例; 简称 (全写)352 x 288; 11:9; CIF(Common Intermediate Format)176 X 144; 11:9; QCIF(Quarter CIF) 功能机曾经很常用128 x 96; 4:3; subQCIF320 x 200; 8:5; CGA(Color Graphics Adapter)640 x 350原创 2016-07-18 10:23:49 · 2723 阅读 · 2 评论 -
将Assets中所有目录和文件,都复制到SD卡中
获取Assets根目录下的所有文件和目录,可以直接用:context.getAssets().list("");获取Assets指定目录的所有文件和目录,可以直接用:context.getAssets().list("subdir");将Assets下所有的目录和文件,都复制到sd卡上,实现起来也简单,示例代码如下: public static boolean copyAsset原创 2016-07-15 17:07:41 · 2489 阅读 · 1 评论 -
利用 LeakCanary 来检查 Android 内存泄漏
前言你被概率性的 OOM 困扰么?有时候,OOM 像幽灵一样,挥之不去,可真想把它揪出来时,又捉之不着。或许,是时候用 LeakCanary 来诊断一下了。它是一个用来检查 Android 下内存泄漏的开源库,这篇文章主要介绍其用法、架构和其背后的实现原理。Square 有篇文章介绍了开发这个库的原因。他们的一个付款流程里,需要用到用户的签名,他们直接用 Bitmap 来画签名,B转载 2016-04-29 17:12:15 · 633 阅读 · 0 评论 -
Android统计网络流量
统计网络流量,可用ActivityManager或PackageManager获取各个应用的uid,然后再用TrafficStats获取。示例如下: private void printTrafficStat(Context context) { long n = TrafficStats.UNSUPPORTED; long mRxB = Traffi原创 2016-03-14 19:08:44 · 1179 阅读 · 0 评论 -
Android的计量单位px/dip/dp/sp/pt/in/mm,及相互转换
px :是屏幕的像素点in :英寸mm :毫米pt :磅,1/72 英寸dp :一个基于density的抽象单位,如果一个160dpi的屏幕,1dp=1pxdip :等同于dpsp :同dp相似,但还会根据用户的字体大小偏好来缩放。建议使用sp作为文本的单位,其它用dipdip和px 的关系:QVGA: density=0原创 2013-12-17 12:31:32 · 7532 阅读 · 0 评论 -
WindowManager.LayoutParams
本文参照自:http://developer.android.com/reference/android/view/WindowManager.LayoutParams.htmlandroid.view.WindowManager.LayoutParams extends android.view.ViewGroup.LayoutParamsWindowManager.LayoutPara翻译 2015-12-09 13:52:31 · 750 阅读 · 2 评论 -
layout_gravity 和 gravity以及对应值的详解
gravity 这个英文单词是重心的意思,在这里就表示停靠位置的意思。android:layout_gravity 和 android:gravity 的区别从名字上可以看到,android:gravity是对元素本身说的,元素本身的文本显示在什么地方靠着换个属性设置,不过不设置默认是在左侧的。android:layout_gravity是相对与它的父元素说的,说明元素显示转载 2015-04-07 10:34:23 · 2245 阅读 · 1 评论 -
Activity.this和getApplicationContext()的区别
getApplicationContext()返回应用的上下文,生命周期是整个应用,应用摧毁它才摧毁。Activity.this 返回当前activity的上下文,生命周期只是它所在的Activity,activity 摧毁他就摧毁getBaseContext()返回由构造函数指定或setBaseContext()设置的上下文。this.getApplication转载 2015-04-01 15:17:50 · 2608 阅读 · 0 评论 -
在SrollView中嵌套GridView或ListView
我想在同一个界面中,使用两个GridView,两个GridView一起上下滚动;如果直接将两个GridView添加到同一个界面上,它们是各自滚动的。因此,我考虑使用SrollView,将它们包装一下!但这样做会提示如下信息:The vertically scrolling ScrollView should not contain another vertically scroll原创 2013-12-01 14:38:37 · 10705 阅读 · 10 评论 -
Android属性(android:gravity)的说明
官方网址:http://developer.android.com/reference/android/R.attr.html#gravity它(android:gravity)指明了一个对象,在其自己的边界内,在X轴和Y轴两个方向上,如何放置它的内容。它必须是下面的常量之一,或多个常量异或(|)在一起;与之对应的方法是:void setGravity (int gravity);翻译 2013-11-24 18:38:54 · 11853 阅读 · 0 评论 -
Android的Adapter与BaseAdapter的介绍
官方网址:http://developer.android.com/reference/android/widget/Adapter.html声明源码:frameworks\base\core\java\android\widget\Adapter.java//frameworks\base\core\java\android\widget\Adapter.java/*** Ada翻译 2013-11-24 10:03:39 · 2422 阅读 · 0 评论 -
Android包(android.view.animation)的简介
官方网址:http://developer.android.com/reference/android/view/animation/package-summary.htmlandroid.view.animation包提供处理补间动画的各种类。Android提供两种可以用来创建简单的机制:1、补间(Tween)动画,你告诉Android去为View执行一系列简单的变形(位置,大小,旋翻译 2013-11-24 12:45:23 · 2933 阅读 · 0 评论 -
StateListDrawable与<selector>的各种状态
官方网址:http://developer.android.com/reference/android/graphics/drawable/StateListDrawable.html(它)使你可以为一个简单的Drawable指定一组图片,并且可以通过字符串ID换出可见的条目。在XML中用 元素进行定义,每个状态被定义为一个嵌套的 元素。更多信息,参见Drawable Resourc翻译 2013-11-22 15:35:38 · 1885 阅读 · 0 评论 -
ViewPager的PagerAdapter的介绍
转自:http://blog.csdn.net/kaiwii/article/details/7821846官方英语原文地址:http://developer.android.com/reference/android/support/v4/view/PagerAdapter.html本基类是ViewPager提供填充页面内容的适配器(数据与显示内容之间桥梁)。通常,人们不是直接使用本基类翻译 2013-11-21 19:10:30 · 34119 阅读 · 3 评论 -
View,Widget,Layout,Window,Activity之间的关系
View,Widget,ViewGroup和Layout同属一类;View是界面显示的基本单元,会draw()到Canvas上。ViewGroup继承View,是个容器,内部有View[]数组;有些Widget(如ImageView,TextView等)继承View;有些Widget(如AdapterView,GridView等)继承ViewGroup;所有Layout(如Li原创 2013-11-21 12:39:31 · 5114 阅读 · 0 评论 -
ListView内容变化后的动态刷新
基本知识点: 1.更新适配器Adapter数据源 2.调用适配器Adapter的刷新方法notifyDataSetChanged() 首先需要定义ListView和对应适配器Adapter://用于显示用户列表的ListView private ListView userList = null; //用户列表userList对应的适配器 SimpleAd转载 2013-08-19 17:22:38 · 1554 阅读 · 1 评论 -
Android中的共享设置(SharedPreferences)
官方网址:http://developer.android.com/reference/android/content/SharedPreferences.html源码路径:frameworks\base\core\java\android\content\SharedPreferences.java/** * 访问和修改由getSharedPreferences返回的设置数据的接口。翻译 2013-11-25 12:48:03 · 2131 阅读 · 2 评论 -
在自己应用的XML中,使用系统资源
在自己应用的XML中,如果要使用系统资源,只需指定android包名即可!示例如下: <TextView android:id="@+id/btn_download" android:layout_width="wrap_content" android:layout_height="wrap_content" android:原创 2013-12-05 20:18:58 · 922 阅读 · 1 评论 -
在GridView或ListView的Item中,嵌入Button
在GridView或ListView的Item中,嵌入Button,会有如下的情况发生:尽管设置了OnItemClickListener,点击Item时,却没任何响应。原来是其内部可点击的子控件,获取了焦点。只需添加一个如下的属性即可: android:descendantFocusability="blocksDescendants"原创 2013-12-05 19:47:48 · 1034 阅读 · 1 评论 -
Android中发送短信等普通方法
首先要在Mainfest.xml中加入所需要的权限:为了后面测试方便,干脆把SMS的所有权限加上。方法1:public class testSms extends Activity { private void send1(String phone, String message){ PendingIntent pi = PendingIntent.getA转载 2015-04-03 16:44:26 · 2217 阅读 · 0 评论 -
ViewPager,实现真正的无限循环(定时+手动)
利用定时器,实现循环轮播,很简单;只需在定时器的消息里加如下代码即可: int count = adapter.getCount(); if (count > 1) { // 多于1个,才循环 int index = viewPager.getCurrentItem(); index = (index + 1) % count; viewPager.原创 2014-01-09 12:54:22 · 43415 阅读 · 42 评论 -
ViewPager相互嵌套,里层ViewPager无法滑动
ViewPager嵌套ViewPager,默认情况下,里层的ViewPager,是无法滑动的!原创 2014-01-07 10:19:08 · 28404 阅读 · 14 评论 -
在SrollView中嵌套GridView,滚动条不置顶
如下图,我在Srollview中,嵌套了一个其他控件(Viewpager)和一个GridView;每次滑动或点击切换到该页面时,滚动条总是在GridView的顶部对齐,而不是该页面的最上方。该问题,主要是该页面获得焦点时,其子控件GridView默认获取了焦点,所以,依它进行显示。网上搜了一下解决方法,还不错,列举如下:1、在GridView所在页的其他控件的XML里配置上focu原创 2014-01-07 10:16:34 · 2445 阅读 · 0 评论 -
判断某Activity是否在系统中存在?是否启动过?以及让它自行关闭
有些时候,可能需要判断系统中是否存在某个Activity?它是否已经启动?比如,如果它要是存在,我就用(CLEAR_TOP)的方式启动它,以便它自行关闭! protected void startAndExit() { logi(TAG, "---startAndExit---"); Intent intent = new Intent(this, ActivityMain.cla原创 2013-12-20 11:15:00 · 13878 阅读 · 0 评论 -
Animation,Transformation,Matrix,Interpolator
Animation,是Android种两种动画的一种,即补间(Tween)动画;另外一种是逐帧(Frame)动画。Transformation,是Animation成员变量,它是动画的一帧;它主要拥有透明度(Alpha)和变换矩阵(Matrix)。Matrix,是变换矩阵,主要有平移(Translate),缩放(Scale),旋转(Rotate)和斜切(Skew)等几种,也可组合。In原创 2013-12-15 19:25:10 · 1658 阅读 · 1 评论 -
Android中的Matrix,以及set,pre和post的区别
①sin(α+β)=sinαcosβ+cosαsinβ②cos(α+β)=cosαcosβ-sinαsinβ公式①可以由单位圆方法或托勒密定理推导出来。参见:http://blog.sina.com.cn/s/blog_58260f420100c03j.html原创 2013-12-15 15:15:16 · 11022 阅读 · 1 评论