80,337
社区成员
发帖
与我相关
我的任务
分享
public class LogoActivity extends Activity {
private ImageView logo = null;
private Animation animation = null;
private HashMap<String, Button> buttons = new HashMap<String, Button>();
private InitButton initButton = new InitButton();//建个序列化
private Handler handler = new Handler(){
public void handleMessage(Message msg){
//添加按钮
buttons.put("b1", (Button)LogoActivity.this.findViewById(R.id.b1));
buttons.put("b2", (Button)LogoActivity.this.findViewById(R.id.b2));
buttons.put("b3", (Button)LogoActivity.this.findViewById(R.id.b3));
buttons.put("b4", (Button)LogoActivity.this.findViewById(R.id.b4));
initButton.setInitButton(buttons);//设置控件初始化
}
};
protected void onCreate(Bundle savedInstanceState) {
//新起线程,初始化控件数据
new Thread(){
public void run(){
handler.sendEmptyMessage(0);
}
}.start();
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_logo);
//启动logo画面
logo = (ImageView)this.findViewById(R.id.logoID);
animation = AnimationUtils.loadAnimation(this, R.anim.logo_animation);
logo.startAnimation(animation);
animation.setAnimationListener(new AnimationListener() {
public void onAnimationEnd(Animation animation) {
Bundle bundle = new Bundle();
bundle.putSerializable("test", initButton);//传递对象,参数序列化
Intent intent = new Intent(LogoActivity.this, MainActivity.class);
intent.putExtras(bundle);
LogoActivity.this.startActivity(intent);
LogoActivity.this.finish();
}
});
}
/*实现接口*/
。
。
。
。
}
InitButton :
public class InitButton implements Serializable{
HashMap<String, Button> initButton = new HashMap<String, Button>();
public HashMap<String, Button> getInitButton() {
return initButton;
}
public void setInitButton(HashMap<String, Button> initButton) {
this.initButton = initButton;
}
public InitButton(){
}
}
MainActivity :
public class MainActivity extends Activity{
private HashMap<String, Button> buttons = new HashMap<String, Button>();
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
this.setContentView(R.layout.activity_main);
Bundle bundle = this.getIntent().getExtras();
InitButton initButton = new InitButton();
initButton = (InitButton)bundle.getSerializable("test");//获得序列化对象
buttons = initButton.getInitButton();//控件集合
System.out.print(initButton);
Button b1 = buttons.get("b1");
Button b2 = buttons.get("b2");
Button b3 = buttons.get("b3");
Button b4 = buttons.get("b4");
}
}
因为考虑到findViewById()函数要耗的时间比较长,所以我在logo进入的时候,开启线程,进行把各个按钮控件都先找出来,然后先保存到集合里面,然后等logo动画完结的时候,再直接一个一个地赋值,我觉得效率比较高一点。。。
现在我想有没有办法,不用等logo动画完结,我就直接赋值完??
就相当于除了logo界面,其余的界面都在后台已经全部实现,就剩下显示那部分,相当于其他的activity隐藏一样,有没有这样的办法?
我想尽最大优化它。。。
public class LogoActivity extends Activity {
private ImageView logo = null;
private Animation animation = null;
private HashMap<String, Button> buttons = new HashMap<String, Button>();
private InitButton initButton = new InitButton();//建个序列化
private Handler handler = new Handler(){
public void handleMessage(Message msg){
//添加按钮
buttons.put("b1", (Button)LogoActivity.this.findViewById(R.id.b1));
buttons.put("b2", (Button)LogoActivity.this.findViewById(R.id.b2));
buttons.put("b3", (Button)LogoActivity.this.findViewById(R.id.b3));
buttons.put("b4", (Button)LogoActivity.this.findViewById(R.id.b4));
initButton.setInitButton(buttons);//设置控件初始化
}
};
protected void onCreate(Bundle savedInstanceState) {
//新起线程,初始化控件数据
new Thread(){
public void run(){
handler.sendEmptyMessage(0);
}
}.start();
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_logo);
//启动logo画面
logo = (ImageView)this.findViewById(R.id.logoID);
animation = AnimationUtils.loadAnimation(this, R.anim.logo_animation);
logo.startAnimation(animation);
animation.setAnimationListener(new AnimationListener() {
public void onAnimationEnd(Animation animation) {
Bundle bundle = new Bundle();
bundle.putSerializable("test", initButton);//传递对象,参数序列化
Intent intent = new Intent(LogoActivity.this, MainActivity.class);
intent.putExtras(bundle);
LogoActivity.this.startActivity(intent);
LogoActivity.this.finish();
}
});
}
/*实现接口*/
。
。
。
。
}
InitButton :
public class InitButton implements Serializable{
HashMap<String, Button> initButton = new HashMap<String, Button>();
public HashMap<String, Button> getInitButton() {
return initButton;
}
public void setInitButton(HashMap<String, Button> initButton) {
this.initButton = initButton;
}
public InitButton(){
}
}
MainActivity :
public class MainActivity extends Activity{
private HashMap<String, Button> buttons = new HashMap<String, Button>();
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
this.setContentView(R.layout.activity_main);
Bundle bundle = this.getIntent().getExtras();
InitButton initButton = new InitButton();
initButton = (InitButton)bundle.getSerializable("test");//获得序列化对象
buttons = initButton.getInitButton();//控件集合
System.out.print(initButton);
Button b1 = buttons.get("b1");
Button b2 = buttons.get("b2");
Button b3 = buttons.get("b3");
Button b4 = buttons.get("b4");
}
}
因为考虑到findViewById()函数要耗的时间比较长,所以我在logo进入的时候,开启线程,进行把各个按钮控件都先找出来,然后先保存到集合里面,然后等logo动画完结的时候,再直接一个一个地赋值,我觉得效率比较高一点。。。
现在我想有没有办法,不用等logo动画完结,我就直接赋值完??
就相当于除了logo界面,其余的界面都在后台已经全部实现,就剩下显示那部分,相当于其他的activity隐藏一样,有没有这样的办法?
我想尽最大优化它。。。