`
tomgooityeeee
  • 浏览: 73899 次
文章分类
社区版块
存档分类
最新评论
阅读更多

    <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>
 
1
0
分享到:
评论

相关推荐

    Android应用开发揭秘-pdf(全)

    根据提供的信息,我们可以推断出《Android应用开发揭秘》这本书主要涵盖了Android应用程序的开发流程及相关技术,适合初学者作为入门指南。尽管具体内容未给出详细章节或摘要,但基于标题、描述及常见Android开发...

    Android应用开发揭秘-源码+pdf(全清晰)

    《Android应用开发揭秘》是一本深入探讨Android应用开发的专业书籍,涵盖了从基础知识到高级技术的全方位解析。书中通过源码分析和实例讲解,帮助开发者理解Android系统的内部运作机制,提升应用设计与开发的能力。 ...

    Android应用开发揭秘高清版

    《Android应用开发揭秘高清版》是一本深入探讨Android应用程序开发的专业书籍,对于想要在移动平台领域一展拳脚的开发者来说,它无疑是一份宝贵的参考资料。该资源包含一个PDF文件,大小为47.2 MB,确保了内容的清晰...

    《Android应用开发揭秘》附带光盘代码.

    《Android应用开发揭秘》全部实例源代码,配合《Android应用开发揭秘》使用 前言  第一部分 准备篇  第1章 Android开发简介  1.1 Android基本概念  1.1.1 Android简介  1.1.2 Android的系统构架  1.1.3 ...

    android framework 开发揭秘

    《Android Framework 开发揭秘》这本书深入剖析了Android系统的内部运作机制,是Android开发者提升技术深度的宝贵资料。它涵盖了从系统启动到服务框架的构建,再到关键组件的工作原理,旨在帮助读者理解和掌握...

    Android应用开发揭秘(pdf )

    本书《Android应用开发揭秘》深入探讨了Android系统在移动互联网时代的地位和其对PC时代的影响力,强调了其作为移动设备操作系统的优势,包括开放性和免费的特性,以及它在全球开发者社区和一流手机厂商中的广泛支持...

    Android Framework 开发揭秘

    《Android Framework 开发揭秘》是腾讯技术团队倾力打造的一部深入探讨Android系统框架底层原理的专业书籍。本书针对Android开发者,尤其是对系统级开发有深厚兴趣的工程师们,旨在揭示Android系统的神秘面纱,帮助...

    《Android应用开发揭秘》源码

     杨丰盛,Android应用开发先驱,对Android有深入研究,实战经验极其丰富。精通Java、C、C++等语言,专注于移动通信软件开发,在机顶盒软件开发和MTK平台软件开发方面有非常深厚的积累。2007年获得中国软件行业协会...

    Android应用开发揭秘(源码)

    "Android应用开发揭秘(源码)" 提供了深入洞察Android应用构建过程的机会,这对于初学者和有经验的开发者来说都是一个不可多得的学习资料。这份源码涵盖了多个关键知识点,下面我们将逐一探讨。 1. **Activity生命...

    《Android应用开发揭秘》源代码(全)

    《Android应用开发揭秘》这本书是Android开发者们的重要参考资料,它深入浅出地讲解了Android应用开发的各个环节。源代码作为书中的实践部分,是理论知识的直观体现,可以帮助读者更好地理解和掌握Android编程技术。...

    Android应用开发揭秘 源代码(全)

    《Android应用开发揭秘》是一本深入探讨Android应用开发的专业书籍,其随书附带的源代码为读者提供了实践和学习的宝贵资源。本书主要涵盖了Android平台的各个方面,旨在帮助开发者从基础到高级深入理解Android应用的...

    android应用开发范例精解

    第2篇为应用开发篇,通过实例介绍了Android UI布局、Android人机界面、手机硬件设备的使用、Android本地存储系统、Android中的数据库、多线程设计、Android传感器、Android游戏开发基础、Android与Internet,以及...

    《Android应用开发揭秘》pdf

    《Android应用开发揭秘》这本书是Android开发者的重要参考资料,它深入探讨了Android平台的应用开发技术,涵盖了从基础到高级的各种主题。以下将详细阐述书中的关键知识点: 1. **Android系统架构**:Android系统由...

    Android应用开发揭秘pdf高清版

    《Android应用开发揭秘》内容全面,不仅详细讲解了Android框架、Android组件、用户界面开发、游戏开发、数据存储、多媒体开发和网络开发等基础知识,而且还深入阐述了传感器、语音识别、桌面组件开发、Android游戏...

    android应用开发揭秘pdf全+源码

    《Android应用开发揭秘》是一本深入探讨Android应用开发的专业书籍,涵盖了从基础知识到高级技术的全方位内容。这本书的PDF版本提供了详细的理论讲解和实例代码,是初学者和进阶开发者的重要参考资料。配合提供的...

    Android应用开发揭秘(附源码)

    在Android应用开发领域,这本书《Android应用开发揭秘》是一本极具价值的资源,它深入浅出地探讨了Android开发与传统Java开发的区别,并且针对个人和小团队开发者提供了实用的指导。书中通过精选的实例,讲解了从...

    Android应用开发揭秘

    《Android应用开发揭秘》这本书作为国内首部基于Android 2.0版本的经典之作,由五个专业社区联合推荐,其权威性和实用性不容小觑。本书涵盖了Android应用开发的基础知识与高级技术,通过大量的实例来帮助读者深入...

    android开发应用揭秘

    - **内容覆盖**:本书内容全面,涵盖了从Android框架基础到高级应用开发的各个层面,不仅适合初学者入门,也适用于有一定经验的开发者进阶学习。 #### 二、Android基础知识 - **Android系统架构**:首先介绍了...

    Android UI开发专题

    在移动应用开发领域,用户界面(User Interface, UI)设计对于提升用户体验至关重要。Android作为全球最广泛使用的移动操作系统之一,其UI开发能力备受关注。本次Android UI开发专题旨在深入探讨Android平台上UI设计...

Global site tag (gtag.js) - Google Analytics