Android进一步学习

Android-吐司处理
//Toast 通知可以改变通知位置.
toast.setGravity(Gravity.TOP|Gravity.LEFT, 0, 0);
//自定义吐司
Toast toast = new Toast(getApplicationContext());
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.setDuration(Toast.LENGTH_LONG);
//布局文件layout.xml
toast.setView(layout);
toast.show();

Android应用程序架构
src/  java原代码存放目录
gen/ 自动生成目录
gen 目录中存放所有由Android开发工具自动生成的文件。目录中最重要的就是R.java文件。 这个文件由Android开发工具自动产生的。Android开发工具会自动根据你放入res目录的xml界面文件、图标与常量,同步更新修改R.java文件。正因为R.java文件是由开发工具自动生成的,所以我们应避免手工修改R.java。R.java在应用中起到了字典的作用,它包含了界面、图标、常量等各种资源的id,通过R.java,应用可以很方便地找到对应资源。另外编绎器也会检查R.java列表中的资源是否被使用到,没有被使用到的资源不会编绎进软件中,这样可以减少应用在手机占用的空间。
res/ 资源(Resource)目录
在这个目录中我们可以存放应用使用到的各种资源,如xml界面文件,图片或数据。具体请看ppt下方备注栏。
AndroidManifest.xml功能清单文件
 这个文件列出了应用程序所提供的功能,在这个文件中,你可以指定应用程序使用到的服务(如电话服务、互联网服务、短信服务、GPS服务等等)。另外当你新添加一个Activity的时候,也需要在这个文件中进行相应配置,只有配置好后,才能调用此Activity。
default.properties项目环境信息,一般是不需要修改此文件

电话拔号器
因为应用要使用手机的电话服务,所以要在清单文件AndroidManifest.xml中添加电话服务权限:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="cn.itcast.action"
      android:versionCode="1"
      android:versionName="1.0">
      略....
    <uses-sdk android:minSdkVersion=“6" />
    <uses-permission android:name="android.permission.CALL_PHONE"/>
</manifest>

界面布局:
<?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:text="@string/inputmobile"/>
   
    <EditText android:layout_width="fill_parent" android:layout_height="wrap_content"
    android:id="@+id/mobile"/>
   
    <Button android:layout_width="wrap_content" android:layout_height="wrap_content"
    android:text="@string/button"
    android:id="@+id/button"/>
</LinearLayout>
LinearLayout (线性布局)、AbsoluteLayout(绝对布局)、RelativeLayout(相对布局)、TableLayout(表格布局)、FrameLayout(帧布局)

Activity:
public class DialerAction extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button button = (Button)findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener(){
public void onClick(View v) {
        EditText editText = (EditText)findViewById(R.id.mobile);
        Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:"+ editText.getText()));
       DialerAction.this.startActivity(intent);
}
        });
    }
}
测试步骤:
  1>在Eclipse中运行此应用
 2>在Dos窗口中进入android SDK安装路径的tools目录,输入以下命令再开启一个Android模拟器:
  emulator -data itcast 
   注:itcast为用户数据存取文件,如果该文件不存在,默认在tools目录创建该文件
  
3>在电话扰号器中输入上图现显的电话号码

“尚未注册网络”错误信息的解决办法
打开Android模拟器时,出现无信号,拔打电话或发短信时,提示“尚未注册网络”错误信息的解决方案如下。
 场景一:你的电脑没有连接上互联网,同时也没有在局域网。
  解决办法:右键点击网上邻居,选择"属性",在网络连接窗口中右键点击"本地连接",选择"属性",设置TCP/IP属性如下:
     IP地址:192.168.1.100
     子网掩码:255.255.255.0
     默认网关:192.168.1.100
     首选DNS服务器:192.168.1.100
 场景二:你的电脑没有连接上互联网,但在局域网。
  解决办法:右键点击网上邻居,选择"属性",在网络连接窗口中右键点击"本地连接",选择"属性",设置TCP/IP属性如下:
     IP地址:设置成你所在局域网的IP,如:192.168.1.100
     子网掩码:设置成你所在局域网的掩码,如:255.255.255.0
     默认网关:设置成你所在局域网的网关,一般网关的IP格式为:*.*.*.1,如:192.168.1.1
     首选DNS服务器:设置成你所在局域网的路由器IP,一般路由器的IP格式为:*.*.*.1,如:192.168.1.1
最后一种解决方案是:让你的电脑连接上互联网。


短信发送器
因为应用要使用手机的短信服务,所以要在清单文件AndroidManifest.xml中添加短信服务权限:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="cn.itcast.sms"
      android:versionCode="1"
      android:versionName="1.0">
     略....
     <uses-sdk android:minSdkVersion=“4" />
    <uses-permission android:name="android.permission.SEND_SMS"/>
</manifest>

界面布局:
<?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:text="@string/inputmobile"/>
   
    <EditText android:layout_width="fill_parent" android:layout_height="wrap_content"
    android:id="@+id/mobile"/>
   <TextView android:layout_width="fill_parent" android:layout_height="wrap_content"
    android:text="@string/content"/>
   
    <EditText android:layout_width="fill_parent" android:layout_height="wrap_content"
    android:minLines="3"
    android:id="@+id/content"/>
  
    <Button android:layout_width="wrap_content" android:layout_height="wrap_content"
    android:text="@string/button"
    android:id="@+id/button"/>
</LinearLayout>

Activity主要代码:
String mobile = mobileView.getText().toString();
String content = contentView.getText().toString();
 SmsManager smsManager = SmsManager.getDefault();
 PendingIntent sentIntent = PendingIntent.getBroadcast(SMSSender.this, 0, new Intent(), 0);
if(content.length()>70){//如果字数超过70,需拆分成多条短信发送
            List<String> msgs = smsManager.divideMessage(content);
          for(String msg : msgs){
    smsManager.sendTextMessage(mobile, null, msg, sentIntent, null);
 //最后二个参数为短信已发送的广播意图,最后一个参数为短信对方已收到短信的广播意图
           }
}else{        
           smsManager.sendTextMessage(mobile, null, content, sentIntent, null);
}
Toast.makeText(SMSSender.this, "短信发送完成", Toast.LENGTH_LONG).show();

测试步骤:
 1>在Eclipse中运行此应用
 2>在Dos窗口中进入android SDK安装路径的tools目录,输入以下命令再开启一个Android模拟器:
  emulator -data itcast 
   注:itcast为用户数据存取文件,如果该文件不存在,默认在tools目录创建该文件
  
3>在短信发送器的手机号中输入上图现显的电话号码
注:目前Android系统对中文短信尚未支持,所以发送中文短信会有乱码,这个问题日后会被解决的。

对应用进行单元测试
第一步:首先在AndroidManifest.xml中加入下面红色代码:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="cn.itcast.action“ android:versionCode="1“  android:versionName="1.0">
 <application android:icon="@drawable/icon" android:label="@string/app_name">
        <uses-library android:name="android.test.runner" />
        ....
 </application>
 <uses-sdk android:minSdkVersion="6" />
 <instrumentation android:name="android.test.InstrumentationTestRunner"
  android:targetPackage="cn.itcast.action" android:label="Tests for My App" />
</manifest>
上面targetPackage指定的包要和应用的package相同。
第二步:编写单元测试代码(选择要测试的方法,右键点击“Run As”--“Android Junit Test” ):
import android.test.AndroidTestCase;
import android.util.Log;
public class XMLTest extends AndroidTestCase {
 public void testSomething() throws Throwable {
Assert.assertTrue(1 + 1 == 3);
 }
}
l

你可能感兴趣的:(Android进一步学习)