当前位置:  数据库其它 iis7站长之家
本页文章导读:
    ▪第八章列表、菜单以及其它视图——上        第八章列表、菜单以及其它视图——下 这里是你的完整的AndroidManifest.xml项目文件: <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android=http://schemas.android.com/apk/res/android package="android_programm.........
    ▪ 10 个在app store中需要避免的异常(一)        10 个在app store中需要避免的错误(一) 原文 #1 Creating an Overly Complex App The first app we created at Pinger was called Pinger Phone. Although this app did get into the top 100 for a short while, its main flaw was that it was way.........
    ▪ 【转】ArrayAdapter跟SimpleCursorAdapter例子       【转】ArrayAdapter和SimpleCursorAdapter例子 使用ArrayAdapter定制To-Do List   这个例子将扩展To-Do List工程,以一个ToDoItem对象来储存每一个项目,包含每个项目的创建日期。   你将扩展ArrayAdapter类来.........

[1]第八章列表、菜单以及其它视图——上
    来源: 互联网  发布时间: 2014-02-18
第八章列表、菜单以及其它视图——下

这里是你的完整的AndroidManifest.xml项目文件:

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

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

package="android_programmers_guide.AndroidViews

<application android:icon="@drawable/icon">

<activity android:name=".AndroidViews"

android:label="@string/app_name">

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

<activity android:name=".AutoComplete" android:label="AutoComplete">

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER"

/>

</intent-filter>

</activity>

</application>

</manifest>

处理Intent Call

完成AndroidManifest.xml后,为AndroidViews.java添加下面的功能:

public void showAutoComplete(){

Intent autocomplete = new Intent(this, AutoComplete.class);

startActivity(autocomplete);

}

当从你的select/case生命中调用时,这个功能会打开你的autocomplete Action。编辑选择声明中的case()来让它调用新的功能:

case 0:

showAutoComplete();

return true;

在Android模拟器中运行应用。当主Activity启动时,点击Menu Button,你会看到如图8-1所示的菜单。点击AutoComplete菜单项。

点击AutoComplete按钮菜单项会激活你的autocomplete Activity,如下:

要测试AutoCompleteTextView,就输入单词January。在你敲入少量字母后,你会January出现在文本框下面,如下图所示:

然后,点击Change Layout Button,结果应该是一个扩展后的文本输入框,与如下插入类似:

现在点击Change Text Color Button并输入一些文字,如下所示:

下面的章节会为你提供在工程中实现剩余五个视图的代码。

 

Button

 

看一下下面的代码。这个代码包含了四个文件,AndroidManifest.xml,Button.xml,testButton.java和AndroidViews.java。将文件中的这些代码添加到在已存在的AndroidViews Activity中。

AndroidManifest.xml

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

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

package="android_programmers_guide.AndroidViews"

<application android:icon="@drawable/icon">

<activity android:name=".AndroidViews"

android:label="@string/app_name">

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

<activity android:name=".AutoComplete" android:label="AutoComplete">

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER"/>

</intent-filter>

</activity>

<activity android:name=".testButton" android:label="TestButton">

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER"/>

</intent-filter>

</activity>

</application>

</manifest>

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

<Button android:id="@+id/testButton"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="This is the test Button"/>

<Button android:id="@+id/layoutButton"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="Change Layout"/>

<Button android:id="@+id/textColorButton"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="Change Text Color"/>

</LinearLayout>

testButton.java

package android_programmers_guide.AndroidViews;

import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

import android.graphics.Color;

public class testButton extends Activity {

@Override

public void onCreate(Bundle icicle) {

super.onCreate(icicle);

setContentView(R.layout.Button);

final Button Button = (Button) findViewById(R.id.testButton);

final Button changeButton = (Button)findViewById(R.id.layoutButton);

changeButton.setOnClickListener(new Button.OnClickListener() {

public void onClick(View v){

changeOption(Button); }

});

final Button changeButton2 = (Button)

findViewById(R.id.textColorButton);

changeButton2.setOnClickListener(new Button.OnClickListener() {

public void onClick(View v){

changeOption2(Button);

}

});

}

public void changeOption(Button Button){

if (Button.getHeight()==100){

Button.setHeight(30);

}

else{

Button.setHeight(100);

}

}

public void changeOption2(Button Button){

Button.setTextColor(Color.RED);

}

}

AndroidViews.java

package android_programmers_guide.AndroidViews;

import android.app.Activity;

import android.os.Bundle;

import android.view.Menu;

import android.content.Intent;

public class AndroidViews extends Activity {

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

@Override

public void onCreate(Bundle icicle) {

super.onCreate(icicle);

setContentView(R.layout.main);

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

super.onCreateOptionsMenu(menu);

menu.add(0, 0, "AutoComplete");

menu.add(0, 1, "Button");

menu.add(0, 2, "CheckBox");

menu.add(0, 3, "EditText");

menu.add(0, 4, "RadioGroup");

menu.add(0, 5, "Spinner");

return true;

}

@Override

public boolean onOptionsItemSelected(Menu.Item item){

switch (item.getId()) {

case 0:

showAutoComplete();

return true;

case 1:

showButton();

return true;

true;

}

return true;

}

public void showButton() {

Intent showButton = new Intent(this, testButton.class);

startActivity(showButton);

}

public void showAutoComplete(){

Intent autocomplete = new Intent(this, AutoComplete.class);

startActivity(autocomplete);

}

}

启动你的应用并从菜单(如前面的图8-1所示)中选择Buttong选项。

下面的插图显示了Button Activity的样子。

尝试点击Change Layout Button。再次,结果会是一个更宽的文本显示区域,如下所示:

点击Change Text Color Button,文本就会变红,如下:

 

CheckBox

本节中你会为CheckBox视图创建一个Activity。创建Activity的步骤和前面的章节中的相同。因此,会为你提供三个主Activity文件的全部代码——AndroidManifest.xml,checkbox.xml和testCheckBox.java。这些文件会在下几节提供给你。

 

AndroidManifest.xml

本节包含了当前AndroidView的AndroidManifest.xml的全部代码。如果你在Eclipse中学习,将你的Activity的AndroidManifest.xml文件更改为如下这样:

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

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

package="android_programmers_guide.AndroidViews">

<application android:icon="@drawable/icon">

<activity android:name=".AndroidViews"

android:label="@string/app_name">

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

<activity android:name=".AutoComplete" android:label="AutoComplete">

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

<activity android:name=".testButton" android:label="TestButton">

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER"/>

</intent-filter>

</activity>

<activity android:name=".testCheckBox" android:label="TestCheckBox">

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER"/>

</intent-filter>

</activity>

</application>

</manifest>

 

Checkbox.xml

本节展示了checkbox.xml的全部代码。使用本章前面的指导在你的项目中创建一个名为checkbox.xml的新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"

<CheckBox android:id="@+id/testCheckBox"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="This is the test CheckBox"/>

<Button android:id="@+id/layoutButton"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="Change Layout"/>

<Button android:id="@+id/textColorButton"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="Change Text Color"/>

</LinearLayout>

testCheckBox.xml

本节包含了实现你的Checkbox Action所需的最终文件。在你的项目中创建一个名为testCheckBox.java的.java文件。该文件是这个Activity的主要文件并包含了可执行的代码。在testCheckBox.java中使用下面的代码。

package android_programmers_guide.AndroidViews;

import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.widget.CheckBox;

import android.widget.Button;

import android.graphics.Color;

public class testCheckBox extends Activity {

@Override

public void onCreate(Bundle icicle) {

super.onCreate(icicle);

setContentView(R.layout.checkbox);

final CheckBox checkbox = (CheckBox)findViewById(R.id.testCheckBox);

final Button changeButton = (Button)findViewById(R.id.layoutButton);

changeButton.setOnClickListener(new Button.OnClickListener() {

public void onClick(View v){

changeOption(checkbox); }

});

final Button changeButton2 = (Button)

findViewById(R.id.textColorButton);

changeButton2.setOnClickListener(new Button.OnClickListener() {

public void onClick(View v){

changeOption2(checkbox);

}

});

}

public void changeOption(CheckBox checkbox){

if (checkbox.getHeight()==100){

checkbox.setHeight(30);

}

else{

checkbox.setHeight(100);

}

}

public void changeOption2(CheckBox checkbox){

checkbox.setTextColor(Color.RED);

}

}

 


    
[2] 10 个在app store中需要避免的异常(一)
    来源: 互联网  发布时间: 2014-02-18
10 个在app store中需要避免的错误(一)

原文

#1 Creating an Overly Complex App

The first app we created at Pinger was called Pinger Phone. Although

this app did get into the top 100 for a short while, its main flaw was that it was way too complex. It had both a social media feed and an IM client. Those who understood it, loved it. Buy many people just didn’t get it.

So when it comes to apps, keep it simple.

一、过分复杂的应用程序

我们的第一个程序较Pinger Phone,虽然在Top 100中待了短暂的时间,它的主要缺点是太复杂。既有订阅功能又有即时聊天功能,那些理解这些功能的人非常喜欢他,但是没有人愿意购买。

因此,开发一个应用程序时要让他简洁易用。

#2 Having a Paid Only Strategy

There may be certain apps that don’t work well with a lite version, but I suggest you have a free and paid version if possible. You get double the possible exposure in the app store and you let users try your app before spending money on it.

二、使用收费策略

有些应用程序的lite版本销售的并不好,我建议你应该有免费和收费的两个版本。你的应用程序可以在商店中占有两个位置,并且用户可以在购买收费程 序前试用你的免费程序。

 

#3 Using Sub Par Graphics

Just look at the top 100 apps. Some of the icons look like I created them (that’s not a good thing). They are blurry, unprofessional, and don’t stand out. Create the best graphics that your budget allows.

三、使用难看的图标

看看Top 100的应用程序,有些程序的图标就像是我做的一样(不是件好事)。这些图标模糊,不专业,不引人注意。要尽可能的使用最好的图标。

#4 Flipping a Coin to Price your App

The app store is a bit of a garage sale with $.99 tags on many items. Before you just go with the $.99 price, do research. What are your competitor’s apps priced at? Better to price your app a bit high to start. You can always lower the price later. One exception to this is the app Ping! Great app and great strategy. It was free for the first couple days while he marketed it into the top 100. Then he made it $.99. His strategy worked.

So it’s not always one size fits all. Think it through.

四、随便给应用程序定价

App sotre就像旧货市场,很多的程序卖$.99。当要给你的程序标$.99时,先调查一下。和你相似的应用程序是多少钱?刚开始把程序定稍高一点会更好。 你可以过短时间把价格降下来。一个例外是Ping!,好的程序好的策略。当他进入Top100之前,是免费的,然后再卖$.99。

什么事并不总是一刀切,先思考在行动。


    
[3] 【转】ArrayAdapter跟SimpleCursorAdapter例子
    来源: 互联网  发布时间: 2014-02-18
【转】ArrayAdapter和SimpleCursorAdapter例子

    使用ArrayAdapter定制To-Do List

     

    这个例子将扩展To-Do List工程,以一个ToDoItem对象来储存每一个项目,包含每个项目的创建日期。

     

    你将扩展ArrayAdapter类来绑定一组ToDoItem对象到ListView上,并定制用于显示每一个ListView项目的layout。

     

    1. 返回到To-Do List工程。创建一个新的ToDoItem类来保存任务和任务的创建日期。重写toString方法来返回一个项目数据的概要。

     

package com.paad.todolist;
import java.text.SimpleDateFormat;
import java.util.Date;
 
public class ToDoItem {
String task;
Date created;
 
public String getTask() {
return task;
}
 
public Date getCreated() {
return created;
}
 
public ToDoItem(String _task) {
this(_task, new Date(java.lang.System.currentTimeMillis()));
}
 
public ToDoItem(String _task, Date _created) {
task = _task;
created = _created;
}
 
@Override
public String toString() {
SimpleDateFormat sdf = new SimpleDateFormat(“dd/MM/yy”);
String dateString = sdf.format(created);
return “(“ + dateString + “) “ + task;
}
}
 

 

2. 打开ToDoList Activity,修改ArrayList和ArrayAdapter变量的类型,储存ToDoItem对象而不是字符串。然后,你将修改onCreate方法来更新相应的变量初始化。你还需要更新onKeyListener处理函数来支持ToDoItem对象。

 

private ArrayList<ToDoItem> todoItems;
private ListView myListView;
private EditText myEditText;
private ArrayAdapter<ToDoItem> aa;
 
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
 
// Inflate your view
setContentView(R.layout.main);
 
// Get references to UI widgets
myListView = (ListView)findViewById(R.id.myListView);
myEditText = (EditText)findViewById(R.id.myEditText);
todoItems = new ArrayList<ToDoItem>();
int resID = R.layout.todolist_item;
aa = new ArrayAdapter<ToDoItem>(this, resID, todoItems);
myListView.setAdapter(aa);
myEditText.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event)
{
if (event.getAction() == KeyEvent.ACTION_DOWN)
if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER)
{
ToDoItem newItem;
newItem = new ToDoItem(myEditText.getText().toString());
todoItems.add(0, newItem);
myEditText.setText(“”);
aa.notifyDataSetChanged();
cancelAdd();
return true;
}
return false;
}
});
registerForContextMenu(myListView);
}
 

 

3. 如果你运行Activity,它将显示每个to-do项目,如图5-3所示。

 

图5-3

 

4. 现在,你可以创建一个自定义的layout来显示每一个to-do项目。修改在第4章中创建的自定义layout,包含另外一个TextView,它将用于显示每个to-do项目的创建日期。

 

<?xml version=”1.0” encoding=”utf-8”?>
<RelativeLayout xmlns:android=”http://schemas.android.com/apk/res/android”
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
android:background=”@color/notepad_paper”>
<TextView
android:id=”@+id/rowDate”
android:layout_width=”wrap_content”
android:layout_height=”fill_parent”
android:padding=”10dp”
android:scrollbars=”vertical”
android:fadingEdge=”vertical”
android:textColor=”@color/notepad_text”
android:layout_alignParentRight=”true”
/>
<TextView
android:id=”@+id/row”
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
android:padding=”10dp”
android:scrollbars=”vertical”
android:fadingEdge=”vertical”
android:textColor=”@color/notepad_text”
android:layout_alignParentLeft=”@+id/rowDate”
/>
</RelativeLayout>
 

 

5. 创建一个新的类(ToDoItemAdapter),使用指定的ToDoItem变量来扩展一个ArrayAdapter。重写getView方法来将ToDoItem对象中的task和date属性指定给第4步创建的layout中的View。

 
import java.text.SimpleDateFormat;
import android.content.Context;
import java.util.*;
import android.view.*;
import android.widget.*;
 
public class ToDoItemAdapter extends ArrayAdapter<ToDoItem> {
int resource;
 
public ToDoItemAdapter(Context _context,int _resource, List<ToDoItem> _items) {
super(_context, _resource, _items);
resource = _resource;
}
 
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
LinearLayout todoView;
ToDoItem item = getItem(position);
String taskString = item.getTask();
Date createdDate = item.getCreated();
SimpleDateFormat sdf = new SimpleDateFormat(“dd/MM/yy”);
String dateString = sdf.format(createdDate);
if (convertView == null)
{
todoView = new LinearLayout(getContext());
String inflater = Context.LAYOUT_INFLATER_SERVICE;
LayoutInflater vi;
vi = (LayoutInflater)getContext().getSystemService(inflater);
vi.inflate(resource, todoView, true);
}
else
{
todoView = (LinearLayout) convertView;
}
TextView dateView = (TextView)todoView.findViewById(R.id.rowDate);
TextView taskView = (TextView)todoView.findViewById(R.id.row);
dateView.setText(dateString);
taskView.setText(taskString);
return todoView;
}
}
 

 

6. 最后,用ToDoItemAdapter替换ArrayAdapter的定义。

 

private ToDoItemAdapter aa;

 

在onCreate中,使用new ToDoItemAdapter来替换ArrayAdapter<String>的实例化。

 

aa = new ToDoItemAdapter(this, resID, todoItems);

 

7. 如果你运行Activity,它看起来如图5-4的截图。

 

图5-4

 

使用SimpleCursorAdapter

 

SimpleCursorAdapter允许你绑定一个游标的列到ListView上,并使用自定义的layout显示每个项目。

 

SimpleCursorAdapter的创建,需要传入当前的上下文、一个layout资源,一个游标和两个数组:一个包含使用的列的名字,另一个(相同大小)数组包含View中的资源ID,用于显示相应列的数据值。

 

下面的框架代码显示了如何构造一个SimpleCursorAdapter来显示联系人信息:

 

String uriString = “content://contacts/people/”;
Cursor myCursor = managedQuery(Uri.parse(uriString), null, null, null, null);
String[] fromColumns = new String[] {People.NUMBER, People.NAME};
int[] toLayoutIDs = new int[] { R.id.nameTextView, R.id.numberTextView};
SimpleCursorAdapter myAdapter;
myAdapter = new SimpleCursorAdapter(this,R.layout.simplecursorlayout,myCursor,fromColumns,toLayoutIDs);
myListView.setAdapter(myAdapter);
 

 

SimpleCursorAdapter在本章前面的创建选择联系人的例子中使用过。你将在第6章学习到更多关于Content Provider和Cursor的内容,那里你也将找到更多SimpleCursorAdapter的例子。


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