`
文章列表
Android中跟Touch事件有关的事件有三个:    public boolean dispatchTouchEvent(MotionEvent ev):传递Touch事件至target view(可以是自己)。    public boolean onInterceptTouchEvent(MotionEvent ev):在ViewGroup中定义,用于拦截Touch事件的传递。  ...
研究了一下android的touch事件,从doc到google,算是有了一些初步的理解。以下是经过消化的个人理解,有可能与事实不符,欢迎指正。   首先,来了解一下android的事件机制。android的基本元事件我猜应该有5种,理由是MotionEvent类 ...
一、       概述 dip: device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA、HVGA和QVGA 推荐使用这个,不依赖像素。  好了,入正题吧,先说说px,px就是像素,如果用px,就会用实际像素画,比个如吧,用画一条长度为240px的横线,在480宽的模拟器上看就是一半的屏宽,而在320宽的模拟器上看就是2/3的屏宽了。  而dip,就是把屏幕的高分成480分,宽分成320分。比如你做一条160dip的横线,无论你在320还480的模拟器上,都是一半屏的长度。 px (pixe ...
Android中实现view的更新有两组方法,一组是invalidate,另一组是postInvalidate,其中前者是在UI线程自身中使用,而后者在非UI线程中使用。 Android提供了Invalidate方法实现界面刷新,但是Invalidate不能直接在线程中调用,因为他是违背了单线程模型:Android UI操作并不是线程安全的,并且这些操作必须在UI线程中调用。   Android程序中可以使用的界面刷新方法有两种,分别是利用Handler和利用postInvalidate()来实现在线程中刷新界面。 1,利用invalidate()刷新界面   实 ...
Framework框架 Framework 定义了客户端 组件和服务端组件功能及接口。以下阐述中,“应用程序”一般是指“ .apk ”程序。 框架中包含三个主要部分,分别为服务端、客户端和 Linux 驱动。 6.1.1 服务端 服 ...
我想大多数人,对于这3个东西的概念能区分,但是具体区别在哪却很难说出来。 我这里根据我个人的理解来讲讲我个人对这3个概念的理解。当然这里设计到通用的事件窗口模型等通用GUI设计,我这里就不打算讲了,纯粹从概念上来进行区分。 Activity 是Android应用程序的载体,允许用户在其上创建一个用户界面,并提供用户处理事件的API,如onKeyEvent, onTouchEvent等。 并维护应用程序的生命周期(由于android应用程序的运行环境和其他操作系统不同,android的应用程序是运行在框架之内,所以他的应用程序不能 当当从进程的级别去考虑,而更多是从概念上去 ...
在新浪微博Android客户端的开发的课程中呢要用的得自定义的Dialog,这个Dialog个人觉得还不错,所以就那处理来分享了。如果有兴趣的朋友也可以观看视频,视频中会有详细的介绍(新浪微博Android客户端视频教程区)。首先呢,还是让我们先来看效果图,正所谓有图有真相:下面我们看看是怎么来实现的:第一步:在res/layout目录下新创建一个布局文件:authorize_dialog.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android= ...
全球定位系统(Global Positioning System,GPS),是一个中距离圆型轨道卫星导航系统,可以为地球表面的绝大部分地区(98%)提供准确的定位、测速和高精准的时间标准。GPS广 泛运用于军事、物流、地理、移动电话、数码相机、 ...
 在开发Android移动客户端的时候往往要使用多线程来进行操作,我们通常会将耗时的操作放在单独的线程执行,避免其占用主线程而给用户带来不好的用户体验。但是在子线程中无法去操作主线程(UI 线程),在子线程中操作UI线程会出现错误。因此android提供了一个类Handler来在子线程中来更新UI线程,用发消息的机制更新UI界面,呈现给用户。这样就解决了子线程更新UI的问题。但是费时的任务操作总会启动一些匿名的子线程,太多的子线程给系统带来巨大的负担,随之带来一些性能问题。因此android提供了一个工具类AsyncTask,顾名思义异步执行任务。这个AsyncTask生来就是处理一些后台的比较 ...
package com.anddev.ListMore.Test; import android.app.Activity; import android.os.Bundle; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.ListView; impor ...
<TextView android:id="@+id/tvText1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="text1" android:textSize="28sp" android:textStyle="bold" android:textColor="#FFFFFF" ...
GridView使用AdapterView动态加载数据情况下,无论是在onCreate、Onstart、OnResume方法中调用 getChildCount()均为0,这说明数据并没有在Activity最初启动后立即加载为GridView的子View,那如果要把 GridView实现为Tab风格的菜单,是必须要调用它的状态选中的,如果在Activity中调用的话就会抛 nullpointerexception了,那要怎么操作呢? /** * 构造菜单Adapter * @param menuNameArray 名称 * @param imageResourceArr ...
ui设计时,需要指定某个元素的drawable时,有时候需要告诉Android我希望设置它为透明,偶然在源码中发现,就是以下这段代码: android:background="@android:color/transparent"  
对于一个ImageView,如果我们要加上边框,比如宽为3dp的灰色框,我们怎么做呢? 有种方法,是自己定义一个MyImageView类,继承自ImageView,在其onDraw方法中画canvas。 还有设置一个带有边框的背景图片的方法。   这里给出一种简单方法,既不需要创建衍生的类,也不需要准备图片。采用xml定义的方式实现。 背景定义xml: bg_border1.xml <?xml version="1.0" encoding="UTF-8"?> <shape xmlns:android="http ...
我们看到很多Android应用都具有自动更新功能,用户一键就可以完成软件的升级更新。得益于Android系统的软件包管理和安装机制,这一功能实现起来相当简单,下面我们就来实践一下。首先给出界面效果: 1. 准备知识 在AndroidManifest.xml里定义了每个Android apk的版本标识: <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.myapp" android:versionC ...
Global site tag (gtag.js) - Google Analytics