- 浏览: 73907 次
文章分类
- 全部博客 (47)
- 合并两个表 (1)
- java (46)
- 获得一个节点对象的节点类型 (1)
- JSP 页面不能解析EL表达式。 (1)
- 数据库连接长时间空闲后 (1)
- 爆连接已经关闭的解决方法 (1)
- 设计工作流引擎就象设计一部汽车(工作流程引擎设计思路提示) (1)
- Hadoop的下一代mapreduce (1)
- 备忘css元素定位 (1)
- 第一次通宵 (1)
- 字符编码工具类 (1)
- Asset Pipeline in rails 3.1.0 (1)
- IT行业热点----我国IT飞速发展需关注6大问题 (1)
- Web Service实践之——开始XFire (1)
- 单片机C语言编程基础模板 (1)
- 中医养生顺口溜 (1)
- Property文件读取的Util类 (1)
- JEECMS (1)
- CheckStyle使用java.header文件的问题 (1)
- JUnit4测试代码示例 (1)
- JavaScript中三个弹出窗口 (1)
- About .Net Petshop (1)
- MapXtreme2004代码 在地图上新增加点图元 (1)
- 50个GMail的邀请权 想要的留下EMail (1)
- asp.net+Access简单企业站源码 (1)
- 局域网指定ip断网工具源码 (1)
- lucene索引和搜索过程中的核心类介绍 (1)
- poi 取消科学计数法 (1)
- centos相关 (1)
- java.lang.IllegalStateException: No WebApplicationContext found: no ContextLoaderListener registered (1)
- Project configuration is not up-to-date with pom.xml. 问题解决 (1)
- js截取最后一个.的字符串(IP地址判断) (1)
- Android开发之《Android应用开发揭秘》UI事件汇总 (1)
- SSH through proxy to visit ssh.github.com (ZZ) (1)
- eclipse3.7 添加任务标记 (1)
- SQLServer2005和2008的分页技术比较 (1)
- 传智播客java基础加强ppt (1)
- Struts 标签疑难问题收集-乔乐共享 (1)
- mysql使用rand随机查询记录效率测试 (1)
- 按钮实现spinner (1)
- 线程循环 (1)
- Android相关工具地址 (1)
最新评论
-
543089122:
N年前的老掉牙的手段了,原理也就是ARP
局域网指定ip断网工具源码 -
lvwenwen:
...
Web Service实践之——开始XFire -
hz_grape:
程序员的人生
第一次通宵 -
faylai:
传说中的广告贴啊!!
设计工作流引擎就象设计一部汽车(工作流程引擎设计思路提示)
Android开发之《Android应用开发揭秘》UI事件汇总
<h1>Android开发之《Android应用开发揭秘》UI事件汇总</h1>
/*
* Android开发之《Android应用开发揭秘》UI事件汇总
* 北京Android俱乐部群:167839253
* Created on: 2011-12-01
* Author: blueeagle
* Email: liujiaxiang@gmail.com
*/
思想跑毛是很可怕的,最近去尝试了下创业,结果碰了一鼻子灰,公司乱七八糟的项目搞的焦头烂额。各种没有心情。还好,现在沉淀下来,继续android开发的征程。
以下是Android应用开发揭秘这本书第四章的关于UI的事件处理的总结。基本上都是可以复用的代码。存着日后方便。
1.EditView控件的setOnKeyListener方法。点击上下左右键或者中间键的时候可以出发该方法。代码如下。
<textarea readonly name="code" class="java"> myEditView.setOnKeyListener(new EditText.OnKeyListener(){
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
myTextView.setText("文本框中内容是:"+myEditView.getText().toString());
return false;// TODO Auto-generated method stub
}
});
</textarea><br>2.RadioButton控件和RadioGroup控件的组合使用,代码如下:
<textarea readonly name="code" class="java"> myRadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
// TODO Auto-generated method stub
if(checkedId == myRadioButton3.getId())
{
DisplayToast("正确答案:"+myRadioButton3.getText()+"恭喜你回答正确");
}
else
{
DisplayToast("回答错误");
}
}
});
</textarea><br>3.CheckBox控件的使用,代码如下:
<textarea readonly name="code" class="java"> myCheckBox1.setOnCheckedChangeListener(new CheckBox.OnCheckedChangeListener(){
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
// TODO Auto-generated method stub
if(myCheckBox1.isChecked()){
DisplayToast("你选择了:"+myCheckBox1.getText());
}
}
});
</textarea><br>4.Button控件的使用,代码如下:
<textarea readonly name="code" class="java"> myButton1.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v) {
}
});
</textarea><br>4.Spinner控件的使用,代码如下:
<textarea readonly name="code" class="java">//Spinner控件需要跟ArrayAdapter绑定使用。
private static final String[] m_Countries = {"A型","B型","O型","AB型","未知类型"};
private Spinner mySpinner;
private ArrayAdapter<String> myAdapter;
mySpinner = (Spinner)findViewById(R.id.mySpinner1);
myAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,m_Countries);
//设置下拉列表风格
myAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//将adapter添加到mySpinner中
mySpinner.setAdapter(myAdapter);
//添加事件监听
mySpinner.setOnItemSelectedListener(new Spinner.OnItemSelectedListener(){
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
myTextView.setText("你的血型是"+ m_Countries[arg2]);
arg0.setVisibility(View.VISIBLE);
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
DisplayToast("你什么也没选!");
}
});
</textarea>5.AutoCompleteTextView的使用,代码如下:
<textarea readonly name="code" class="java">private static final String[] autoString = {"abcd1","abcd212","32123","32open","32add","android","windows","iphone","linux","mydirve","msnbmw","wocaonimalegebi"};
private ArrayAdapter<String> myAdapter1;
private AutoCompleteTextView myAutoCompleteTextView;
myAdapter1 = new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line,autoString);
myAutoCompleteTextView = (AutoCompleteTextView)findViewById(R.id.myAutoCompleteTextView);
myAutoCompleteTextView.setAdapter(myAdapter1);
6.DatePicker、TimePicker以及Button的使用,代码如下:
myCalendar1 = Calendar.getInstance();
myTextView = (TextView)findViewById(R.id.myTextView);
myDatePicker = (DatePicker)findViewById(R.id.datePicker1);
myTimePicker = (TimePicker)findViewById(R.id.timePicker1);
myButton1 = (Button)findViewById(R.id.button1);
myButton2 = (Button)findViewById(R.id.button2);
//将日历初始化为当前系统时间,并设置其事件监听
myDatePicker.init(myCalendar1.get(Calendar.YEAR), myCalendar1.get(Calendar.MONTH), myCalendar1.get(Calendar.DAY_OF_MONTH), new DatePicker.OnDateChangedListener() {
@Override
public void onDateChanged(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
// 当日期更改时,在这里处理。
// myCalendar1.set(year, month, day);
}
});
//获取TimePicker对象设置为24小时显示。
myTimePicker.setIs24HourView(true);
//监听时间改变
myTimePicker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {
@Override
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
// TODO Auto-generated method stub
// 当时间改变时,在这里处理。
//myCalendar1.set(year, month, day, hourOfDay, minute);
}
});
//-----------按钮事件---------//
myButton1.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v) {
// 下面的NEW 是新建了一个调整日历的对话框
new DatePickerDialog(AndroidUnleashed001Activity.this,new DatePickerDialog.OnDateSetListener(){
@Override
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
// TODO Auto-generated method stub
//设置日历
}
},myCalendar1.get(Calendar.YEAR),myCalendar1.get(Calendar.MONTH), myCalendar1.get(Calendar.DAY_OF_MONTH)).show();
}
});
myButton2.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v) {
//下面的NEW 是新建了一个调整时间的对话框
new TimePickerDialog(AndroidUnleashed001Activity.this, new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
// TODO Auto-generated method stub
}
}, myCalendar1.get(Calendar.HOUR_OF_DAY), myCalendar1.get(Calendar.MINUTE),true).show();
}
});
}
</textarea><br>
7.Menu的使用,代码如下:
<p align="left">XML代码可以写成:
<textarea readonly name="code" class="html"><menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/style_submenu" android:title="笔迹样式">
<menu>
<group android:id="@+id/style_group" android:checkableBehavior="single">
<item android:id="@+id/style" android:orderInCategory="1" android:title="铅笔" />
<item android:id="@+id/style" android:orderInCategory="2" android:title="钢笔" />
<item android:id="@+id/style" android:orderInCategory="3" android:title="毛笔" />
</group>
</menu>
</item>
<item android:id="@+id/color_submenu" android:title="笔迹颜色">
<menu>
<group android:id="@+id/color_group" android:checkableBehavior="single">
<item android:id="@+id/color" android:orderInCategory="0" android:title="蓝色" />
<item android:id="@+id/color" android:orderInCategory="1" android:title="绿色" />
<item android:id="@+id/color" android:orderInCategory="2" android:title="青色" />
<item android:id="@+id/color" android:orderInCategory="3" android:title="红色" />
</group>
</menu>
</item>
<item android:id="@+id/width_submenu" android:title="笔迹粗细">
<menu>
<group android:id="@+id/width_group" android:checkableBehavior="single">
<item android:id="@+id/width" android:orderInCategory="1" android:title="较细" />
<item android:id="@+id/width" android:orderInCategory="2" android:title="细" />
<item android:id="@+id/width" android:orderInCategory="3" android:title="中等" />
<item android:id="@+id/width" android:orderInCategory="4" android:title="粗" />
<item android:id="@+id/width" android:orderInCategory="5" android:title="较粗" />
</group>
</menu>
</item>
<item android:id="@+id/write" android:title="书写" />
<item android:id="@+id/erase" android:title="清除" />
<item android:id="@+id/clear" android:title="清屏" />
</menu>
</textarea><br>
JAVA代码:
<textarea readonly name="code" class="java"> @Override
public boolean onCreateOptionsMenu(Menu menu){
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item){
int item_id = item.getItemId();
switch (item_id)
{
case R.id.about1:
Intent intent = new Intent();
intent.setClass(AndroidUnleashed001Activity.this, Activity02.class);
startActivity(intent);
AndroidUnleashed001Activity.this.finish();
break;
case R.id.about2:
AndroidUnleashed001Activity.this.finish();
break;
}
return true;
}
1.Menu.add方法实现
public boolean onCreateOptionsMenu(Menu menu){
//MenuInflater inflater = getMenuInflater();
//inflater.inflate(R.menu.menu, menu);
menu.add(0,0,0,R.string.app_name);
menu.add(0,1,1,R.string.hello);
return true;
}
</textarea>
<p align="left">这个功能为弹出对话框,点击确定后弹出登录对话框,然后点击登录后弹出多线程对话框。
<textarea readonly name="code" class="java">Dialog dialog = new AlertDialog.Builder(AndroidUnleashed001Activity.this).setTitle("登录提示").setMessage("这里需要登录").setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 点击确定转向登陆框
LayoutInflater factory = LayoutInflater.from(AndroidUnleashed001Activity.this);
//得到自定义对话框
final View DialogView = factory.inflate(R.layout.pop, null);
//创建对话框
AlertDialog dlg = new AlertDialog.Builder(AndroidUnleashed001Activity.this).setTitle("登录框").setView(DialogView).setPositiveButton("确定", new DialogInterface.OnClickListener() {
private ProgressDialog myProgressDialog;
@Override
public void onClick(DialogInterface dialog, int which) {
// 当输入完成后,点击确定开始登录。
myProgressDialog = ProgressDialog.show(AndroidUnleashed001Activity.this, "请等待", "正在为您登陆",true);
new Thread(){
public void run(){
try{
sleep(3000);
}
catch(Exception e){
e.printStackTrace();
}
finally{
myProgressDialog.dismiss();
}
}
}.start();
}
}).setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
AndroidUnleashed001Activity.this.finish();
}
}).create();
dlg.show();
}
}).setNegativeButton("退出", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
AndroidUnleashed001Activity.this.finish();
}
}).create();
dialog.show();
</textarea><br>9.ImageView的使用,代码如下:
</strong><textarea readonly name="code" class="java">myImageButton1.setImageDrawable(getResources().getDrawable(R.drawable.logo2));
myImageButton1.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Dialog mydialog = new AlertDialog.Builder(AndroidUnleashed003Activity.this).setTitle("提示")
.setMessage("我是ImageButton1").setPositiveButton("确定",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
}).create();
mydialog.show();
}
});
</textarea>
<p align="left">[b]10.Gallery的使用,拖动效果很炫,代码如下:
<textarea readonly name="code" class="java"> Gallery myGallery = (Gallery)findViewById(R.id.myGallery);
//添加ImageAdapter给Gallery对象
myGallery.setAdapter(new ImageAdapter(this));
myGallery.setBackgroundResource(R.drawable.background);
myGallery.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
Toast.makeText(AndroidUnleashed003Activity.this, "你选择了"+(arg2+1)+" 号图片 ", Toast.LENGTH_SHORT).show();
}
});
}
//另外,需要存放图片,存放图片的容器,需要使用一个类实现,这个类是ImageAdapter,继承于BaseAdapter。
public class ImageAdapter extends BaseAdapter{
private Context myContext;
private Integer[] mImageIds = {
R.drawable.ic_launcher,
R.drawable.icon,
R.drawable.logo,
R.drawable.logo2,
R.drawable.logo,
R.drawable.ic_launcher,
R.drawable.icon,
R.drawable.logo,
};
public ImageAdapter(Context c){
myContext = c;
}
@Override
//获取图片的个数
public int getCount() {
// TODO Auto-generated method stub
return mImageIds.length;
}
@Override
//获取图片在库中的位置
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return arg0;
}
@Override
//获取图片在库中的位置
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return arg0;
}
@Override
public View getView(int position, View arg1, ViewGroup arg2) {
// TODO Auto-generated method stub
//return null;
ImageView myImageView = new ImageView(myContext);
//给ImageView设置资源
myImageView.setImageResource(mImageIds[position]);
//设置布局图片以120*120显示
//myImageView.setLayoutParams(new Gallery.LayoutParams(120,120));
//设置显示比例类型
//myImageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
return myImageView;
}
}
</textarea>
<textarea readonly name="code" class="java">//首先需要实现接口:
extends Activity implements OnClickListener,ViewFactory
//具体操作:
LinearLayout myMainView = new LinearLayout(this);
//创建ImageSwitcher对象
mySwitcher = new ImageSwitcher(this);
myMainView.addView(mySwitcher);
mySwitcher.setId(BUTTON_SWITCHER_ID);
mySwitcher.setFactory(this);
mySwitcher.setImageResource(mImageIds[index]);
setContentView(myMainView);
Button next = new Button(this);
next.setId(BUTTON_DOWN_ID);
next.setText("下一张");
next.setOnClickListener(this);
//LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(200,200);
myMainView.addView(next);
Button pre = new Button(this);
pre.setId(BUTTON_UP_ID);
pre.setText("上一张");
pre.setOnClickListener(this);
myMainView.addView(pre);
}
private ImageSwitcher mySwitcher;
private static int index = 0;
//上一页,下一页的按钮索引和Switcher的对象ID
private static final int BUTTON_DOWN_ID = 0x123456;
private static final int BUTTON_UP_ID = 0x123457;
private static final int BUTTON_SWITCHER_ID = 0x123458;
//实现OnClickListener接口的函数
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId()){
case BUTTON_DOWN_ID:
index++;
if(index>= mImageIds.length){
index = 0;
}
mySwitcher.setImageResource(mImageIds[index]);
break;
case BUTTON_UP_ID:
index--;
if(index<0){
index = mImageIds.length-1;
}
mySwitcher.setImageResource(mImageIds[index]);
break;
default:
break;
}
}
//实现View.Factory接口的函数
@Override
public View makeView() {
// TODO Auto-generated method stub
return new ImageView(this);
}
</textarea><p align="left">12.GridView的使用,代码如下:
<textarea readonly name="code" class="java">//这个和Gallery的使用相似,也需要存图片在BaseAdapter中。
GridView myGridView = (GridView)findViewById(R.id.gridView1);
myGridView.setAdapter(new ImageAdapter(this));
myGridView.setBackgroundResource(R.drawable.background);
myGridView.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
Toast.makeText(AndroidUnleashed003Activity.this, "你选择了"+(arg2+1)+" 号图片 ", Toast.LENGTH_SHORT).show();
}
});
}
</textarea>
<textarea readonly name="code" class="java">//要垂直滚动,使用ScrollView要水平滚动使用HorizontalScrollView。
myLayout = (LinearLayout)findViewById(R.id.myLayout);
myScllorView = (ScrollView)findViewById(R.id.myScrollView);
Button myButton = (Button)findViewById(R.id.myButton);
myButton.setOnClickListener(new Button.OnClickListener(){
private int mIndex = -1;
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
TextView myTextView = new TextView(ScrollerViewActivity.this);
myTextView.setText("Text View"+mIndex);
LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
//增加一个TextView到现行布局中
myLayout.addView(myTextView,p);
Button myButtonView = new Button(ScrollerViewActivity.this);
myButtonView.setText("Button "+mIndex++);
//增加一个Button到线性布局中
myLayout.addView(myButtonView,p);
//改变默认焦点切换
//myButtonView.setOnKeyListener(newButtonKeyListener);
//投递一个消息进行滚动
//myHandler.post(myScolltoBottom);
}
});
}
</textarea><p align="left">13.ProgressBar的使用,代码如下:
<p align="left">ProgressBarStyleLarge(圆形进度条)
<textarea readonly name="code" class="java">public class ProgressBarA extends Activity {
protected static final int GUI_STOP_NOTIFIER = 0x108;
protected static final int GUI_THREADING_NOTIFIER = 0x109;
private ProgressBar myProgress1;
private ProgressBar myProgress2;
private Button myButton;
private int intCounter;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//设置窗口模式,因为需要显示进度条在标题栏
requestWindowFeature(Window.FEATURE_PROGRESS);
setProgressBarVisibility(true);
setContentView(R.layout.main);
//取得ProgressBar
myProgress1 = (ProgressBar)findViewById(R.id.myProgressBar01);
myProgress2 = (ProgressBar)findViewById(R.id.myProgressBar02);
myButton = (Button)findViewById(R.id.myButton);
myProgress1.setIndeterminate(false);
myProgress2.setIndeterminate(false);
myButton.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
myProgress1.setVisibility(View.VISIBLE);
myProgress2.setVisibility(View.VISIBLE);
myProgress1.setMax(100);
myProgress1.setProgress(0);
myProgress2.setProgress(0);
//通过线程来改变Progress的值
new Thread(new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
for(int i=0;i<10;i++){
try{
intCounter=(i+1)*20;
Thread.sleep(1000);
if(i==4){
Message m = new Message();
m.what = ProgressBarA.GUI_STOP_NOTIFIER;
ProgressBarA.this.myMessageHandler.sendMessage(m);
break;
}
else{
Message m = new Message();
m.what = ProgressBarA.GUI_THREADING_NOTIFIER;
ProgressBarA.this.myMessageHandler.sendMessage(m);
}
}
catch(Exception e){
e.printStackTrace();
}
}
}
}).start();
}
});
}
Handler myMessageHandler = new Handler(){
public void handleMessage(Message msg){
switch(msg.what){
case ProgressBarA.GUI_STOP_NOTIFIER:
//myProgress1.setVisibility(View.GONE);
//myProgress2.setVisibility(View.GONE);
//Thread.currentThread().interrupt();
break;
case ProgressBarA.GUI_THREADING_NOTIFIER:
if(!Thread.currentThread().isInterrupted()){
myProgress1.setProgress(intCounter);
myProgress1.setProgress(intCounter);
setProgress(intCounter*100);//设置标题栏中前景的一个进度条进度值
//setSecondaryProgress(intCounter*100);//设置标题栏中后面的一个进度条进度值
//Thread.currentThread().interrupt();
}
break;
}
super.handleMessage(msg);
}
};
}
</textarea><br>14.SeekBar的使用,代码如下:
<textarea readonly name="code" class="java">implements SeekBar.OnSeekBarChangeListener
//实现OnSeekBarChangeListener接口
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
// TODO Auto-generated method stub
myProgressText.setText("当前值:"+ progress);
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
myTrackingText.setText("正在调节");
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
myTrackingText.setText("停止调节");
}
}
</textarea>
<textarea readonly name="code" class="java"> myIntent = new Intent(Notification01.this,Notification02.class);
//主要是设置点击通知时显示内容的类
myPendingIntent = PendingIntent.getActivity(Notification01.this, 0, myIntent, 0);
//构造Notification对象
myNotification = new Notification();
myButton1.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//设置通知在状态栏显示的图标
myNotification.icon = R.drawable.ic_launcher;
myNotification.tickerText = "Button1的通知内容...";
//通知时发出默认的声音
myNotification.defaults = Notification.DEFAULT_SOUND;
//设置通知显示的参数
myNotification.setLatestEventInfo(Notification01.this,"Button1","Button1通知",myPendingIntent);
//可以理解为执行这个通知
myNotificationManager.notify(0,myNotification);
}
});</textarea><p align="left">16.ProgressDialog的使用,代码如下:
<textarea readonly name="code" class="java"> myButton01 = (Button)findViewById(R.id.Button1);
myButton02 = (Button)findViewById(R.id.Button2);
myButton01.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//创建ProgressDialog对象
myProgressDialog = new ProgressDialog(ProgressDialogActivity.this);
//设置进度条风格,风格为圆形的,旋转的
myProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
//设置ProgressDialog标题
myProgressDialog.setTitle("提示");
//设置ProgressDialog提示信息
myProgressDialog.setMessage("这是一个圆形进度条对话框");
//设置myProgressDialog标题图标
myProgressDialog.setIcon(R.drawable.ic_launcher);
//设置myProgressDialog的进度条是否不明确
myProgressDialog.setIndeterminate(false);
//设置myProgressDialog是否可以按退回键取消
myProgressDialog.setCancelable(true);
//设置myProgressDialog的一个Button
myProgressDialog.setButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
//点击确定取消对话框
dialog.cancel();
}
});
//让ProgressDialog显示
myProgressDialog.show();
}
});
myButton02.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
myCount = 0;
//创建ProgressDialog对象
myProgressDialog = new ProgressDialog(ProgressDialogActivity.this);
//设置进度条风格,风格为长形的。
myProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
//设置ProgressDialog标题
myProgressDialog.setTitle("提示");
//设置ProgressDialog提示信息
myProgressDialog.setMessage("这是一个长形进度条对话框");
//设置myProgressDialog标题图标
myProgressDialog.setIcon(R.drawable.ic_launcher);
//设置myProgressDialog进度条进度
myProgressDialog.setProgress(100);
//设置myProgressDialog的进度条是否不明确
myProgressDialog.setIndeterminate(false);
//设置myProgressDialog是否可以按退回键取消
myProgressDialog.setCancelable(true);
//设置myProgressDialog的一个Button
myProgressDialog.setButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
//点击确定取消对话框
dialog.cancel();
}
});
//让ProgressDialog显示
myProgressDialog.show();
new Thread(){
public void run(){
try{
while(myCount <= 100){
//由线程来控制进度
myProgressDialog.setProgress(myCount++);
Thread.sleep(100);
}
myProgressDialog.cancel();
}
catch(InterruptedException e){
myProgressDialog.cancel();
}
}
}.start();
}
});
</textarea>17.TabWidget的使用,代码如下:[/b]
要使用TabWidget,首先要了解TabHost,TabHost是一个用来存放Tab标签的容器。<br>
<textarea readonly name="code" class="java">public class TabHostActivity extends TabActivity {
TabHost myTabHost;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//获取TabHost对象
myTabHost = getTabHost();
//为TabHost添加标签,新建一个newTabSpec(newTabSpec)设置其标签和图标(setIndicator)设置内容(setContent)
myTabHost.addTab(myTabHost.newTabSpec("tabHost1").setIndicator("TAB 1", getResources().getDrawable(R.drawable.ic_launcher)).setContent(R.id.myTabContent1));
myTabHost.addTab(myTabHost.newTabSpec("tabHost2").setIndicator("TAB 2", getResources().getDrawable(R.drawable.ic_launcher)).setContent(R.id.myTabContent2));
myTabHost.addTab(myTabHost.newTabSpec("tabHost3").setIndicator("TAB 3", getResources().getDrawable(R.drawable.ic_launcher)).setContent(R.id.myTabContent3));
//设置TabHost的背景颜色
myTabHost.setBackgroundColor(Color.argb(150, 22, 70, 150));
//设置当前显示哪个标签
myTabHost.setCurrentTab(1);
//标签切换事件处理setOnTabChangedListener
myTabHost.setOnTabChangedListener(new TabHost.OnTabChangeListener() {
@Override
public void onTabChanged(String tabId) {
// TODO Auto-generated method stub
Dialog dialog = new AlertDialog.Builder(TabHostActivity.this).setTitle("提示").setMessage("当前选中"+tabId).setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dialog.cancel();
}
}).create();
dialog.show();
}
});
}
}</textarea>
发表评论
-
Android相关工具地址
2012-02-08 15:57 804SDK: http://developer.andr ... -
线程循环
2012-02-07 14:28 841@selector(xxxThread)方法以后,在方 ... -
按钮实现spinner
2012-02-03 12:43 911int cityID=0; //用于默认选择哪个 ... -
mysql使用rand随机查询记录效率测试
2012-02-03 09:24 761一直以为mysql随机查询几条数据,就用 SELECT ... -
Struts 标签疑难问题收集-乔乐共享
2012-02-02 15:14 885循环List:private List list; & ... -
传智播客java基础加强ppt
2012-01-31 16:13 1618<p>????? 如果想把java基础打牢 ... -
SQLServer2005和2008的分页技术比较
2012-01-31 15:53 1987<span style="fon ... -
eclipse3.7 添加任务标记
2012-01-31 15:23 2399<p>在编写程序时有一些工作要等到以后才做 ... -
SSH through proxy to visit ssh.github.com (ZZ)
2012-01-31 14:58 1931<p>Scenario:</p> ... -
js截取最后一个.的字符串(IP地址判断)
2012-01-11 14:18 2277[size=small;] 由于我们的项目中需 ... -
Project configuration is not up-to-date with pom.xml. 问题解决
2012-01-11 13:09 2092<span>Project configu ... -
java.lang.IllegalStateException: No WebApplicationContext found: no ContextLoaderListener registered
2011-12-28 12:28 5526<span style="font-f ... -
centos相关
2011-12-28 11:34 856比较新的源 rpm -Uvh http://dow ... -
poi 取消科学计数法
2011-12-21 13:33 2260[size=medium;]<br>[/s ... -
lucene索引和搜索过程中的核心类介绍
2011-12-21 12:54 1250lucene索引和搜索过 ... -
局域网指定ip断网工具源码
2011-12-20 13:53 2062只适用于小型局域网 <br> <s ... -
asp.net+Access简单企业站源码
2011-12-20 12:04 3186<span style="font-f ... -
50个GMail的邀请权 想要的留下EMail
2011-12-15 13:34 770今天看到自己已经有50个GMail的邀请权了 想要的请 ... -
MapXtreme2004代码 在地图上新增加点图元
2011-12-15 13:29 817sender, System.EventArgs e ... -
About .Net Petshop
2011-12-14 19:29 741<span style="" ...
相关推荐
根据提供的信息,我们可以推断出《Android应用开发揭秘》这本书主要涵盖了Android应用程序的开发流程及相关技术,适合初学者作为入门指南。尽管具体内容未给出详细章节或摘要,但基于标题、描述及常见Android开发...
《Android应用开发揭秘》是一本深入探讨Android应用开发的专业书籍,涵盖了从基础知识到高级技术的全方位解析。书中通过源码分析和实例讲解,帮助开发者理解Android系统的内部运作机制,提升应用设计与开发的能力。 ...
《Android应用开发揭秘高清版》是一本深入探讨Android应用程序开发的专业书籍,对于想要在移动平台领域一展拳脚的开发者来说,它无疑是一份宝贵的参考资料。该资源包含一个PDF文件,大小为47.2 MB,确保了内容的清晰...
《Android应用开发揭秘》全部实例源代码,配合《Android应用开发揭秘》使用 前言 第一部分 准备篇 第1章 Android开发简介 1.1 Android基本概念 1.1.1 Android简介 1.1.2 Android的系统构架 1.1.3 ...
《Android Framework 开发揭秘》这本书深入剖析了Android系统的内部运作机制,是Android开发者提升技术深度的宝贵资料。它涵盖了从系统启动到服务框架的构建,再到关键组件的工作原理,旨在帮助读者理解和掌握...
本书《Android应用开发揭秘》深入探讨了Android系统在移动互联网时代的地位和其对PC时代的影响力,强调了其作为移动设备操作系统的优势,包括开放性和免费的特性,以及它在全球开发者社区和一流手机厂商中的广泛支持...
《Android Framework 开发揭秘》是腾讯技术团队倾力打造的一部深入探讨Android系统框架底层原理的专业书籍。本书针对Android开发者,尤其是对系统级开发有深厚兴趣的工程师们,旨在揭示Android系统的神秘面纱,帮助...
杨丰盛,Android应用开发先驱,对Android有深入研究,实战经验极其丰富。精通Java、C、C++等语言,专注于移动通信软件开发,在机顶盒软件开发和MTK平台软件开发方面有非常深厚的积累。2007年获得中国软件行业协会...
"Android应用开发揭秘(源码)" 提供了深入洞察Android应用构建过程的机会,这对于初学者和有经验的开发者来说都是一个不可多得的学习资料。这份源码涵盖了多个关键知识点,下面我们将逐一探讨。 1. **Activity生命...
《Android应用开发揭秘》这本书是Android开发者们的重要参考资料,它深入浅出地讲解了Android应用开发的各个环节。源代码作为书中的实践部分,是理论知识的直观体现,可以帮助读者更好地理解和掌握Android编程技术。...
《Android应用开发揭秘》是一本深入探讨Android应用开发的专业书籍,其随书附带的源代码为读者提供了实践和学习的宝贵资源。本书主要涵盖了Android平台的各个方面,旨在帮助开发者从基础到高级深入理解Android应用的...
第2篇为应用开发篇,通过实例介绍了Android UI布局、Android人机界面、手机硬件设备的使用、Android本地存储系统、Android中的数据库、多线程设计、Android传感器、Android游戏开发基础、Android与Internet,以及...
《Android应用开发揭秘》这本书是Android开发者的重要参考资料,它深入探讨了Android平台的应用开发技术,涵盖了从基础到高级的各种主题。以下将详细阐述书中的关键知识点: 1. **Android系统架构**:Android系统由...
《Android应用开发揭秘》内容全面,不仅详细讲解了Android框架、Android组件、用户界面开发、游戏开发、数据存储、多媒体开发和网络开发等基础知识,而且还深入阐述了传感器、语音识别、桌面组件开发、Android游戏...
《Android应用开发揭秘》是一本深入探讨Android应用开发的专业书籍,涵盖了从基础知识到高级技术的全方位内容。这本书的PDF版本提供了详细的理论讲解和实例代码,是初学者和进阶开发者的重要参考资料。配合提供的...
在Android应用开发领域,这本书《Android应用开发揭秘》是一本极具价值的资源,它深入浅出地探讨了Android开发与传统Java开发的区别,并且针对个人和小团队开发者提供了实用的指导。书中通过精选的实例,讲解了从...
《Android应用开发揭秘》这本书作为国内首部基于Android 2.0版本的经典之作,由五个专业社区联合推荐,其权威性和实用性不容小觑。本书涵盖了Android应用开发的基础知识与高级技术,通过大量的实例来帮助读者深入...
- **内容覆盖**:本书内容全面,涵盖了从Android框架基础到高级应用开发的各个层面,不仅适合初学者入门,也适用于有一定经验的开发者进阶学习。 #### 二、Android基础知识 - **Android系统架构**:首先介绍了...
在移动应用开发领域,用户界面(User Interface, UI)设计对于提升用户体验至关重要。Android作为全球最广泛使用的移动操作系统之一,其UI开发能力备受关注。本次Android UI开发专题旨在深入探讨Android平台上UI设计...