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

    <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应用程序开发教程(第2版)》教学课件02Android UI设计.pdf

    《Android应用程序开发教程(第2版)》教学课件02Android UI设计.pdf《Android应用程序开发教程(第2版)》教学课件02Android UI设计.pdf《Android应用程序开发教程(第2版)》教学课件02Android UI设计.pdf《Android应用...

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

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

    Android应用开发揭秘(pdf )

    Android应用开发揭秘  Windows操作系统的诞生成就了微软的霸主地位,也造就了PC时代的繁荣。然而,以Android和iPhone手机为代表  的智能移动设备的发明却敲响了PC时代的丧钟!移动互联网时代(3G时代)已经来临,谁...

    《Android应用开发揭秘》源码

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

    android应用开发范例精解

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

    Android应用开发揭秘pdf高清版

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

    Android UI开发专题

    Android UI开发专题(一) 之界面设计 近期很多网友对Android用户界面的设计表示很感兴趣,对于Android UI开发自绘控件和游戏制作而言掌握好绘图基础是必不可少的。本次专题分10节来讲述,有关OpenGL ES相关的可能将...

    Android应用开发案例教程 (毋建军、徐振东、林瀚 编著) pdf

    全书论述了Android开发概述,Android应用程序组成,Android UI(用户界面)基础,Android UI系统控件基础,Android UI系统控件进阶,Android UI菜单、对话框,Android组件广播消息与服务,Android数据存储与访问,...

    老罗Android开发视频教程-Android常用UI控件编程【32集】

    教程名称: 老罗Android开发视频教程-Android常用UI控件编程【32集】【】Android常用UI控件编程第七集【】Android常用UI控件编程第二十三集【】Android常用UI控件编程第二十九集【】Android常用UI控件编程第二十二...

    Android 平板电脑应用开发入门经典

    《Android平板电脑应用开发入门经典》向Android新手快速介绍了如何使用Android 3开发平板应用。经验丰富的作者Wei-Meng Lee首先介绍了如何安装必要的工具并编写HelloWorld应用。接下来介绍Android平板应用的各种组件...

    Android开发与应用——张荣 原书配套例程代码

    Android开发与应用——张荣 原书配套例程代码。 Android开发与应用——张荣 原书配套例程代码, 由于书籍的前三章是介绍Android和开发环境的搭建的 所以例程代码从第四章开始到第九章。 原书目录如下。 第1章 ...

    Android应用开发精解 pdf

    高磊、杨诚、元凯编著的《Android应用开发精解(工程师经验手记)》以Android应用开发所需要的技术为线索,先后讲解了SDK一些工具的使用、UI开发、Service开发、数据存储、图形动画、网络开发、硬件操作、结合Web...

    Android开发教程(完整版)

    新版Android开发教程+笔记五--模拟器、应用1、2.pdf 新版Android开发教程+笔记六--应用3、4 布局.pdf 新版Android开发教程+笔记七--基础UI编程1.pdf 新版Android开发教程+笔记八--基础UI编程2.pdf 新版Android开发...

    《Android应用开发揭秘》源码.rar

    不仅详细讲解了android框架、android组件、用户界面开发、游戏开发、数据存储、多媒体开发和网络开发等基础知识,而且还深入阐述了传感器、语音识别、桌面组件开发、android游戏引擎设计、android应用优化、opengl等...

    android UI开发推荐颜色

    android UI开发推荐颜色 android UI开发推荐颜色 android UI开发推荐颜色

    c#开发Android应用实战

    您将深入理解屏幕控件、UI开发、表、布局和MonoDevelop等知识点,并驾轻就熟地使用Mono for Android来规划、构建和开发Android应用程序。 主要内容 ◆ 介绍如何使用您已经掌握的C# 和.NET技术来构建Android app ◆ ...

    Android高级开发实战UI、NDK与安全

    资源名称:Android高级开发实战 UI、NDK与安全内容简介:本书首先讲解Windows和Linux操作系统下安装开发Android所需的工具集及Android程序执行流程。其次对Android中的基础UI和高级UI的开发技巧进行了全面、透彻的...

    Android应用开发案例教程

    《Android应用开发案例教程(高等学校计算机科学与技术项目驱动案例实践规划教材)》编著者毋建军、徐振东、林瀚。, 《Android应用开发案例教程(高等学校计算机科学与技术项目驱动案例实践规划教材)》应用“项目驱动...

Global site tag (gtag.js) - Google Analytics