口碑apk反编译后研究中

manifest

<application .. android:name="KoubeiApp">

KoubeiApp.java应该是应用程序获取客户端一些通用信息,跟.net,global类似

static
{
fileName
= "config.properties";
sp
= null;
DEVICE_MODEL
= Build.MODEL;
StringBuilder localStringBuilder1
= new StringBuilder().append("android_");
String str1
= Build.VERSION.SDK;
CLIENT_OS
= str1;
CLIENT_VERSION
= "1.3";
CLIENT_ID
= "00000000000000";
CLIENT_POS_X
= "";
CLIENT_POS_Y
= "";
CLIENT_LOCAL_CITYNAME
= "鍖椾含";
CLIENT_LOCAL_CITYID
= "99";
CLIENT_SOURCE
= "koubei";
CLIENT_CITY_NAME
= null;
CLIENT_CITY_ID
= null;
CLIENT_SCREEN_SIZE
= "320*480";
StringBuilder localStringBuilder2
= new StringBuilder();
String str2
= Build.MODEL;
StringBuilder localStringBuilder3
= localStringBuilder2.append(str2);
String str3
= Build.VERSION.RELEASE;

 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

放在onCreate后,setControlView之前,全屏(隐藏上方电量等属性)

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);设置屏幕竖排,横排或其他(枚举);

关于闪屏(就是首页停留几秒然后跳转,像html的setTimeout和setInternal)

Message msg = new Message(); msg.what = STOPSPLASH; splashHandler.sendMessageDelayed(msg, SPLASHTIME);

这个网上有好几种方式,目前研究不深,搞不清哪种比较好,http://www.cnblogs.com/royenhome/archive/2010/05/05/1727971.html?login=1他这里像是线程暂停,按下Menu键的话,直接跳过闪屏进入主界面;若按 下Back键的话,则直接退出主程序。还不错!我准备用这种方式

asynctask异步加载数据(有几种方法,关键要能用,找了这个)

public class Main extends Activity {

private LayoutInflater m_flater = null;
private LinearLayout mFlash;

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.flash);
mFlash
= (LinearLayout) findViewById(R.id.mFlash);
mFlash.startAnimation(AnimationUtils
.loadAnimation(
this, R.anim.fadeout));
m_flater
= getLayoutInflater();
LoadMainTask task
= new LoadMainTask(this);
task.execute(
"");

}

public View LoadMainView(LayoutInflater flater) {
View view
= flater.inflate(R.layout.main, null);
Button btnOk
= (Button) view.findViewById(R.id.BtnOk);
btnOk.setOnClickListener(
new OnClickListener() {
public void onClick(View v) {
finish();
}
});
return view;
}

private class LoadMainTask extends AsyncTask<Object, Object, View> {
public LoadMainTask(Context context) {
}

protected View doInBackground(Object... params) {
View view
= null;
view
= LoadMainView(m_flater);
// 为了测试加了延时,大家可以在这一块加载资源,数据等
try {
Thread.sleep(
3000);
}
catch (InterruptedException e) {
e.printStackTrace();
}
return view;
}

// 执行完毕
protected void onPostExecute(View view) {
setContentView(view);
}
}

}

退出时自动弹出框提示是否要退出~

View Code
1 public boolean onKeyDown(int keyCode, KeyEvent event) {
2 // TODO Auto-generated method stub
3  
4 if(keyCode == KeyEvent.KEYCODE_BACK ){
5 AlertDialog.Builder builder=new AlertDialog.Builder(this);
6 builder.setTitle("提示");
7 builder.setMessage("确定要退出程序?");
8 builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
9
10 @Override
11 public void onClick(DialogInterface dialog, int which) {
12 // TODO Auto-generated method stub
13   dialog.dismiss();
14 finish();
15 }
16 });
17 builder.setNeutralButton("取消", new DialogInterface.OnClickListener() {
18
19 @Override
20 public void onClick(DialogInterface dialog, int which) {
21 // TODO Auto-generated method stub
22 dialog.dismiss();
23 }
24 });
25 builder.show();
26 return true;
27 }else{
28
29 return super.onKeyDown(keyCode, event);
30 }
31 }
原文地址:https://www.cnblogs.com/zwl12549/p/2007748.html