当前位置:  编程技术>移动开发
本页文章导读:
    ▪Launcher 源码(没写几行阑尾谈。)        Launcher 源码(没写几行阑尾聊。。) Launcher主要由下面这些view东东组成:别看名字千奇百怪,都是view哦private DragLayer mDragLayer; mDragLayer = (DragLayer) findViewById(R.id.drag_layer); private Workspace mWorkspa.........
    ▪ wap入门经典课程(一)        wap入门经典教程(一)   wap入门经典教程(一) 收藏 前言  国际互联网的新技术层出不穷,随着国内中国移动通信和中国联通先后推出WAP手机上网业务,这项新兴的技术也渐渐在国内展.........
    ▪ 太弱了,写个calculator写了二天.       太弱了,写个calculator写了2天... 还是在结石和潘老师的指点下完成的,java,哎,痛啊..完全忘光鸟.. 不过一到公司零零散散的事 是多啊 package com.pako; import android.app.Activity; import android.os.Bundle; imp.........

[1]Launcher 源码(没写几行阑尾谈。)
    来源: 互联网  发布时间: 2014-02-18
Launcher 源码(没写几行阑尾聊。。)
Launcher主要由下面这些view东东组成:

别看名字千奇百怪,都是view哦

private DragLayer mDragLayer;
mDragLayer = (DragLayer) findViewById(R.id.drag_layer);
private Workspace mWorkspace;
mWorkspace = (Workspace) dragLayer.findViewById(R.id.workspace);
private SlidingDrawer mDrawer;
mDrawer = (SlidingDrawer) dragLayer.findViewById(R.id.drawer);
private AllAppsGridView mAllAppsGrid;
mAllAppsGrid = (AllAppsGridView) drawer.getContent();
private HandleView mHandleView;
mHandleView = (HandleView) drawer.findViewById(R.id.all_apps);
DeleteZone deleteZone = (DeleteZone) dragLayer.findViewById(R.id.delete_zone);// 偷偷在setupview时建的,不是类成员。 给handleview set了一个handle



launcher运行时候能看到的。基本也就是这些元素组成的。

 LayoutInflater mInflater;

把各种xml文件对应的layout 部署到调用他的 Context上,即Launcher上。
在onCreate时初始化。


private AppWidgetManager mAppWidgetManager;

appwidget 管理控制相应的 widget app.

private LauncherAppWidgetHost mAppWidgetHost;

继承了AppWidgetHost 用来和appwidget service交互。

private final BroadcastReceiver mApplicationsReceiver = new ApplicationsIntentReceiver();
    private final BroadcastReceiver mCloseSystemDialogsReceiver = new CloseSystemDialogsIntentReceiver();

两个receiver,对相应的intent进行响应。源码里只看到package的三个action:ACTION_PACKAGE_ADDED,ACTION_PACKAGE_REMOVED,ACTION_PACKAGE_CHANGED,还有个ACTION_CLOSE_SYSTEM_DIALOGS

    private final ContentObserver mObserver = new FavoritesChangeObserver();
    private final ContentObserver mWidgetObserver = new AppWidgetResetObserver();

前面那个oversver监视LauncherSettings.Favorites.CONTENT_URI,后面那个监视(LauncherProvider.CONTENT_APPWIDGET_RESET_URI

private static final LauncherModel sModel = new LauncherModel();

LauncherModel用来保存launcher所有运行时的变量到内存中,并提供数据库相关借口方便参数操作。系统一般只有一个Launcherodel,保证正常显示。




protected void onActivityResult(int requestCode, int resultCode, Intent data) 

是像ContextMenu这类返回Activityesul时对桌面图标拾起,移动和创建的比较主要的逻辑,功能包括
REQUEST_PICK_APPLICATION,
REQUEST_PICK_SHORTCUT,
REQUEST_CREATE_SHORTCUT,
REQUEST_PICK_LIVE_FOLDER,
REQUEST_CREATE_LIVE_FOLDER,
REQUEST_PICK_APPWIDGET
REQUEST_CREATE_APPWIDGET
REQUEST_PICK_APPWIDGET
REQUEST_CREATE_APPWIDGET
看名字基本能看出来是做啥的。


private SlidingDrawer mDrawer;

这个就是抽屉的成员了。
一个抽屉包括两部分(其实是SlidingDrawer包括两部分): handler(手可以拉的地方) Content(拉开之后你看见什么)



不写了。。。Launcher太大了
Launcher整个是个dragLayer,由两部分: workspace,slidingDrawer组成。
workspace就是大家喜闻乐见的桌面,默认4*4,16个格子的CellLayout
slidingDrawer就是大家喜闻乐见的抽屉以及垃圾桶,,反正nexus已经不用,估计会废弃
slidingDrawer作为一个抽屉,包括handler和content(allappsgridview)两部分,外加一个回收站deleteZone
喜欢研究的自己看看源码,比啥都强-v-,因为源码挺好懂的


    
[2] wap入门经典课程(一)
    来源: 互联网  发布时间: 2014-02-18
wap入门经典教程(一)
  wap入门经典教程(一) 收藏
前言

  国际互联网的新技术层出不穷,随着国内中国移动通信和中国联通先后推出WAP手机上网业务,这项新兴的技术也渐渐在国内展露头脚。其实早在1997年,由爱立信、诺基亚、摩托罗拉、 Phone.com等公司共同发起了WAP Forum,随后业界众多的公司纷纷加入,并于1998年4月提出了WAP标准第一版。WAP的全称是“Wireless Application Protocol”,目的是为了在手机以及其他无线设备上面传送和显示数据,以及提供各种电信服务。根据Global Mobile杂志的调查显示,目前至少有2亿个无线用户,而诺基亚公司指出在2005年用户数量更会超过10亿。面对如此广大的使用群,众多的大小公司纷纷抢滩WAP,国内的龙头网站诸如新浪、网易、搜狐等等纷纷联手中国电信推出了基于WAP技术的网站。相信随着WTO的临近,中国的互联网发展的将会越来越快,国内的WAP网站也会越来越多,以适应发展迅速的WAP业务。
    作为一名Web网站开发人员,我们在这场席卷全球的无线网络革命中更应当快速跟进,互联网时代是一个不断淘汰的时代,只有随时掌握了最新的技术,才可以跟得上互联网飞一般的脚步。

第一章WAP技术的架构

无线网络和我们目前熟悉的有线网络有很大不同:

第一,市场形态有所不同

1、无线上网设备从一开始就被设计成为易用型,即使没有使用过电脑的用户也可以很快的利用手机快速的在国际互联网上面找到自己想要的信息。
2、就市场大小而言,无线网络的用户成长速度是惊人的,在2001年之前全球有超过5亿3千万移动用户,预计将在2004年突破10亿大关,如此的增长速度令人对WAP的前景充满的信心。
3、有着广阔用户的无线网络,其被期望的值也是很高的,用户希望WAP能够像语音技术一样完善,并且要更加快捷、容易使用等等。
4、WAP手机并不是为在国际互联网上面专门冲浪而设计的,其目的是使得用户在移动的过程中可以方便快捷的存取到互联网上面资料。

第二,网络的环境不同

1、无线网络的带宽较小
2、 无线网络相对目前的国际互联网有较多的等待延迟
3、无线网络的稳定性较差
4、无线接入设备的CPU、内存以及显示屏幕等等有限
  针对以上的种种不同,WAP架构有着不同于普通WEB网站的地方,首先,WAP技术是基于目前的WEB架构之上的,并且延伸到无线网络环境,它使得业界所开发的产品能够具有无线网络独立性、设备平台无关性、以及相互操作性。WAP沿用了目前的WEB架构,从而使得目前投放到WEB的资金、设备、人力等等,都能够继续保留并且沿用。WAP不同指出在于她多出了一个被称之为WAPGateWay的东西,Gateway有何作用呢?以Internet设备来讲,Gateway
就类似于Proxy,当客户端要取得某个网站的叶面的时候,都是由Proxy代理来取得,再交给Client端。而WAP Gateway除了代理手机取得所需要的网站的WML文件之外,还要充当转换HTTP协议和WAP协议的角色,从而使得手机顺利取得资料。WAP Gateway大都由电信局或者ISP所设立,而一般的网站,只要在WEB Server中加入相关的MIME格式设定就好了,就可以直接让用户的手机访问到了。

架构描述如下图:

无线设备(手机、PDA)<---->(WAP协定)<---->WAP网关<--->(HTTP协定)<---->WEB服务器<---->数据库服务器
   可以看到,WAP Gateway在无线网络数据传送的过程中充当的是一个中间人的角色,有了她,现在已经投到互联网上面的资金、设备、人力等等才不会被WAP网站所废弃,相反的是可以更好的利用现有的几乎所有的资源。
   另外,像诺基亚等公司,将WAP网关和WEB服务器整合在了一起,被称之为“Web Application Server”,但是其总体架构和上图仍然是相同的,这里就不再重复了。接下来,我们来看看,为了让用户能够在手机上面访问到我们的网站,应当如何设置目前已经存在的Web Server。

一、Internet Information Server(IIS)

设定方式:打开〔开始〕――〉〔程序〕――〉〔WindowsNT4.0 Option Pack〕――〉
〔Microsoft Internet Information Server〕――〉〔Internet服务管理员〕
在打开的窗口里面选中Server,右键选择“属性”,增加如下的MIME格式:
文件类型 MIME
·WML text/vnd.wap.wml
·WMLC application/vnd.wap.wmlc
·WMLS text/vnd.wap.wmlscript
·WMLSC application/vnd.wap.wmlscriptc
·WBMP image/vnd.wap.wbmp

二、Personal Web Server4

1.打开注册表编辑器,在HKEY_CLASSES_ROOT下面新建一个主键“.WML”;
2.在HKEY_CLASSES_ROOT\.WML下面新建一个字符串,命名为“Content Type”,值为 “text/vnd.wap.wml”;
3.在HKEY_LOCAL_MACHINE\Software\CLASSES\MIME\Database\Content Type新建一个主键“text/vnd.wap.wml”
4.在“text/vnd.wap.wml”主键下面新建一个字符串,名称“Extension”,值为“.WML”;
5.依次重复以上2,3,4步骤,建立其他的MIME类型

三、Linux(Apache)

  使用管理员身份登入系统,在命令行,输入“ps -ef”命令兰看看当前的WWW服务是否正常,
然后使用VI来编辑“/etc/httpd/conf/srm.conf”文件,在AddType处增加如下类型:
AddType text/vnd.wap.wml          .wml
AddType application/vnd.wap.wmlc   .wmlc
AddType text/vnd.wap.wmls         .wmlscript
AddType application/vnd.wap.wmlsc   .wmlscriptc
AddType image/vnd.wap.wbmp       .wbmp
  保存后,将httpd重新启动即可。
    这样设置过后,我们的Web Server就可以让手机访问得到了,当然,对于普通的HTML文件,手机是无法识别的,手机所要读取得文件类型从上面设置过程我们也可以猜测的
出来,对了就是WML文件。在开始设计WML之前,我们先要来熟悉一下我们的WAP网站开发环境。

第二章 手机仿真开发环境
  
所谓的手机仿真开发环境,也就是在普通的PC机器上面使用各种模拟器来模拟手机的真实环 境,从而方便WAP网站的开发,目前较为流行的模拟器主要有以下几个:

一、Nokia Toolkit 1.2/1.3

  可以从这个地址下载这个仿真开发环境:http://www.nokia.com 目前这个WAP工具包的最高版本是1.3beta,诺基亚公司的这个开发包是采用JAVA编写的,所以你在安装之前首先要安装JRE 2.2以上的版本才可以,JRE可以在SUN公司的主页上面下载 (http://www.sun.com)。诺基亚公司的这个开发工具是一个集成环境,可以方便的编译WML/WMLScript,并且有着详细的WML/WMLScript开发文档,用户可以通过地址栏来装载本地正在开发的WML文件,或者直接浏览互联网上面的WAP网站;但是Nokie  Toolkit的运行条件比较苛刻,如果你的机器内存小于128兆,那么运行的速度将大打折扣,没有办法,JAVA编写的程序向来如此的,这也算是一个小小的遗憾吧。1。2的版本没有模拟实际型号的手机,而1.3版本就有模拟产品7110的仿真环境。

二、 Ericsson WapIDE4

  爱立信公司推出的一个WAP开发包,和诺基亚公司的开发包类似,爱立信公司的这个工具也是一个集成开发环境,比较方便,可以从这个地址下载:http://www.ericsson.com/wap 。相对于诺基亚公司的WAP开发工具而言,爱立信公司的这个开发工具就较为简陋一些,并且它的开发文档很少,但是它的运行速度要比诺基亚的 那个开发工具包要快的多,尤其是内存在64兆左右的机器。

三、 UP.SDK 4.0

  Phone.com公司的UP.SDK产品和上面的两种开发工具相比 就是没有集成的IDE开发环境。这个开发工具可以在: http://www.phone.com取得。
   从上面的说明来看,在这三个流行的WAP开发工具中,最具有吸引力的当然就是诺基亚公司的模拟仿真环境了,图形界面以及丰富的开发文档,的确不可多得。另外,还有其他的一些可以浏览WAP网站的软件,比如WinWAP,WAPMan等等,他们都是可以直接在PC机上面直接来浏览WAP网站的软件,值得一提的是,Opera公司推出的4.0版本的浏览器就已经支持直接在浏览器中访问WAP网站了,这个小巧的浏览器功能很是强劲。相信微软也不会坐视不等,可能在IE的后续版本中增加支持WML文件的功能。
   上面的WAP仿真开发环境的安装后的设置都比较简单,稍微懂一些英文的都会看得懂的。

第三章 WML/WMLScript设计

    现在我们来正式设计我们的WAP站点,正如目前的WEB网站是基于HTML语言一样,WAP网站是基于WML语言的,而WML语言其实是遵循目前的XML技术的,不过你如果不懂XML也不要紧的,还是可以很快入门的。
    WML和以往的HTML语言最大的不同是,WML语言的限制非常严格,表现在下面几个方面:
1、 WML中的所有标签、属性都是区分大小写的
2、 对于连续的空格,WML编译器将认为是一个
3、 所有标签的属性都需要使用双引号括起来
4、 所有的标签都必须封闭,对于不成对出现的标签,必须在“>”之前加上“/”,比如“<br/>”
  一定要注意上面的要点,否则很有可能出现手机无法浏览WML的情况出现。做到这一点,只是习惯的问题,主要是我们在HTML时代养成的“懒散”习惯不太好,都是IE的兼容性太好惹得祸,^_^
   在WML中,最基本的单位叫做“card”,他被用来向用户提供交互界面,这其实也是为了照顾到手机的屏幕比较小而设计的,并且手机的处理能力有限,不可能像我们经常使用的IE等浏览器那样一次将整个页面载入,在使用滚动条来察看内容,被设计用于手机浏览的WML文件,一个最大不能超过1.4K,所以我们才将大的叶面分割成为若干个card,来一次显示;多个“card”就组成了一个 “Deck”,也即使一个“层面”,一个WML文件中只允许出现一个层面,正如HTML中只用一个 “<html></html>”标签一样。
    另外还要记住,只要想显示一些文字到手机上面,就必须使用"<p></p>"标签将这一段文字括住。不再罗嗦,下面我们就先看看一个简单的例子:HelloWorld

<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
"http://www.wapforum.org/DTD/wml1_1.1.xml">
<wml>
<card id="hello" title="WAP">
   <p>Hello! World!</p>
 <!-- 注释信息 - ->
</card>
</wml>
  将这个文件存盘,在诺基亚仿真浏览器中浏览就可以看到你向WAP世界的问候语了。我们可以看到,在WAP中的注释方法同HTML中是一样的。要注意的是每一个card的id属性是不允许省略的,并且在默认的情况下手机显示的是这个“层面”的第一个“卡片”,当然我们也可以直接指定要浏览的特定“卡片”,后面我们会提到。
    怎么样,看看这第一个例子,觉得WML并不是很难吧,要比HTML还要简单呢,只是它的限制稍微多一些而已,接下来我们来看看WML中其他有用的标签:

标签:<wml></wml>
描述:定义“层面”的开始和结束,一个WML文件只允许一个层面

标签:<card></card>
描述:定义“卡片”的开始和结束,多个“卡片”组成一个“层面”
id属性必须要给出,用以区分不同的“卡片”
title属性指明提示信息

标签:<p></p>
描述:用来显示文字的标签

标签:<img src="" alt="" localsrc="" align="left" height="" width="" vspace="" hspace="">
描述: alt属性用来指定图片没有正常显示时的提示信息 ,src属性指定图片的路径
以上两个属性是必须的
其他的属性类似于HTML语言

标签:<do type="" label="" name="" option=""></do>
描述: 执行某些动作,其中属性type是必须的。

type值         触发事件
accept           触发确认
delete     触发删除
help      触发帮助 
options     触发选择
prev      返回上一页
reset      清除目前状态

标签:<go href=""/>
描述:当用户点击了do标签之后,就可以使用这个标签
连接到其他的“卡片”或“层面”
要指定它的“href”属性。

标签:<timer value="">
描述:设定计时器的时间,以0.1秒为单位,同一个“卡 片”只能有一个timer标签。到达特定时间后会触 发ontimer事件

标签:<a href=""> </a>
描述:类似HTML中的同样标签

标签:<go method="" href=""></go>
描述:类似于HTML中的form标签,method属性的值:post/get

标签:<postfield name="" value=""/>
描述:设定变量的名字和值,这些值可以被服务器端的ASP,JSP等程序捕获。

标签:<input type="text/password" name="" value=""/>
描述:提供输入的表单,类似于HTML$(name)
描述:获取变量的值
   以上就是在WML中经常用到的标签,当然还有很多标签,你可以在Nokia Toolkit中找到详尽的语法,这里就不再重复了。要注意的是,在WML中使用的图片格式不同于平常的图片,而是要使用WBMP格式的图片,这种图片是黑白两色的专为手机提供的图片格式,你可以下载Photoshop的WBMP插件,用来编辑WBMP格式的图片,或者网络上面有很多的工具可以转换其他格式的图片到WBMP格式。
    接下来我们要介绍一下运行在手机上面的script程序:WMLScriptWMLScript语言和JavaScript语言非常相似,不同之处在于WMLScript语言必须放在一个WMLS的文件里面,并不像javascript那样可以镶嵌在HTML中, 并且WMLS文件的大小也不要超过1.4K


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/panzhiqi/archive/2007/01/31/1499070.aspx

    
[3] 太弱了,写个calculator写了二天.
    来源: 互联网  发布时间: 2014-02-18
太弱了,写个calculator写了2天...
还是在结石和潘老师的指点下完成的,java,哎,痛啊..完全忘光鸟..

不过一到公司零零散散的事 是多啊


package com.pako;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnFocusChangeListener;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.TextView;
import android.widget.Button;
public class calzpc extends Activity implements OnClickListener {
   
 private TextView operator;
 private Button num1;
 private Button num2;
 private Button num3;
 private Button num4;
 private Button num5;
 private Button num6;
 private Button num7;
 private Button num8;
 private Button num9;
 private Button num10;
 private Button add;
 private Button cancel;
 private Button decrease;
 private Button multiply;
 private Button devide;
 private Button equal_key;
 private EditText result;
 private EditText input1;
 private EditText input2;
 private int input1value = 0;
 private int input2value = 0;
 private String opstr ="";
 private float opresult =0;
 private EditText input=input1;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
//        mImageButton1 =(ImageButton) findViewById(R.id.myImageButton1);
//        mButton1=(Button)findViewById(R.id.myButton1);
//        mTextView1 = (TextView) findViewById(R.id.myTextView1);
        num1 = (Button)findViewById(R.id.num1);
        num2 = (Button)findViewById(R.id.num2);
        num3 = (Button)findViewById(R.id.num3);
        num4 = (Button)findViewById(R.id.num4);
        num5 = (Button)findViewById(R.id.num5);
        num6 = (Button)findViewById(R.id.num6);
        num7 = (Button)findViewById(R.id.num7);
        num8 = (Button)findViewById(R.id.num8);
        num9 = (Button)findViewById(R.id.num9);
        add = (Button)findViewById(R.id.add);
        decrease = (Button)findViewById(R.id.decrease);
        multiply = (Button)findViewById(R.id.multiply);
        devide = (Button)findViewById(R.id.devide);
        cancel = (Button)findViewById(R.id.cancel);
        equal_key = (Button)findViewById(R.id.equal_key);
        operator = (TextView)findViewById(R.id.operator);
        input1 = (EditText)findViewById(R.id.input1);
        input2 = (EditText)findViewById(R.id.input2);
        result = (EditText)findViewById(R.id.result);
        num1.setOnClickListener(this);
        num2.setOnClickListener(this);
        num3.setOnClickListener(this);
        num4.setOnClickListener(this);
        num5.setOnClickListener(this);
        num6.setOnClickListener(this);
        num7.setOnClickListener(this);
        num8.setOnClickListener(this);
        num9.setOnClickListener(this);
        add.setOnClickListener(this);
        decrease.setOnClickListener(this);
        multiply.setOnClickListener(this);
        devide.setOnClickListener(this);
        cancel.setOnClickListener(this);
        equal_key.setOnClickListener(this);
        input1.setOnClickListener(this);
        input2.setOnClickListener(this);
       
    }

 public void onClick(View v) {
  int inputid = v.getId();
  if (inputid == R.id.input1)
  {
   input = input1;
  }
  else if (inputid == R.id.input2)
  {
   input = input2;
  }
  else
  {
   CharSequence label = ((Button) v).getText();
   Log.i("isnumberkey",String.valueOf(Character.isDigit(label.charAt(0))) );
   Log.i("is_cancel=",String.valueOf(String.valueOf(label).charAt(0)=='c') );
   if (String.valueOf(label).charAt(0)=='=')
   {
    Log.i("down the equal_key","1");
    opresult = operator(opstr.charAt(0));
    result.setText(String.valueOf(opresult));
   }
   else
   {
    if (String.valueOf(label).charAt(0)=='c')
     {
     operator.setText("");
     input1.setText("");
     input2.setText("");
     }
    else{
     if (Character.isDigit(label.charAt(0)))
     {
      Log.i("enter into number key","enter into number key");
      numkey(Integer.valueOf(((Button)v).getText().toString()));
      
     }
     else
      {
      Log.i("enter into operator key","enter into operator key");
      operator.setText(label);
      opstr = String.valueOf(label);
      }
     }
   }
  }
 }
 public void numkey(int keynum)
 {
  
 String snum = String.valueOf(keynum);
 String prestr = String.valueOf(input.getText());
 String inputstr = prestr+snum;
 Log.i("inputstr",inputstr);
 input.setText(inputstr);
//  if (String.valueOf(input1.getText()).length()<1)
//  {input1.setText(snum);
//   input1value = keynum;
//  Log.i("input1_text=",String.valueOf(input2.getText()));}
// else
//  {input2.setText(snum);
//   input2value = keynum;
//  Log.i("input2_text",String.valueOf(input2.getText()));}
 }
 public float operator(char opchar)
 { 
  float int1 = Float.valueOf(String.valueOf(input1.getText()));
  float int2 = Float.valueOf(String.valueOf(input2.getText()));
  float result = 0;
  switch (opchar)
  {
  case '+':
   result = int1+int2;
   break;
  case '-':
   result = int1-int2;
   break;
  case '*':
   result = int1*int2;
   break;
  case '/':
  
   if (int2 ==0)
   {
    result =0;
    break;
   }
   else
   {
    result = int1/int2;
    break;
   }
  default:result=0;
    break;
  }
  Log.i("result=",String.valueOf(result));
  return result;
 }
}

    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3