当前位置:  编程技术>移动开发
本页文章导读:
    ▪实例HelloWorld及测试代码        范例HelloWorld及测试代码 Android docs中的范例《HelloWorld》和《Hello, Testing》,简单翻译整理如下。一、编写HelloWorld范例--------------------------------------------1、创建新项目,名称HelloWorld;2、打.........
    ▪ DownloadManager下载管理类2.3新增API引见        DownloadManager下载管理类2.3新增API介绍 从Android 2.3开始新增了一个下载管理类,在SDK的文档中我们查找android.app.DownloadManager可以看到。下载管理类可以长期处理多 个HTTP下载任务,客户端只需.........
    ▪ ListView进阶系列之一 内容顺序淡淡展示       ListView进阶系列之一 内容顺序淡淡显示 ListView进阶系列之一 内容顺序淡淡显示 listView可以说是用的最多的控件之一了,给listview添加特效,将是日后开发中在所难免的事情。 实现一个简单的.........

[1]实例HelloWorld及测试代码
    来源: 互联网  发布时间: 2014-02-18
范例HelloWorld及测试代码
Android docs中的范例《HelloWorld》和《Hello, Testing》,简单翻译整理如下。

一、编写HelloWorld范例
--------------------------------------------
1、创建新项目,名称HelloWorld;

2、打开并修改HelloWorld.java,修改后的代码如下:
public class HelloAndroid extends Activity {
   /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);

       TextView tv = new TextView(this);
       tv.setText("Hello, Android");
       setContentView(tv);
   }
}


3、运行项目,即可看到运行效果,如下图所示:


4、本例实现的另一种方式——使用XML
(1)修改res/values/目录下strings.xml,内容如下:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">Hello, Android! I am a string resource!</string>
    <string name="app_name">Hello, Android</string>
</resources>

(2)修改res/layout/目录下main.xml,内容如下:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/textview"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:text="@string/hello"/>

(3)打开HelloWorld.java,修改后的代码如下(创建项目后的初始代码一致):
public class HelloAndroid extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

(4)运行效果同3;



二、编写HelloWorld对应的测试代码
--------------------------------------------
1、在Eclipse中,通过New > Project > Android > Android Test Project创建测试项目;
Test Project Name: "HelloWorldTest"
Test Target: 设置为"An existing Android project",点击浏览并选择"HelloWorld"项目;
Build Target: 设置测试平台,如2.1;
Application name: "HelloWorldTest"
Package name: "cn.basttg.test"

2、进入源代码“cn.basttg.test”包,新建类测试类HelloWorldTest:
Name: "HelloWorldTest"
Superclass: "android.test.ActivityInstrumentationTestCase2<HelloWorld>"

3、打开HelloWorldTest.java,增加成员变量定义,代码如下:
    private HelloAndroid mActivity;
    private TextView mView;
    private String resourceString;


4、打开HelloWorldTest.java,增加构造方法,代码如下:
    public HelloWorldTest() {
      super("cn.basttg.sample", HelloWorld.class);
    }


5、打开HelloWorldTest.java,重写setUp()方法,代码如下:
	protected void setUp() throws Exception {
		super.setUp();
		mActivity = this.getActivity();
		mView = (TextView) mActivity.findViewById(cn.basttg.sample.R.id.textview);
		resourceString = mActivity.getString(cn.basttg.sample.R.string.hello);
	}


6、打开HelloWorldTest.java,增加测试方法testPreconditions()、testText(),代码如下:
	public void testPreconditions() {
		assertNotNull(mView);
	}

	public void testText() {
		assertEquals(resourceString, (String) mView.getText());
	}


7、修改后的HelloWorldTest.java完整代码,如下所示:
public class HelloAndroidTest extends ActivityInstrumentationTestCase2<HelloWorld> {

	private HelloWorld mActivity;
	private TextView mView;
	private String resourceString;

	public HelloAndroidTest() {
		super("cn.basttg.sample", HelloWorld.class);
	}

	@Override
	protected void setUp() throws Exception {
		super.setUp();
		mActivity = this.getActivity();
		mView = (TextView) mActivity.findViewById(cn.basttg.sample.R.id.textview);
		resourceString = mActivity.getString(cn.basttg.sample.R.string.hello);
	}

	public void testPreconditions() {
		assertNotNull(mView);
	}

	public void testText() {
		assertEquals(resourceString, (String) mView.getText());
	}
}


8、通过Run As > Android JUnit Test,运行测试代码,测试结果如下:


三、特别说明
--------------------------------------------
1、本例HelloWorld的包名为cn.basttg.sample,若有不同请自行更改;
2、本例HelloAndroidTest的包名为cn.basttg.test,若有不同请自行更改;
3、相关代码中所使用的对象,请在Eclipse使用Ctrl+Shift+O完成相关类的import引用;

    
[2] DownloadManager下载管理类2.3新增API引见
    来源: 互联网  发布时间: 2014-02-18
DownloadManager下载管理类2.3新增API介绍

从Android 2.3开始新增了一个下载管理类,在SDK的文档中我们查找android.app.DownloadManager可以看到。下载管理类可以长期处理多 个HTTP下载任务,客户端只需要给出请求的Uri和存放目标文件的位置即可,下载管理使用了一个AIDL服务器所以可以放心的在后台执行,同时实例化的 方法需要使用getSystemService(Context.DOWNLOAD_SERVICE) ,Android123再次提醒使用API Level为9的用户可以轻松的通过新增的这个API实现Android平台上的文件下载操作。

DownloadManager类提供了以下几种方法来处理,

  long  enqueue(DownloadManager.Request request)   //存入队列一个新的下载项

ParcelFileDescriptor  openDownloadedFile(long id)  //打开一个下载后的文件用于读取,参数中的long型id是一个provider中的一条记录。

Cursor  query(DownloadManager.Query query)  //查询一个下载,返回一个Cursor

int  remove(long... ids)  //取消下载同时移除这些条从下载管理中。

  我们可以看到提供的方法都比较简单,给我们操作的最终封装成为一个provider数据库的方式进行添加、查询和移除,但是对于查询和添加任务的细节,我们要看看DownloadManager.Request类和DownloadManager.Query 类了。

  一、DownloadManager.Request类的成员和定义

DownloadManager.Request  addRequestHeader(String header, String value)  // 添加一个Http请求报头,对于这两个参数,Android开发网给大家举个小例子,比如说User-Agent值可以为Android123或 Windows XP等等了,主要是给服务器提供标识。
DownloadManager.Request  setAllowedNetworkTypes(int flags)  //设置允许使用的网络类型,这一步Android 2.3做的很好,目前有两种定义分别为NETWORK_MOBILE和NETWORK_WIFI我们可以选择使用移动网络或Wifi方式来下载。
DownloadManager.Request  setAllowedOverRoaming(boolean allowed)  //对于下载,考虑到流量费用,这里是否允许使用漫游。
DownloadManager.Request  setDescription(CharSequence description)  //设置一个描述信息,主要是最终显示的notification提示,可以随便写个自己区别
DownloadManager.Request  setDestinationInExternalFilesDir(Context context, String dirType, String subPath)  //设置目标存储在外部目录,一般位置可以用 getExternalFilesDir()方法获取。
DownloadManager.Request  setDestinationInExternalPublicDir(String dirType, String subPath)  //设置外部存储的公共目录,一般通过getExternalStoragePublicDirectory()方法获取。
DownloadManager.Request  setDestinationUri(Uri uri)  //设置需要下载目标的Uri,可以是http、ftp等等了。
DownloadManager.Request  setMimeType(String mimeType)  //设置mime类型,这里看服务器配置,一般国家化的都为utf-8编码。
DownloadManager.Request  setShowRunningNotification(boolean show)  //是否显示下载进度的提示
DownloadManager.Request  setTitle(CharSequence title)  //设置notification的标题
DownloadManager.Request  setVisibleInDownloadsUi(boolean isVisible)  //设置下载管理类在处理过程中的界面是否显示

  当然了Google还提供了一个简单的方法来实例化本类,这个构造方法为DownloadManager.Request(Uri uri) ,我们直接填写一个Uri即可,上面的设置使用默认情况。

二、DownloadManager.Query类

  对于当前下载内容的状态,我们可以使用DownloadManager.Query类来获取,本类比较简单,仅仅提供了两个方法。

  DownloadManager.Query  setFilterById(long... ids)  //根据id来过滤查找。
  DownloadManager.Query  setFilterByStatus(int flags) //根据任务的状态来查找。

  详细的状态在android.app.DownloadManager类中有定义,目前Android 2.3中的定义为:

int STATUS_FAILED 失败
int STATUS_PAUSED 暂停
int STATUS_PENDING 等待将开始
int STATUS_RUNNING 正在处理中
int STATUS_SUCCESSFUL 已经下载成功

最后Android开发网提醒大家要说的是因为DownloadManager类提供的query方法返回一个Cursor对象,这些状态保存在这个游标的COLUMN_STATUS 字段中。

  1. 下载的状态完成均是以广播的形式通知大家,目前API Level为9定义了下面三种Intent的action

  ACTION_DOWNLOAD_COMPLETE下载完成的动作。
  ACTION_NOTIFICATION_CLICKED 当用户单击notification中下载管理的某项时触发。
  ACTION_VIEW_DOWNLOADS 查看下载项

  2. 对于一个尚未完成的项,在Cursor中我们查找COLUMN_REASON字段,可能有以下定义:

int ERROR_CANNOT_RESUME 不能够继续,由于一些其他原因。
int ERROR_DEVICE_NOT_FOUND 外部存储设备没有找到,比如SD卡没有插入。
int ERROR_FILE_ALREADY_EXISTS 要下载的文件已经存在了,Android123提示下载管理类是不会覆盖已经存在的文件,所以如果需要重新下载,请先删除以前的文件。

int ERROR_FILE_ERROR 可能由于SD卡原因导致了文件错误。
int ERROR_HTTP_DATA_ERROR 在Http传输过程中出现了问题。
int ERROR_INSUFFICIENT_SPACE 由于SD卡空间不足造成的

int ERROR_TOO_MANY_REDIRECTS 这个Http有太多的重定向,导致无法正常下载
int ERROR_UNHANDLED_HTTP_CODE 无法获取http出错的原因,比如说远程服务器没有响应。
int ERROR_UNKNOWN 未知的错误类型.

3. 有关暂停的一些状态,同样COLUMN_REASON字段的值可能是以下定义

int PAUSED_QUEUED_FOR_WIFI 由于移动网络数据问题,等待WiFi连接能用后再重新进入下载队列。
int PAUSED_UNKNOWN 未知原因导致了任务下载的暂停.
int PAUSED_WAITING_FOR_NETWORK 可能由于没有网络连接而无法下载,等待有可用的网络连接恢复。.
int PAUSED_WAITING_TO_RETRY 由于重重原因导致下载暂停,等待重试。

  有关Android 2.3中新增的下载管理DownloadManager的介绍基本上已经完全讲完,如果你对Cursor、Provider这些基础概念了解的话,可以看到这个下载管理类可以帮我们减少很多不必要的代码编写。


    
[3] ListView进阶系列之一 内容顺序淡淡展示
    来源: 互联网  发布时间: 2014-02-18
ListView进阶系列之一 内容顺序淡淡显示
ListView进阶系列之一 内容顺序淡淡显示

listView可以说是用的最多的控件之一了,给listview添加特效,将是日后开发中在所难免的事情。

实现一个简单的listview显示

这个大家应该是相当熟悉了。

q      在布局文件中添加ListView控件。(main.xml)

q      再在Layout中新建一个ListView每一项要显示的内容。(lvitem.xml)

q      在代码中得到ListView的引用,为其设置适配器,添加数据。(DemoActivity.java)

这个就不多说了,直接看代码吧:

main.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"

    >

         <ListView

                   android:id="@+id/listv"

                   android:layout_width="fill_parent"

                   android:layout_height="wrap_content"

                   android:scrollbars="vertical"

                   android:layoutAnimation="@anim/animationlayout"

                   />

         <Button

                   android:id="@+id/buttonId"

                   android:layout_width="fill_parent"

                   android:layout_height="wrap_content"

                   android:text="测试"

                   />

</LinearLayout>

 

lvitem.xml

<?xml version="1.0" encoding="utf-8"?>

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"

         android:id="@+id/lvitem"

        android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    android:stretchColumns ="*"

> 

         <TableRow>

                   <TextView

                            android:id="@+id/tvname"

                           android:layout_width="wrap_content"

             android:layout_height="wrap_content"

                   >

                   </TextView>

                   <TextView

                            android:id="@+id/tvage"

                           android:layout_width="wrap_content"

             android:layout_height="wrap_content"

                   >

                   </TextView>

                   <TextView

                            android:id="@+id/tvsex"

                           android:layout_width="wrap_content"

             android:layout_height="wrap_content"

                   >

                   </TextView>

         </TableRow>

         

</TableLayout>

 

 

 

 

DemoActivity.java

package cn.edu.heut.zcl;

 

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

 

import android.app.Activity;

import android.app.ListActivity;

import android.content.Context;

import android.os.Bundle;

import android.widget.ListView;

import android.widget.SimpleAdapter;

 

public class DemoActivity extends Activity {

    /** Called when the activity is first created. */

         ListView lv;

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        

        setContentView(R.layout.main);

        lv = (ListView)findViewById(R.id.listv);

        List<Map<String, String>> data = new ArrayList<Map<String,String>>();

        for(int i=0;i<10;i++){

           Map<String,String> map = new HashMap<String,String>();

           map.put("name","n"+i );

           map.put("age","age"+i );

           map.put("sex","s"+i );

           data.add(map);

        }

                   String[] from = {"name","age","sex"};

                   int[] to = {R.id.tvname,R.id.tvage,R.id.tvsex};

                   SimpleAdapter sa = new SimpleAdapter(this, data, R.layout.lvitem, from, to);

                   lv.setAdapter(sa);

    }

}

 

 

 

添加特效

这里才是本文重点,listview的特效是通过Animation实现,首先在res中添加文件夹anim,在其中新建一个animationSet的xml,animatonset1.xml,在其中添加要使用的特效,特效的添加参考本博客的Animation系列教程。

之后要使用LayoutAnimationController,这里简要介绍一下该类的作用。

q      LayoutAnimationController用于为一个Layout里面的控件,或者是一个ViewGroup里面的控件设置动画效果。

q      每一个控件将会拥有相同的动画效果。

q      可以设置每个控件的动画效果的时间,这些工作可以在xml中也可以在代码中实现。

具体实现情况代码:animationlayout.xml。在代码中将使用android:animation="@anim/animatonset1"引用之前的animation。

最后就可以为已经写好的listview添加动画效果。添加的方式很简单,只要在listview的xml文件声明处使用android:layoutAnimation="@anim/animationlayout"就可。

看代码

animatonset1

 

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android"

         android:interpolator="@android:anim/accelerate_interpolator"

         android:shareInterpolator="true">

                   

         <alpha 

                   android:fromAlpha="0.0"

                   android:toAlpha="1.0"

                   android:duration="1000" />

 

</set>

 

animationlayout

<?xml version="1.0" encoding="utf-8"?>

<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"

         android:delay="0.5"

         android:animationOrder="random" 

         android:animation="@anim/animatonset1" />

  


    
最新技术文章:
▪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