您的位置:首页 > 运维架构 > 网站架构

android学习 豆瓣 整体架构

2012-11-23 21:28 393 查看
这次的课程的架构不像上次的那么难 ,但是不能说不好,体现了简洁的智慧这是应该好好学习的

baseactivity:规范了一些需要的方法 初始化了重要的一些变量 初始化了一些控件

也可以在base中添加menu 按需添加

@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = new MenuInflater(this);
inflater.inflate(R.menu.main_tab_menu, menu);
return super.onCreateOptionsMenu(menu);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.main_tab_menu_clear_user:
System.out.println("clear");
SharedPreferences sp = getSharedPreferences("config", Context.MODE_PRIVATE);
Editor editor = sp.edit();
editor.putString("accesstoken", "");
editor.putString("tokensecret", "");
editor.commit();
break;
}
return super.onOptionsItemSelected(item);
}


baseactivity:

package cn.itcast.douban;

import com.google.gdata.client.douban.DoubanService;

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.view.animation.AlphaAnimation;
import android.view.animation.AnimationSet;
import android.view.animation.ScaleAnimation;
import android.widget.ImageButton;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;

public abstract class  BaseActivity extends Activity {
public TextView mTextViewTitle;
public RelativeLayout mRelativeLoading;
public DoubanService myService;
public ImageButton mImageBack;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String apiKey = "0c51c1ba21ad8cfd24f5452e6508a6f7";
String secret = "359e16e5e5c62b6e";

myService = new DoubanService("黑马小瓣瓣", apiKey,
secret);
//密钥设置给myService
SharedPreferences sp = getSharedPreferences("config", Context.MODE_PRIVATE);
String accesstoken = sp.getString("accesstoken", "");
String tokensecret = sp.getString("tokensecret", "");
myService.setAccessToken(accesstoken, tokensecret);
setupView();
setListener() ;
fillData();
}
public abstract void setupView();
public abstract void setListener();
public abstract void fillData();
public  void showLoading(){
mRelativeLoading.setVisibility(View.VISIBLE);
AlphaAnimation aa = new AlphaAnimation(0.0f, 1.0f);
aa.setDuration(1000);
ScaleAnimation sa = new ScaleAnimation(0.0f, 1.0f, 0.0f, 1.0f);
sa.setDuration(1000);
AnimationSet set = new AnimationSet(false);
set.addAnimation(sa);
set.addAnimation(aa);
mRelativeLoading.setAnimation(set);
mRelativeLoading.startAnimation(set);
}
public  void hideLoading(){
AlphaAnimation aa = new AlphaAnimation(1.0f, 0.0f);
aa.setDuration(1000);
ScaleAnimation sa = new ScaleAnimation(1.0f, 0.0f, 1.0f,0.0f);
sa.setDuration(1000);
AnimationSet set = new AnimationSet(false);
set.addAnimation(sa);
set.addAnimation(aa);
mRelativeLoading.setAnimation(set);
mRelativeLoading.startAnimation(set);
mRelativeLoading.setVisibility(View.INVISIBLE);
}

public void showToast(String text){
Toast.makeText(this, text, 0).show();
}

}
获取信息的页面

package cn.itcast.douban;

import java.io.IOException;

import cn.itcast.douban.util.LoadImageAsynTask;
import cn.itcast.douban.util.LoadImageAsynTask.LoadImageAsynTaskCallback;

import com.google.gdata.data.Link;
import com.google.gdata.data.TextContent;
import com.google.gdata.data.douban.UserEntry;
import com.google.gdata.util.ServiceException;

import android.graphics.Bitmap;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.AlphaAnimation;
import android.view.animation.AnimationSet;
import android.view.animation.ScaleAnimation;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;

public class MyInfoActivity extends BaseActivity implements OnClickListener {
private TextView tv_name;
private TextView tv_location;
private TextView tv_info;
private ImageView iv_icon;
String name ;
String location ;
String content ;
String iconurl;
@Override
protected void onCreate(Bundle savedInstanceState) {
//保证首先设置contentview 然后再去调用父类的方法
setContentView(R.layout.my_info);
super.onCreate(savedInstanceState);
setupView();
setListener();
fillData();

}

@Override
public void setupView() {
tv_name= (TextView) this.findViewById(R.id.txtUserName);
tv_location= (TextView) this.findViewById(R.id.txtUserAddress);
tv_info= (TextView) this.findViewById(R.id.txtUserDescription);
iv_icon = (ImageView)this.findViewById(R.id.imgUser);
mRelativeLoading = (RelativeLayout) this.findViewById(R.id.loading);
mTextViewTitle = (TextView) this.findViewById(R.id.myTitle);
mImageBack = (ImageButton)this.findViewById(R.id.back_button);
}

@Override
public void setListener() {
mImageBack.setOnClickListener(this);

}

@Override
public void fillData() {

new AsyncTask<Void, Void, Void>() {

//onPreExecute 在异步任务执行之前调用的方法
// 运行在主线程里面的
// 初始化ui的操作
@Override
protected void onPreExecute() {
showLoading();
super.onPreExecute();
}
// onPostExecute 在异步任务(后台任务)执行之后调用的方法
// 运行在ui线程中 ,
//
@Override
protected void onPostExecute(Void result) {
hideLoading();
super.onPostExecute(result);
tv_info.setText(content);
tv_location.setText(location);
tv_name.setText(name);
//设置用户的头像
LoadImageAsynTask task = new LoadImageAsynTask(new LoadImageAsynTaskCallback() {

public void beforeLoadImage() {
iv_icon.setImageResource(R.drawable.ic_launcher);

}

public void afterLoadImage(Bitmap bitmap) {
if (bitmap!=null) {
iv_icon.setImageBitmap(bitmap);
}else{
iv_icon.setImageResource(R.drawable.ic_launcher);
}

}
});
task.execute(iconurl);

}
// doInBackground 后台执行的任务
// 方法运行在一个子线程当中
@Override
protected Void doInBackground(Void... params) {
// 执行耗时的操作
try {
UserEntry ue = myService.getAuthorizedUser();
name = ue.getTitle().getPlainText();
location = ue.getLocation();
content = ((TextContent) ue.getContent()).getContent().getPlainText();
for (Link link : ue.getLinks()) {
if("icon".equals(link.getRel())){
iconurl = link.getHref();
}
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}.execute();

}

public void onClick(View v) {
switch (v.getId()) {
case R.id.back_button:
finish();
break;

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: