在Android里,我们通常是通过Progress Dialog来显示一个“加载中”对话框,这个类封装在Android.app.ProgressDialog里,但需要留意的是Android的Progerss Dialog必须要在后台程序运行完毕前,以dismiss()方法来关闭取得焦点的对话框,否则程序就会陷入无法终止的无穷循环中;又或者在线程里不可有任何更改Context或parent View的任何状态、文字输出等事件,因为线程里的Context与View并不属于parent,两者之间也没有关联。所以在下面的范例中,我们以线程(Thread)来模拟后台的运行,再通过线程运行完毕时,关闭这个加载中的动画对话框。
package com.example.test01; import java.util.Calendar; import android.app.Activity; importandroid.app.ProgressDialog; importandroid.content.DialogInterface; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.View; importandroid.widget.Button; importandroid.widget.TextView; public class MainActivityextends Activity { Button button01; TextView textView01; ProgressDialog progressDialog; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button01 = (Button)findViewById(R.id.button01); textView01 = (TextView)findViewById(R.id.textView01); button01.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { //显示Progress对话框 progressDialog =ProgressDialog.show(MainActivity.this, "正在努力加载...","稍等一会儿吧~" , true); textView01.setText("正在加载"); progressDialog.setOnDismissListener(newDialogInterface.OnDismissListener() { public voidonDismiss(DialogInterface dialog) {}}); //开启新线程 new Thread() { public void run() { try { //这里写上要后台运行的代码段 //为了明显看见效果,以暂停3秒作为示范 sleep(3000); } catch (Exception e) { e.printStackTrace(); } finally { //卸载所创建的ProgressDialog对象 progressDialog.dismiss(); } }; }.start(); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action barif it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
Android.app.ProgressDialog类中,有如下几种ProgressDialog构造的方法:
Static
ProgressDialog.show (Context context, CharSequence title, CharSequence message)
Static
ProgressDialog.show (Context context, CharSequence title, CharSequence message, boolean indeterminate)
Static
ProgressDialog.show (Context context, CharSequence title, CharSequence message, boolean indeterminate, boolean cancelable)
Static
ProgressDialog.show (Context context, CharSequence title, CharSequence message, boolean indeterminate, boolean cancelable, DialogInterface.OnCancelListener cancelListener)
需要留意的是,第一个参数必须为目前运行Activity的Context,否则会报错,所以在本范例中使用的是MainActivity.this;而为了让跳出的ProgressDialog显示标题以及内容,所以用到了第二第三个参数,最后一个参数可传可不传。
1.进入xcode
2.右上角的【Origanizer】
3.左边工程下的【Screenshots】
4.xcode右下角的【New Screenshots】
这样就可以给运行在真机上的应用程序截图了
在我们这个神奇的国度里,每天都有很多匪夷所思的故事一幕幕上演着,给国人增长见识,开拓眼界。
前天有一则题为《农民捡到SIM卡上网,花掉25万遭刑拘》的新闻很轰动,名叫张艳胜的河南农民捡到一张中国移动的SIM卡后,将其插在电脑的无线网卡盒内上网,没想到竟然连接到了无线网。张艳胜就抱着侥幸心理“免费上网”,心里盘算着把卡里的钱用完就扔。谁知道他“运气太好”,这张卡一直用了7个月也没断网,直到警察叔叔驾到,张艳胜才知道他已经“欠费”25万元。
根据工信部相关规定,电信企业在用户包月使用的流量达15G或资费达500元时有停机封顶的义务。而且专们用来约束三大运营商《电信条例》第34条规定,电信用户出现巨额费用时,电信企业有迅速告知及采取相应措施的法定义务。
张艳胜捡到的这张卡,流量超15G和资费费达到500元时候并未停机;而且产生巨额费用之后,长沙移动也并没联系SIM卡主--中联重科下属一个分公司。
不过长沙移动方面给出的解释是:该公司和中联重科签订了托收协议,意思是中联重科用多少流量长沙移动就提供多少,保障不停机。
于是,在湖南移动向中联重科伸手要钱之后,中联被吓了一跳--毕竟包月才10元的一张SIM卡产生25万的费用,搁谁也接受不了。于是中联报案,警方抓捕了张艳胜。而后中联又与张艳胜的妻子寻求“私了”,索求十万元,张妻以为是“一手交钱一手交人”,就凑够了钱送过去,谁知道结果并非如此。这一刺激,张妻腹内的胎儿也流产了。--一张SIM卡引发了一场血案。
而冷静下来我们思考“祸源”在何方。张艳胜虽然是贪图小便宜,但这罪过不足以让他为25万的巨额费用埋单。中联重科在此案中也处于受害者的位置,但是也应承担责任,至少卡是它的,是公司一时监管懈怠才造成25万元流向长沙移动。而长沙移动呢,似乎是最有道理的一方--你用了我的服务,理应付费--这就和上车买票一样。
但是细细琢磨,长沙移动似乎有点太不“厚道”,它对于客户的“资金异常”毫不过问,而且是连续七个月不过问,直到要钱那天才告诉你欠了我25万。当然,有人可以说:你用我的服务,我提供给你,我干嘛要对你负责?--所以这个问题就上升到了社会道德的层面。
众所周知,酒店、银行、餐馆等企业为了提高市场竞争力,在做好产品的基础之上往往更注重服务,就像为什么麦当劳、肯德基屡屡爆出食品安全问题依然门庭若市,而某些国产餐饮连锁虽然挂着好几个A的质检证明,依然门可罗雀,因为老百姓已经知道,麦当劳、肯德基里的厕所免费使用,大堂内随便找个座位坐到天荒地老也没人轰--这就是一种服务。
无论是跨国企业如戴尔、惠普、IBM,现在都在提倡为个人和企业客户提供金牌服务;还是国内的京东、国美、苏宁几大电商也在拼物流物流服务、售后服务;就连大街小巷的餐馆也在提供免费送餐服务,抢夺顾客。
在整个全球市场都在喊着“服务就是竞争力”的时候,我国的几大巨头企业似乎对这种声音充耳不闻。就像张艳胜这件事,如果中国移动的服务做到位,它们完全可以在第一个月就通知中联重科:“你们一张SIM卡的消费有些异常,请问发生了什么事?”一个电话,就能避免一场悲剧。
就算长沙移动将25万要到手,可是这笔钱能堵得上自己形象上已经造成的“信任漏洞”吗,现在看网友关于此新闻的评论,百分之九十以上都在骂中国移动,长沙移动真是实实在在的“坑爹”了,把整个集团的形象抹黑了--李天一有个将军老爹,可也禁不住他一坑再坑。
有人认为这是垄断滋生的高枕无忧心理,不过,某些公司千万得看最近的《新闻联播》,要知道号称“铁老大”的铁道部那么牛,现在不是也没了吗?