当前位置:  编程技术>移动开发
本页文章导读:
    ▪错误-软件工程师的好伙伴        异常---程序员的好伙伴        Exception-----异常可谓是我们程序员,在开发程序的时候,常见的伙伴,有时候,它让你苦不堪言,调试半天也弄不出错在哪里了。今天就这个问题,根据自己.........
    ▪ 阻截Home键        拦截Home键 主要就是重写 onAttachedToWindow () 和 onKeyDown (...,...) 这两个方法。 前者是起到拦截作用的,后者是监听到HOME按键事件后的动作,如果没动作可以不要 onKeyDown。还要注意,要加权限.........
    ▪ 惯用控件的使用方法       常用控件的使用方法 在 Android 中使用各种控件(View)   TextView - 文本显示控件  Button - 按钮控件  ImageButton - 图片按钮控件  ImageView - 图片显示控件  CheckBox - 复选框控件  RadioButton - 单选框控.........

[1]错误-软件工程师的好伙伴
    来源: 互联网  发布时间: 2014-02-18
异常---程序员的好伙伴

       Exception-----异常可谓是我们程序员,在开发程序的时候,常见的伙伴,有时候,它让你苦不堪言,调试半天也弄不出错在哪里了。今天就这个问题,根据自己的开发经验,总结自己经常遇到的各种异常,仅供参考,不足之处,望见谅。

 

一.NullPointException空指针异常
     1.概述:该异常经常出现,主要原因是没有正确的理解对象这个概念,我们知道,在java中只有对象才可以用来调用方法,那我们如果只是声明一个变量,就不能用来调用方法。此时调用方法就会出现空指针异常。
     2.处理办法:我们只需要找到跑出异常的那一句话,然后找到相应的变量,最后,让该变量指向一个对象就可以了。
 3.例句:

public class ExceptionTest {
	public static void main(String[] args) {
		//NullPointException,空指针异常
		String str = null;
		str.length();
	}
}

 

4.抛出异常,
 Exception in thread "main" java.lang.NullPointerException
 at study.exception.ExceptionTest.main(ExceptionTest.java:5)。
 也就是str.length(),这一句话。我们发现,str是一个空的对象。在这里只需要给str一个值就可以了。(String 类比较特殊)

 

二.NumberFormatException 字符串转换异常
 1.概述:应用程序试图将字符串转换成一种数值类型,但该字符串不能转换为适当格式时,抛出该异常。
 2.处理办法:根据不同的题意,看看这个方法适合什么范围的树枝转换
 3.例句:

public class ExceptionTest {
        public static void main(String[] args) {
	//NumberFormatException,字符串转换成一种数值类型出现异常
	String str = "123abc";
	int s = Integer.parseInt(str);
            }
}

 

4.抛出异常:
 Exception in thread "main" java.lang.NumberFormatException: For input string: "123abc"
 at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
 at java.lang.Integer.parseInt(Integer.java:492)
 at java.lang.Integer.parseInt(Integer.java:527)
 at study.exception.ExceptionTest.main(ExceptionTest.java:5)
 我们知道,parseInt(),转换的范围是str中的字符必须是0-9之间的,修改一下范围即可,我们明白,出现这个异常后,我们要立即查看这个函数适合的范围对不对。

 

三.ClassCastException  强制转型出现的异常
 1.概述:当试图将对象强制转换为不是实例的子类时,抛出该异常。
 2.处理办法:查看该类型和转换以后的类型是不是“父子关系”,如果不是,则转型失败。
 3.例句:

public class ExceptionTest {
 	 public static void main(String[] args) {
   	//ClassCastException,父类向下转型的时候,会出现这个异常
   	Object obj = new JTextArea();
   	JButton jb = (JButton)obj;
  	}
 }

 

4.异常:
 Exception in thread "main" java.lang.ClassCastException: javax.swing.JTextArea cannot be cast to javax.swing.JButton
 at study.exception.ExceptionTest.main(ExceptionTest.java:4).向下转型的基础是,两个类型必须是父子类的关系,
 才有可能转型,即使如此,有时候,强制转型有时候也会出现错误。

 

四.IndexOutOfBoundsException 数组越界异常
 1.概述:指示某排序索引(例如对数组、字符串或向量的排序)超出范围时抛出。
 2.处理办法:这里我们看看抛出的异常的后面,会标明是数组是哪个位置越界了,我们找到这个位置,将数目改变一下即可。
 3.例句:
 

public class ExceptionTest {
  	public static void main(String[] args) {
   	//IndexOutOfBoundsException,数组越界,会出现这个异常
   	int[] a = new int[10];
   	a[10] = 10;
 	}
 }

 

 4。异常:
 Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
 at study.exception.ExceptionTest.main(ExceptionTest.java:5)
 异常中有个10,表明,我们这个数组的第10个位置的时候越界了。我们就知道该如何处理了。

 

五.NoSuchFieldException 没有这个字段异常
 1.概述:类不包含指定名称的字段时产生的信号。
 2.处理办法:这个经常用于文件的操作过程当中,我们要打开一个文件,但是该文件不存在,就会抛出这个异常
 3.例句:
 

public class ExceptionTest {
  	public static void main(String[] args) {
   		//NoSuchFieldException,数组越界,会出现这个异常
   		try {
   		 FileOutputStream file = new FileOutputStream("111");
   		} catch (FileNotFoundException e) {
   		 e.printStackTrace();
   		}
  	}
 }

 

4.异常,这里如果是在eclipse开发的话,会给你主动提示,这里是要捕获没有这个文件的异常

 

六.NoSuchMethodException没有这个方法的异常
 1.概述:无法找到某一特定方法时,抛出该异常。这里就不做过多的描述了,很简单,找到看看这个方法是不是存在。
 
总结:异常是我们在编程不时候,很容易遇到的事情,我们需要灵活的学会捕捉这个异常,处理方法:
   1.一般我们用这个方法来进行处理:
 

try{
    可能出现异常的代码
  }catch(Exception e) {
    捕获后处理的办法,经常用e.printStackTrace();这个方法来打印异常的详细信息
  }finally {
    不管是不是捕获到了异常,这里都会执行
 }

 
      2.还有另一种方法,直接throws将相应的异常抛出,不过这个在大型的编程项目里,会比较麻烦。
只要是调用了这个方法的方法,我们要不断的抛出异常。

      大家一起加油,争取早日交到异常这个好朋友!


    
[2] 阻截Home键
    来源: 互联网  发布时间: 2014-02-18
拦截Home键
主要就是重写 onAttachedToWindow () 和 onKeyDown (...,...) 这两个方法。

前者是起到拦截作用的,后者是监听到HOME按键事件后的动作,如果没动作可以不要 onKeyDown。
还要注意,要加权限:
<uses-permission android:name="android.permission.DISABLE_KEYGUARD "></uses-permission>

// 转载请注明出处: http://aking86.iteye.com/admin/blogs/1317186
     虽然网上有很多,但介绍的都不是很详细,也不算深入,我在这里研究了下,并把日志给捞了出来。
     里面包括 HOME拦截, BACK拦截,打捞日志。
@Override
    public void onAttachedToWindow () {
        System.out.println("Page01 -->onAttachedToWindow");
        this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD); 
        super.onAttachedToWindow();
    }


@Override
    public boolean onKeyDown (int keyCode, KeyEvent event) {
        System.out.println("Page01 -->onKeyDown: keyCode: " + keyCode);
        if (KeyEvent.KEYCODE_HOME == keyCode) {
            System.out.println("HOME has been pressed yet ..."); 
            // android.os.Process.killProcess(android.os.Process.myPid()); 
            Toast.makeText(getApplicationContext(), "按了HOME 键...",
                    Toast.LENGTH_LONG).show();
        } else if (KeyEvent.KEYCODE_BACK == keyCode) {
            System.out.println("BACK has been pressed yet ..."); //按了返回 
        }
        return super.onKeyDown(keyCode, event); // 不会回到 home 页面 
    }


通过打印日志,还得出一个结论:
onAttachedToWindow() 方法只会执行一次,也就是在第一次 onResume() 之后,以后就不再执行了。
下面是我打印的日志。包含了Activity的生命周期,查看起来很方便。操作流程也就是打开一个页面,先按下HOME,弹出提示,再按下一个Button,里面是 finish()方法。

[root ]# adb logcat -d -v time -s System.out:I 
12-19 13:19:43.290 I/System.out( 824): Page01 -->onStart
12-19 13:19:43.290 I/System.out( 824): Page01 -->onResume
12-19 13:19:43.369 I/System.out( 824): Page01 -->onAttachedToWindow 
12-19 13:19:50.959 I/System.out( 824): Page01 -->onKeyDown: keyCode: 3 
12-19 13:19:50.959 I/System.out( 824): HOME has been pressed yet ... 
12-19 13:22:17.999 I/System.out( 824): Page01 click to exit(finish)
12-19 13:22:18.079 I/System.out( 824): Page01 -->onPause
12-19 13:22:18.590 I/System.out( 824): Page01 -->onStop
12-19 13:22:18.590 I/System.out( 824): Page01 -->onDestroy


以下是进了第一个页面,再进第二个页面,再回到第一个页面,再按HOME按键。正常拦截到。

[root ]# adb logcat -d -v time -s System.out:I 
12-19 13:42:09.900 I/System.out( 852): Page01 -->onStart
12-19 13:42:09.910 I/System.out( 852): Page01 -->onResume
12-19 13:42:09.969 I/System.out( 852): Page01 -->onAttachedToWindow 
12-19 13:42:19.659 I/System.out( 852): Page01 click to page02
12-19 13:42:19.721 I/System.out( 852): Page01 -->onPause
12-19 13:42:19.990 I/System.out( 852): Page02 -->onStart
12-19 13:42:19.990 I/System.out( 852): Page02 -->onResume
12-19 13:42:20.430 I/System.out( 852): Page01 -->onStop
12-19 13:42:29.149 I/System.out( 852): Page02 click to page01 (finish)
12-19 13:42:29.229 I/System.out( 852): Page02 -->onPause
12-19 13:42:29.349 I/System.out( 852): Page01 -->onStart
12-19 13:42:29.349 I/System.out( 852): Page01 -->onResume
12-19 13:42:29.752 I/System.out( 852): Page02 -->onStop
12-19 13:42:29.752 I/System.out( 852): Page02 -->onDestroy
12-19 13:42:45.779 I/System.out( 852): Page01 -->onKeyDown: keyCode: 3 
12-19 13:42:45.779 I/System.out( 852): HOME has been pressed yet ... 

    
[3] 惯用控件的使用方法
    来源: 互联网  发布时间: 2014-02-18
常用控件的使用方法

在 Android 中使用各种控件(View)  
TextView - 文本显示控件 
Button - 按钮控件 
ImageButton - 图片按钮控件 
ImageView - 图片显示控件 
CheckBox - 复选框控件 
RadioButton - 单选框控件 
AnalogClock - 钟表(带表盘的那种)控件 
DigitalClock - 电子表控件  
 
 
1、TextView 的 Demo 
textview.xml 
 
代码  
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
     
    <!-- 
        TextView - 文本显示控件 
    --> 
    <TextView android:layout_width="fill_parent" 
        android:layout_height="wrap_content" android:id="@+id/textView" /> 
         
</LinearLayout> 
 
 
_TextView.java 
 
代码  
package com.webabcd.view; 
 
import android.app.Activity; 
import android.os.Bundle; 
import android.widget.TextView; 
 
public class _TextView extends Activity { 
 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        // TODO Auto-generated method stub 
        super.onCreate(savedInstanceState); 
        this.setContentView(R.layout.textview); 
 
        // 设置 Activity 的标题 
        setTitle("TextView"); 
         
        TextView txt = (TextView) this.findViewById(R.id.textView); 
        // 设置文本显示控件的文本内容,需要换行的话就用“\n” 
        txt.setText("我是 TextView\n显示文字用的"); 
    } 

 
 
 
2、Button 的 Demo 
button.xml  
代码  
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
     
    <TextView android:layout_width="fill_parent" 
        android:layout_height="wrap_content" android:id="@+id/textView" /> 
     
     <!-- 
         Button - 按钮控件 
     -->     
    <Button android:id="@+id/button" 
        android:layout_width="wrap_content" android:layout_height="wrap_content"> 
    </Button> 
     
</LinearLayout> 
 
 
_Button.java 
 
代码  
package com.webabcd.view; 
 
import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 
 
public class _Button extends Activity { 
 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        // TODO Auto-generated method stub 
        super.onCreate(savedInstanceState); 
        this.setContentView(R.layout.button); 
 
        setTitle("Button"); 
         
        Button btn = (Button) this.findViewById(R.id.button); 
        btn.setText("click me"); 
         
        // setOnClickListener() - 响应按钮的鼠标单击事件 
        btn.setOnClickListener(new Button.OnClickListener(){ 
            @Override 
            public void onClick(View v) { 
                TextView txt = (TextView) _Button.this.findViewById(R.id.textView); 
                txt.setText("按钮被单击了"); 
            } 
        }); 
    } 

 
 
 
3、ImageButton 的 Demo 
imagebutton.xml 
 
代码  
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
     
    <TextView android:layout_width="fill_parent" 
        android:layout_height="wrap_content" android:id="@+id/textView" /> 
     
    <!-- 
        ImageButton - 图片按钮控件 
    -->     
    <ImageButton android:id="@+id/imageButton" 
        android:layout_width="wrap_content" android:layout_height="wrap_content"> 
    </ImageButton> 
     
</LinearLayout> 
 
 
_ImageButton.java 
 
代码  
package com.webabcd.view; 
 
import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.ImageButton; 
import android.widget.TextView; 
 
public class _ImageButton extends Activity { 
 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        // TODO Auto-generated method stub 
        super.onCreate(savedInstanceState); 
        this.setContentView(R.layout.imagebutton); 
 
        setTitle("ImageButton"); 
         
        ImageButton imgButton = (ImageButton) this.findViewById(R.id.imageButton); 
        // 设置图片按钮的背景 
        imgButton.setBackgroundResource(R.drawable.icon01); 
         
        // setOnClickListener() - 响应图片按钮的鼠标单击事件 
        imgButton.setOnClickListener(new Button.OnClickListener(){ 
            @Override 
            public void onClick(View v) { 
                TextView txt = (TextView) _ImageButton.this.findViewById(R.id.textView); 
                txt.setText("图片按钮被单击了"); 
            } 
        }); 
    } 

 
 
 
4、ImageView 的 Demo 
imageview.xml 
 
代码  
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
     
    <!-- 
        ImageView - 图片显示控件 
    --> 
    <ImageView android:id="@+id/imageView" android:layout_width="wrap_content" 
        android:layout_height="wrap_content"></ImageView> 
         
</LinearLayout> 
 
 
_ImageView.java 
 
代码  
package com.webabcd.view; 
 
import android.app.Activity; 
import android.os.Bundle; 
import android.widget.ImageView; 
 
public class _ImageView extends Activity { 
 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        // TODO Auto-generated method stub 
        super.onCreate(savedInstanceState); 
        this.setContentView(R.layout.imageview); 
 
        setTitle("ImageView"); 
         
        ImageView imgView = (ImageView) this.findViewById(R.id.imageView); 
        // 指定需要显示的图片 
        imgView.setBackgroundResource(R.drawable.icon01); 
    } 

 
 
 
5、CheckBox 的 Demo 
checkbox.xml 
 
代码  
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
     
    <TextView android:layout_width="fill_parent" 
        android:layout_height="wrap_content" android:id="@+id/textView" /> 
         
    <!-- 
        CheckBox - 复选框控件 
    --> 
    <CheckBox android:text="CheckBox01" android:id="@+id/chk1" 
        android:layout_width="wrap_content" android:layout_height="wrap_content"></CheckBox> 
    <CheckBox android:text="CheckBox02" android:id="@+id/chk2" 
        android:layout_width="wrap_content" android:layout_height="wrap_content"></CheckBox> 
    <CheckBox android:text="CheckBox03" android:id="@+id/chk3" 
        android:layout_width="wrap_content" android:layout_height="wrap_content"></CheckBox> 
         
</LinearLayout> 
 
 
_CheckBox.java 
 
代码  
package com.webabcd.view; 
 
import android.app.Activity; 
import android.os.Bundle; 
import android.widget.CheckBox; 
import android.widget.CompoundButton; 
import android.widget.TextView; 
 
public class _CheckBox extends Activity { 
 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        // TODO Auto-generated method stub 
        super.onCreate(savedInstanceState); 
        this.setContentView(R.layout.checkbox); 
 
        setTitle("CheckBox"); 
         
        CheckBox chk = (CheckBox) this.findViewById(R.id.chk1); 
        // setOnCheckedChangeListener() - 响应复选框的选中状态改变事件 
        chk.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
            @Override 
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
                TextView txt = (TextView) _CheckBox.this.findViewById(R.id.textView); 
                txt.setText("CheckBox01 的选中状态:" + String.valueOf(isChecked));                 
            } 
        }); 
    } 

 
 
 
6、RadioButton 的 Demo 
radiobutton.xml 
 
代码  
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
     
    <TextView android:layout_width="fill_parent" 
        android:layout_height="wrap_content" android:id="@+id/textView" /> 
         
    <!-- 
        RadioButton - 单选框控件 
        RadioGroup - 对其内的单选框控件做分组 
            checkedButton - 指定组内被选中的单选框的 ID 
    --> 
    <RadioGroup android:id="@+id/radioGroup" 
        android:layout_width="fill_parent" android:layout_height="fill_parent" 
        android:checkedButton="@+id/rad3" android:orientation="horizontal" 
        android:gravity="center_vertical|center_horizontal"> 
        <RadioButton android:text="rad1" android:id="@+id/rad1" 
            android:layout_width="wrap_content" android:layout_height="wrap_content"></RadioButton> 
        <RadioButton android:text="rad2" android:id="@+id/rad2" 
            android:layout_width="wrap_content" android:layout_height="wrap_content"></RadioButton> 
        <RadioButton android:text="rad3" android:id="@+id/rad3" 
            android:layout_width="wrap_content" android:layout_height="wrap_content"></RadioButton> 
    </RadioGroup> 
     
</LinearLayout> 
 
 
_RadioButton.java 
 
代码  
package com.webabcd.view; 
 
import android.app.Activity; 
import android.os.Bundle; 
import android.widget.RadioButton; 
import android.widget.RadioGroup; 
import android.widget.TextView; 
 
public class _RadioButton extends Activity { 
 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        // TODO Auto-generated method stub 
        super.onCreate(savedInstanceState); 
        this.setContentView(R.layout.radiobutton); 
 
        setTitle("RadioButton"); 
         
        RadioGroup group = (RadioGroup) this.findViewById(R.id.radioGroup); 
        // setOnCheckedChangeListener() - 响应单选框组内的选中项发生变化时的事件 
        group.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {     
            @Override 
            public void onCheckedChanged(RadioGroup group, int checkedId) { 
                TextView txt = (TextView) _RadioButton.this.findViewById(R.id.textView); 
                txt.setText(((RadioButton)findViewById(checkedId)).getText() + " 被选中");                     
            } 
        });  
    } 

 
 
 
7、AnalogClock 的 Demo 
analogclock.xml 
 
代码  
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
     
    <!-- 
        AnalogClock - 钟表(带表盘的那种)控件 
    --> 
    <AnalogClock android:id="@+id/analogClock" 
        android:layout_width="wrap_content" android:layout_height="wrap_content"> 
    </AnalogClock> 
     
</LinearLayout> 
 
 
_AnalogClock.java 
 
代码  
package com.webabcd.view; 
 
import android.app.Activity; 
import android.os.Bundle; 
 
public class _AnalogClock extends Activity { 
 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        // TODO Auto-generated method stub 
        super.onCreate(savedInstanceState); 
        this.setContentView(R.layout.analogclcok); 
 
        setTitle("AnalogClock"); 
    } 

 
 
 
8、DigitalClock 的 Demo 
digitalclock.xml 
 
代码  
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
     
    <!-- 
        DigitalClock - 电子表控件 
    --> 
    <DigitalClock android:id="@+id/digitalClock" 
        android:layout_width="wrap_content" android:layout_height="wrap_content"> 
    </DigitalClock> 
     
</LinearLayout> 
 
 
_DigitalClock.java 
 
代码  
package com.webabcd.view; 
 
import android.app.Activity; 
import android.os.Bundle; 
 
public class _DigitalClock extends Activity { 
 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        // TODO Auto-generated method stub 
        super.onCreate(savedInstanceState); 
        this.setContentView(R.layout.digitalclcok); 
 
        setTitle("DigitalClcok"); 
    } 



http://www.cnblogs.com/webabcd/archive/2010/01/22/1653811.html

    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
HTML教程 iis7站长之家
▪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