Application
package com.tmall.view.base;
import android.app.Application;
import android.content.Context;
import android.content.res.Resources;
import android.widget.Toast;
public class BaseApplication extends Application {
public static Context context;
@Override
public void onCreate() {
super.onCreate();
context = getApplicationContext();
}
static Toast mToast;
public static void makeText(String text) {
makeText(text, Toast.LENGTH_LONG);
}
public static void makeText(String text, int time) {
if (mToast != null)
mToast.cancel();
mToast = Toast.makeText(context, text, time);
mToast.show();
}
public static Resources getRresource() {
return getRresource();
}
}
视图类
package com.tmall.view;
import org.apache.http.Header;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnFocusChangeListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import com.example.tmall.R;
import com.loopj.android.http.RequestParams;
import com.tmall.common.CommonResult;
import com.tmall.net.CommonHttpHandler;
import com.tmall.net.HttpUtil;
import com.tmall.view.base.BaseApplication;
public class AccountActivity extends Activity implements OnClickListener {
private OwlView mOwlView;
private EditText etUserName;
private EditText etPassword;
private Button login;
private String userName;
private String password;
@Override
public void onClick(View v) {
int id = v.getId();
switch (id) {
case R.id.account_btn_login:
getDataFromHttp();
break;
case R.id.account_rv_regist:
break;
case R.id.account_tv_forget:
break;
default:
break;
}
}
private void getDataFromHttp() {
userName = etUserName.getText().toString().trim();
password = etPassword.getText().toString().trim();
String url = HttpUtil.BASE_URL + "login";
RequestParams params = new RequestParams();
params.put("userName", userName);
params.put("password", password);
HttpUtil.post(url, params, new CommonHttpHandler() {
@Override
public void success(int arg0, Header[] arg1, byte[] bytes) {
String result = new String(bytes);
if ("ok".equals(result)) {
BaseApplication.makeText("登陆成功");
AccountActivity.this.finish();
CommonResult.userName = userName;
skip();
} else if ("fail".equals(result)) {
BaseApplication.makeText("登陆失败,用户名或密码不正确");
} else {
BaseApplication.makeText("登陆异常");
}
}
});
}
OnFocusChangeListener focusChangeListener = new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
mOwlView.open();
} else {
mOwlView.close();
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_account);
findView();
etPassword.setOnFocusChangeListener(focusChangeListener);
}
private void findView() {
mOwlView = (OwlView) findViewById(R.id.owl_view);
etUserName = (EditText) findViewById(R.id.username);
etPassword = (EditText) findViewById(R.id.password);
login = (Button) findViewById(R.id.account_btn_login);
View title = findViewById(R.id.account_head);
TextView tvTitle = (TextView) title.findViewById(R.id.head_tv_center);
tvTitle.setText("用户登陆");
login.setOnClickListener(this);
}
private void skip() {
}
}
package com.tmall.view
import android.os.Bundle
import android.support.annotation.Nullable
import android.support.v4.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.GridView
import android.widget.TextView
import com.example.tmall.R
import com.tmall.adapter.GridAdapter
public class BrandFragment extends Fragment {
private GridView gridView
private int[] ids
private String[] strs
@Override
public View onCreateView(LayoutInflater inflater,
@Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.brand_fragment, null)
findView(view)
setData()
bindAdapter()
return view
}
private void bindAdapter() {
GridAdapter adapter = new GridAdapter(ids, strs, getResources())
gridView.setAdapter(adapter)
}
private void findView(View view) {
gridView = (GridView) view.findViewById(R.id.brand_girdview)
View title = view.findViewById(R.id.brand_head)
TextView tvTitle = (TextView) title.findViewById(R.id.head_tv_center)
tvTitle.setText("品牌中心")
}
private void setData() {
ids = new int[] { R.drawable.semir, R.drawable.make, R.drawable.handu,
R.drawable.eptition, R.drawable.beiyinm, R.drawable.iphone,
R.drawable.only, R.drawable.dior, R.drawable.logitech }
strs = new String[] { "森马", "马克华菲", "韩都衣舍", "衣品天成", "贝因美", "Iphone",
"Only", "迪奥", "罗技" }
}
}
package com.tmall.view
import java.io.Serializable
import java.lang.reflect.Type
import java.util.ArrayList
import java.util.List
import org.apache.http.Header
import org.json.JSONException
import org.json.JSONObject
import android.content.Intent
import android.os.Bundle
import android.support.annotation.Nullable
import android.support.v4.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.View.OnClickListener
import android.view.ViewGroup
import android.widget.Button
import android.widget.ListView
import android.widget.TextView
import com.example.tmall.R
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
import com.loopj.android.http.RequestParams
import com.tmall.adapter.CarAdapter
import com.tmall.bean.Car
import com.tmall.bean.OrderItem
import com.tmall.common.CommonResult
import com.tmall.net.CommonHttpHandler
import com.tmall.net.HttpUtil
public class CarFragment extends Fragment {
private ListView lvCar
private List<Car> carList
private CarAdapter adapter
private Button btnSum
OnClickListener listener = new OnClickListener() {
@Override
public void onClick(View v) {
if (v.getId() == R.id.car_btn_sum) {
// 跳转界面和传递数据
List<OrderItem> itemList = new ArrayList<OrderItem>()
for (Car car : carList) {
OrderItem item = new OrderItem()
item.setPrice(car.getPrice())
item.setProCount(car.getProCount())
item.setProId(car.getProId())
item.setProUrl(car.getProUrl())
item.setTitle(car.getTitle())
itemList.add(item)
}
// 跳转界面
skip(itemList)
}
}
private void skip(List<OrderItem> itemList) {
Intent intent = new Intent()
intent.setClass(getActivity(), OrderActivity.class)
Bundle bundle = new Bundle()
bundle.putSerializable("itemlist", (Serializable) itemList)
intent.putExtra("cleanstyle", "carclean")
intent.putExtras(bundle)
startActivity(intent)
}
}
@Override
public View onCreateView(LayoutInflater inflater,
@Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view
if (CommonResult.userName == null) {
view = inflater.inflate(R.layout.car_fragment, null)
setTitle(view)
} else {
view = inflater.inflate(R.layout.car_login_fragment, null)
getHttpData()
findView(view)
bindAdapter()
}
return view
}
private void findView(View view) {
lvCar = (ListView) view.findViewById(R.id.car_login_lv)
btnSum = (Button) view.findViewById(R.id.car_btn_sum)
btnSum.setOnClickListener(listener)
setTitle(view)
}
private void setTitle(View view) {
// 找到头部组件
View title = view.findViewById(R.id.car_head)
TextView tvTitle = (TextView) title.findViewById(R.id.head_tv_center)
tvTitle.setText("购物车")
}
private void bindAdapter() {
adapter = new CarAdapter(carList)
lvCar.setAdapter(adapter)
}
private void getHttpData() {
String url = HttpUtil.BASE_URL + "car"
RequestParams params = new RequestParams()
params.put("userName", CommonResult.userName)
HttpUtil.post(url, params, new CommonHttpHandler() {
@Override
public void success(int arg0, Header[] arg1, byte[] bytes) {
String json = new String(bytes)
try {
JSONObject jsonObject = new JSONObject(json)
String result = jsonObject.getString("result")
System.out.println(result)
String cars = jsonObject.getString("carList")
// gson转换list得到具体的值
Gson gson = new Gson()
Type t = new TypeToken<List<Car>>() {
}.getType()
carList = gson.fromJson(cars, t)
adapter.setData(carList)
} catch (JSONException e) {
e.printStackTrace()
}
}
})
}
}
package com.tmall.view
import java.util.ArrayList
import java.util.List
import org.apache.http.Header
import android.content.Intent
import android.os.Bundle
import android.support.annotation.Nullable
import android.support.v4.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.View.OnClickListener
import android.view.ViewGroup
import android.widget.AdapterView
import android.widget.AdapterView.OnItemClickListener
import android.widget.ImageView
import android.widget.ListView
import android.widget.TextView
import com.example.tmall.R
import com.loopj.android.http.RequestParams
import com.tmall.adapter.CenterListAdapter
import com.tmall.adapter.HomeListAdapter
import com.tmall.bean.CenterItem
import com.tmall.common.CommonResult
import com.tmall.net.CommonHttpHandler
import com.tmall.net.HttpUtil
import com.tmall.view.base.BaseApplication
public class CenterFragMent extends Fragment {
private List<CenterItem> topList
private List<CenterItem> bottomList
// private ImageView ivItemLeft
private TextView tvItem
private ImageView ivItemRight
private ListView lvTop
private ListView lvBottom
@Override
public View onCreateView(LayoutInflater inflater,
@Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.center_fragment, null)
findView(view)
// 搭建适配器
bindAdapter()
return view
}
// 上层list的监听
OnItemClickListener clickListener1 = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
switch (position) {
case 0:
// 访问数据看看用户登陆状态决定跳转到哪个界面
if (CommonResult.userName == null) {
Intent intent = new Intent()
intent.setClass(getActivity(), AccountActivity.class)
startActivity(intent)
} else {
// 跳入另一个展示用户数据的界面
}
// 设置切换动画,从右边进入,左边退出,带动态效果
getActivity().overridePendingTransition(R.anim.in_from_right,
R.anim.out_to_left)
break
case 1:
break
case 2:
break
case 3:
break
default:
break
}
}
}
// 下层list的监听
OnItemClickListener clickListener2 = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
switch (position) {
case 0:
break
case 1:
break
case 2:
break
default:
break
}
}
}
private void findView(View view) {
lvTop = (ListView) view.findViewById(R.id.center_lv_top)
lvBottom = (ListView) view.findViewById(R.id.center_lv_bottom)
// ivItemLeft = (ImageView) view.findViewById(R.id.center_item_iv_left)
// tvItem = (TextView) view.findViewById(R.id.center_item_tv)
// ivItemRight = (ImageView)
// view.findViewById(R.id.center_item_iv_right)
View title = view.findViewById(R.id.center_head)
TextView tvCenter = (TextView) title.findViewById(R.id.head_tv_center)
tvCenter.setText("个人中心")
}
private void bindAdapter() {
String[] topDatas = new String[] { "账户中心", "订单中心", "地址管理", "我的收藏" }
int[] topIds = new int[] { R.drawable.account_center,
R.drawable.order_center, R.drawable.address_manage,
R.drawable.mycollect }
// 加入实体类
topList = new ArrayList<CenterItem>()
for (int i = 0
CenterItem item = new CenterItem()
item.setIvLeftId(topIds[i])
item.setText(topDatas[i])
item.setIvRightId(R.drawable.go_next)
topList.add(item)
}
// 上方的ListView绑定adapter数据
CenterListAdapter listAdapter1 = new CenterListAdapter(topList)
lvTop.setAdapter(listAdapter1)
lvTop.setOnItemClickListener(clickListener1)
String[] bottomDatas = new String[] { "帮助中心", "关于我们", "用户反馈" }
int[] bottomIds = new int[] { R.drawable.help_center,
R.drawable.about_us, R.drawable.return_back }
// 加入实体类
bottomList = new ArrayList<CenterItem>()
for (int i = 0
CenterItem item = new CenterItem()
item.setIvLeftId(bottomIds[i])
item.setText(bottomDatas[i])
item.setIvRightId(R.drawable.go_next)
bottomList.add(item)
}
CenterListAdapter listAdapter2 = new CenterListAdapter(bottomList)
lvBottom.setAdapter(listAdapter2)
lvBottom.setOnItemClickListener(clickListener2)
// 下方分ListView绑定adapter数据
}
}
package com.tmall.view;
import java.lang.reflect.Type;
import java.util.List;
import org.apache.http.Header;
import org.json.JSONObject;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import com.example.tmall.R;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.loopj.android.http.RequestParams;
import com.tmall.adapter.CommentAdapter;
import com.tmall.bean.Comments;
import com.tmall.net.CommonHttpHandler;
import com.tmall.net.HttpUtil;
public class CommentFragment extends Fragment {
private int proId;
private List<Comments> commentList;
private ListView lvComment;
public CommentFragment(int proId) {
this.proId = proId;
getHttpData();
}
@Override
public View onCreateView(LayoutInflater inflater,
@Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.comment_fragment, null);
findView(view);
bindAdapter();
return view;
}
private void findView(View view) {
lvComment = (ListView) view.findViewById(R.id.comment_lv);
}
private void bindAdapter() {
CommentAdapter adapter = new CommentAdapter(commentList);
lvComment.setAdapter(adapter);
}
private void getHttpData() {
String url = HttpUtil.BASE_URL + "comments";
RequestParams params = new RequestParams();
params.put("proId", proId);
HttpUtil.post(url, params, new CommonHttpHandler() {
@Override
public void success(int arg0, Header[] arg1, byte[] bytes) {
try {
String json = new String(bytes);
JSONObject jsonObject = new JSONObject(json);
String comments = jsonObject.getString("comments");
Gson gson = new Gson();
Type t = new TypeToken<List<Comments>>() {
}.getType();
commentList = gson.fromJson(comments, t);
System.out.println(commentList);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
}
package com.tmall.view;
import java.lang.reflect.Type;
import java.util.List;
import org.apache.http.Header;
import org.json.JSONException;
import org.json.JSONObject;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import com.example.tmall.R;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.loopj.android.http.RequestParams;
import com.tmall.adapter.DetailListAdapter;
import com.tmall.bean.DetailImg;
import com.tmall.net.CommonHttpHandler;
import com.tmall.net.HttpUtil;
public class DetailFragment extends Fragment {
private List<DetailImg> imgList;
private int proId;
private ListView lvDetail;
private DetailListAdapter adapter;
public DetailFragment(int proId) {
this.proId = proId;
httpData();
}
@Override
public View onCreateView(LayoutInflater inflater,
@Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.detail_fragment, null);
findView(view);
bindAdapter();
return view;
}
private void findView(View view) {
lvDetail = (ListView) view.findViewById(R.id.detail_lv);
}
private void bindAdapter() {
adapter = new DetailListAdapter(imgList);
lvDetail.setAdapter(adapter);
}
private void httpData() {
String url = HttpUtil.BASE_URL + "detailimg";
RequestParams params = new RequestParams();
params.put("proId", proId);
HttpUtil.post(url, params, new CommonHttpHandler() {
@Override
public void success(int arg0, Header[] arg1, byte[] bs) {
String json = new String(bs);
try {
JSONObject object = new JSONObject(json);
String result = object.getString("result");
String imgs = object.getString("imgs");
Gson gson = new Gson();
Type type = new TypeToken<List<DetailImg>>() {
}.getType();
imgList = gson.fromJson(imgs, type);
adapter.setData(imgList);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
}
package com.tmall.view;
import com.example.tmall.R;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.RadioButton;
public class HomeActivity extends FragmentActivity implements
OnCheckedChangeListener {
private HomeFragment homeFragment;
private BrandFragment brandFragment;
private CarFragment carFragment;
private CenterFragMent centerFragMent;
private FragmentManager fm;
private FragmentTransaction transaction;
private RadioButton rbHome;
private RadioButton rbBrand;
private RadioButton rbCar;
private RadioButton rbCenter;
@Override
protected void onCreate(Bundle arg0) {
super.onCreate(arg0);
setContentView(R.layout.activity_home);
findView();
init();
}
private void init() {
homeFragment = new HomeFragment();
brandFragment = new BrandFragment();
carFragment = new CarFragment();
centerFragMent = new CenterFragMent();
fm = getSupportFragmentManager();
rbHome.setChecked(true);
}
private void findView() {
rbHome = (RadioButton) findViewById(R.id.rbHome);
rbHome.setOnCheckedChangeListener(this);
rbBrand = (RadioButton) findViewById(R.id.rbBrand);
rbBrand.setOnCheckedChangeListener(this);
rbCar = (RadioButton) findViewById(R.id.rbCar);
rbCar.setOnCheckedChangeListener(this);
rbCenter = (RadioButton) findViewById(R.id.rbCenter);
rbCenter.setOnCheckedChangeListener(this);
}
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
int id = buttonView.getId();
switch (id) {
case R.id.rbHome:
if (rbHome.isChecked()) {
transaction = fm.beginTransaction();
homeFragment = null;
homeFragment = new HomeFragment();
transaction.replace(R.id.flContent, homeFragment);
transaction.commit();
}
break;
case R.id.rbBrand:
if (rbBrand.isChecked()) {
transaction = fm.beginTransaction();
brandFragment = null;
brandFragment = new BrandFragment();
transaction.replace(R.id.flContent, brandFragment);
transaction.commit();
}
break;
case R.id.rbCar:
if (rbCar.isChecked()) {
transaction = fm.beginTransaction();
carFragment = null;
carFragment = new CarFragment();
transaction.replace(R.id.flContent, carFragment);
transaction.commit();
}
break;
case R.id.rbCenter:
if (rbCenter.isChecked()) {
transaction = fm.beginTransaction();
centerFragMent = null;
centerFragMent = new CenterFragMent();
transaction.replace(R.id.flContent, centerFragMent);
transaction.commit();
}
break;
default:
break;
}
}
}
package com.tmall.view;
import java.util.ArrayList;
import java.util.List;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import com.example.tmall.R;
import com.tmall.adapter.HomeListAdapter;
import com.tmall.adapter.MyBaseAdapter;
import com.tmall.adapter.MyPageAdapter;
import com.tmall.bean.HomeItem;
import com.tmall.logic.MyPageChangeListener;
import com.tmall.view.base.BaseApplication;
public class HomeFragment extends Fragment {
private final static int CHANGE_STATE = 0;
private final static int KEEP_STATE = 1;
private boolean isAutoPlay = true;
private List<HomeItem> homeItemList;
private ViewPager home_vp;
private ListView home_lv;
private View[] views;
private int pagePosition = 0;
private int[] pvDatas;
private String[] strs;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.home_fragment, null);
homeItemList = new ArrayList<HomeItem>();
findView(view);
setPageData();
setListData();
return view;
}
/**
*
* @param view
*/
private void findView(View view) {
home_vp = (ViewPager) view.findViewById(R.id.home_vp);
home_lv = (ListView) view.findViewById(R.id.home_lv);
View view1 = view.findViewById(R.id.point1);
View view2 = view.findViewById(R.id.point2);
View view3 = view.findViewById(R.id.point3);
View view4 = view.findViewById(R.id.point4);
View view5 = view.findViewById(R.id.point5);
views = new View[] { view1, view2, view3, view4, view5 };
}
/**
* 设置page的数据和逻辑
*/
private void setPageData() {
pvDatas = new int[] { R.drawable.image1, R.drawable.image2,
R.drawable.image3, R.drawable.image4, R.drawable.image5 };
MyPageAdapter pageAdapter = new MyPageAdapter(pvDatas, getResources());
home_vp.setAdapter(pageAdapter);
MyPageChangeListener pageChangeListener = new MyPageChangeListener(
views, this);
home_vp.setOnPageChangeListener(pageChangeListener);
pageThread.start();
}
/**
* 设置底层listview的数据和逻辑
*/
private void setListData() {
int[] ivSignDatas = new int[] { R.drawable.home_classify_01,
R.drawable.home_classify_02, R.drawable.home_classify_03,
R.drawable.home_classify_04, R.drawable.home_classify_05 };
strs = new String[] { "限时抢购", "促销快报", "新品上架", "热门单品", "推荐品牌" };
for (int i = 0; i < 5; i++) {
HomeItem homeItem = new HomeItem();
homeItem.setIvSignId(ivSignDatas[i]);
homeItem.setTvSign(strs[i]);
homeItem.setIvSkipId(R.drawable.arrow);
homeItemList.add(homeItem);
}
MyBaseAdapter<HomeItem> listAdapter = new HomeListAdapter(homeItemList);
home_lv.setAdapter(listAdapter);
home_lv.setOnItemClickListener(itemListenre);
}
private Handler handler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case CHANGE_STATE:
int position = msg.arg1;
home_vp.setCurrentItem(position);
break;
case KEEP_STATE:
BaseApplication.makeText("出现问题,图片不能轮播");
break;
default:
break;
}
};
};
Thread pageThread = new Thread() {
public void run() {
while (isAutoPlay) {
try {
sleep(3000);
if (pagePosition < pvDatas.length - 1) {
pagePosition += 1;
} else {
pagePosition = 0;
}
Message msg = Message.obtain();
msg.what = CHANGE_STATE;
msg.arg1 = pagePosition;
handler.sendMessage(msg);
} catch (InterruptedException e) {
Message msg = Message.obtain();
msg.what = KEEP_STATE;
handler.sendMessage(msg);
}
}
};
};
OnItemClickListener itemListenre = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
Intent intent = new Intent();
intent.setClass(getActivity(), ProductListActivity.class);
intent.putExtra("state", position + 1);
intent.putExtra("text", strs[position]);
startActivity(intent);
getActivity().overridePendingTransition(R.anim.in_from_right,
R.anim.out_to_left);
}
};
@Override
public void onPause() {
super.onPause();
isAutoPlay = false;
}
public boolean isAutoPlay() {
return isAutoPlay;
}
public void setAutoPlay(boolean isAutoPlay) {
this.isAutoPlay = isAutoPlay;
}
public int getPagePosition() {
return pagePosition;
}
public void setPagePosition(int pagePosition) {
this.pagePosition = pagePosition;
}
public ViewPager getHome_vp() {
return home_vp;
}
}
package com.tmall.view;
import java.util.ArrayList;
import org.apache.http.Header;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.example.tmall.R;
import com.loopj.android.http.RequestParams;
import com.tmall.adapter.OrderAdapter;
import com.tmall.bean.OrderItem;
import com.tmall.common.CommonResult;
import com.tmall.net.CommonHttpHandler;
import com.tmall.net.HttpUtil;
import com.tmall.view.base.BaseApplication;
public class OrderActivity extends Activity {
private ArrayList<OrderItem> itemList = new ArrayList<OrderItem>();
private MyListView lvOrder;
private TextView tvName;
private TextView tvNum;
private TextView tvAddress;
private TextView tvBuy;
private TextView tvPrice;
private RelativeLayout adressLayout;
private String cleanSstyle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_order);
getData();
findView();
bindAdapter();
}
private int getTotalPrice() {
int totalPrice = 0;
for (OrderItem item : itemList) {
totalPrice += item.getPrice() * item.getProCount();
}
return totalPrice;
}
private void findView() {
adressLayout = (RelativeLayout) findViewById(R.id.order_address_layout);
lvOrder = (MyListView) findViewById(R.id.order_lv);
tvName = (TextView) findViewById(R.id.order_tv_name);
tvNum = (TextView) findViewById(R.id.order_tv_num);
tvAddress = (TextView) findViewById(R.id.order_tv_address);
tvBuy = (TextView) findViewById(R.id.order_tv_buy);
tvPrice = (TextView) findViewById(R.id.order_tv_price);
tvBuy.setOnClickListener(onClickListener);
adressLayout.setOnClickListener(onClickListener);
View title = findViewById(R.id.order_head);
TextView tvTitle = (TextView) title.findViewById(R.id.head_tv_center);
tvTitle.setText("结算中心");
}
private void bindAdapter() {
tvPrice.setText("¥" + String.valueOf(getTotalPrice()));
OrderAdapter adapter = new OrderAdapter(itemList);
lvOrder.setAdapter(adapter);
}
private void getData() {
cleanSstyle = getIntent().getStringExtra("cleanstyle");
itemList = (ArrayList<OrderItem>) getIntent().getSerializableExtra(
"itemlist");
}
OnClickListener onClickListener = new OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.order_tv_buy:
System.out.println("发出了结算请求");
requestHttp();
break;
default:
break;
}
}
};
private void requestHttp() {
String url = HttpUtil.BASE_URL + "clean";
RequestParams params = new RequestParams();
params.put("request", "cleanproduct");
params.put("username", CommonResult.userName);
params.put("cleanstyle", cleanSstyle);
params.put("totalprice", getTotalPrice());
HttpUtil.post(url, params, new CommonHttpHandler() {
@Override
public void success(int arg0, Header[] arg1, byte[] bytes) {
String result = new String(bytes);
System.out.println(result);
if ("finish clean money".equals(result)) {
Intent intent = new Intent();
intent.setClass(OrderActivity.this, SumOkActivity.class);
startActivity(intent);
OrderActivity.this.finish();
OrderActivity.this.overridePendingTransition(
R.anim.in_from_right, R.anim.out_to_left);
} else if ("error clean money".equals(result)) {
BaseApplication.makeText("余额不足");
} else if ("money not enough".equals(result)) {
Intent intent = new Intent();
intent.setClass(OrderActivity.this, SumFailActivity.class);
startActivity(intent);
OrderActivity.this.finish();
OrderActivity.this.overridePendingTransition(
R.anim.in_from_right, R.anim.out_to_left);
BaseApplication.makeText("余额不足");
} else {
System.out.println("参数异常");
}
}
});
}
}
package com.tmall.view;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.Header;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;
import com.example.tmall.R;
import com.google.gson.Gson;
import com.loopj.android.http.RequestParams;
import com.nineoldandroids.view.ViewPropertyAnimator;
import com.tmall.bean.Car;
import com.tmall.bean.OrderItem;
import com.tmall.bean.Product;
import com.tmall.common.CommonResult;
import com.tmall.net.CommonHttpHandler;
import com.tmall.net.HttpUtil;
import com.tmall.view.base.BaseApplication;
public class ProductActivity extends FragmentActivity {
private int proId;
private int sales;
private int price;
private String title;
private String cateGray;
private int lineWidth;
private List<Fragment> fragments = new ArrayList<Fragment>();
private List<TextView> tvHeadList;
private ViewPager viewPager;
private TextView tvPrdocut;
private TextView tvComment;
private TextView tvDetail;
private View line;
private Product product;
private String imgUrl;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_product);
getValue();
findView();
setTvHeadList();
createFrames();
setData();
}
private void getValue() {
Intent intent = getIntent();
imgUrl = intent.getStringExtra("url");
proId = intent.getIntExtra("proId", 1);
sales = intent.getIntExtra("sales", 1);
price = intent.getIntExtra("price", 1);
title = intent.getStringExtra("title");
cateGray = intent.getStringExtra("cateGray");
product = new Product();
product.setCateGray(cateGray);
product.setId(proId);
product.setPrice(price);
product.setSales(sales);
product.setTitle(title);
}
/**
* 找到所有需要的组件并添加监听
*/
private void findView() {
viewPager = (ViewPager) findViewById(R.id.product_viewPager);
line = (View) findViewById(R.id.line);
tvPrdocut = (TextView) findViewById(R.id.product_tv_pro);
tvDetail = (TextView) findViewById(R.id.product_tv_detail);
tvComment = (TextView) findViewById(R.id.product_tv_comment);
TextView tvCollect = (TextView) findViewById(R.id.product_tv_collect);
TextView tvCar = (TextView) findViewById(R.id.product_tv_car);
TextView tvBuy = (TextView) findViewById(R.id.product_tv_buy);
tvCollect.setOnClickListener(clickListener);
tvCar.setOnClickListener(clickListener);
tvBuy.setOnClickListener(clickListener);
tvPrdocut.setOnClickListener(clickListener);
tvDetail.setOnClickListener(clickListener);
tvComment.setOnClickListener(clickListener);
}
private void setTvHeadList() {
tvHeadList = new ArrayList<TextView>();
tvHeadList.add(tvPrdocut);
tvHeadList.add(tvDetail);
tvHeadList.add(tvComment);
}
private void createFrames() {
ProductFragment productFragment = new ProductFragment(product);
DetailFragment detailFragment = new DetailFragment(proId);
CommentFragment commentFragment = new CommentFragment(proId);
fragments.add(productFragment);
fragments.add(detailFragment);
fragments.add(commentFragment);
}
/**
* 配置viewPager切换的效果和数据
*/
private void setData() {
lineWidth = getWindowManager().getDefaultDisplay().getWidth()
/ (fragments.size() + 2);
line.requestLayout();
viewPager.setAdapter(new FragmentPagerAdapter(
getSupportFragmentManager()) {
@Override
public int getCount() {
return fragments.size();
}
@Override
public Fragment getItem(int position) {
return fragments.get(position);
}
});
viewPager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int state) {
switch (state) {
case 0:
changeState(tvPrdocut);
break;
case 1:
changeState(tvDetail);
break;
case 2:
changeState(tvComment);
break;
default:
break;
}
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
float tagerX = arg0 * lineWidth + arg2 / (fragments.size() + 2);
ViewPropertyAnimator.animate(line).translationX(tagerX)
.setDuration(0);
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
});
}
OnClickListener clickListener = new OnClickListener() {
@Override
public void onClick(View v) {
int id = v.getId();
switch (id) {
case R.id.product_tv_pro:
viewPager.setCurrentItem(0);
break;
case R.id.product_tv_detail:
viewPager.setCurrentItem(1);
break;
case R.id.product_tv_comment:
viewPager.setCurrentItem(2);
break;
case R.id.product_tv_collect:
break;
case R.id.product_tv_car:
if (CommonResult.userName != null) {
updateCar();
} else {
BaseApplication.makeText("请登陆账号");
}
break;
case R.id.product_tv_buy:
if (CommonResult.userName != null) {
skip();
} else {
BaseApplication.makeText("请登录账号");
}
break;
case R.id.product_iv_back:
break;
default:
break;
}
}
private void skip() {
Intent intent = new Intent();
intent.setClass(ProductActivity.this, OrderActivity.class);
OrderItem item = new OrderItem();
item.setPrice(price);
item.setTitle(title);
item.setProUrl(imgUrl);
item.setProCount(1);
ArrayList<OrderItem> itemList = new ArrayList<OrderItem>();
itemList.add(item);
Bundle mbundle = new Bundle();
mbundle.putSerializable("itemlist", (Serializable) itemList);
intent.putExtra("cleanstyle", "productclean");
intent.putExtras(mbundle);
startActivity(intent);
}
};
private void changeState(TextView tv) {
for (TextView text : tvHeadList) {
if (tv.getId() == text.getId()) {
System.out.println(text.toString());
text.setTextColor(getResources().getColor(R.color.red));
} else {
text.setTextColor(getResources().getColor(R.color.green));
}
}
}
private void updateCar() {
String url = HttpUtil.BASE_URL + "updatecar";
RequestParams params = new RequestParams();
Car car = new Car();
car.setUserName(CommonResult.userName);
car.setPrice(price);
car.setProCount(1);
car.setProId(proId);
car.setProUrl(imgUrl.substring(33));
car.setTitle(title);
Gson gson = new Gson();
String json = gson.toJson(car);
params.put("request", "update");
params.put("car", json);
HttpUtil.post(url, params, new CommonHttpHandler() {
@Override
public void success(int arg0, Header[] arg1, byte[] bytes) {
String result = new String(bytes);
System.out.println("result==" + result);
if ("ok".equals(result)) {
BaseApplication.makeText("已加入购物车");
} else if ("fail".equals(result)) {
BaseApplication.makeText("加入购物车失败,购物车已存在该商品");
} else {
BaseApplication.makeText("网络问题,请重新加载");
}
}
});
}
}
package com.tmall.view;
import java.lang.reflect.Type;
import java.util.List;
import org.apache.http.Header;
import org.json.JSONException;
import org.json.JSONObject;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.example.tmall.R;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.loopj.android.http.RequestParams;
import com.tmall.adapter.ProductPageAdapter;
import com.tmall.bean.BigPic;
import com.tmall.bean.Product;
import com.tmall.net.CommonHttpHandler;
import com.tmall.net.HttpUtil;
public class ProductFragment extends Fragment {
private Product product;
private ViewPager proVp;
private List<BigPic> bigPics;
private ProductPageAdapter pageAdapter;
private TextView tvTitle;
private TextView tvPrice;
private TextView tvCateGray;
private TextView tvSales;
public ProductFragment(Product product) {
this.product = product;
}
@Override
public View onCreateView(LayoutInflater inflater,
@Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.product_fragment, null);
findView(view);
bindAdapter();
manageData();
gethttpDataPic();
return view;
}
private void manageData() {
tvTitle.setText(product.getTitle());
tvPrice.setText(String.valueOf(product.getPrice()));
tvSales.setText("月销量:" + String.valueOf(product.getSales()));
tvCateGray.setText(product.getCateGray());
}
private void bindAdapter() {
pageAdapter = new ProductPageAdapter(bigPics);
proVp.setAdapter(pageAdapter);
}
private void findView(View view) {
proVp = (ViewPager) view.findViewById(R.id.pro_vp);
tvTitle = (TextView) view.findViewById(R.id.pro_tv_title);
tvPrice = (TextView) view.findViewById(R.id.pro_tv_price);
tvCateGray = (TextView) view.findViewById(R.id.pro_tv_categray);
tvSales = (TextView) view.findViewById(R.id.pro_tv_sales);
}
/**
* 这里是异步线程控制的
*/
private void gethttpDataPic() {
String url = HttpUtil.BASE_URL + "bigpic";
RequestParams params = new RequestParams();
params.put("proId", product.getId());
HttpUtil.post(url, params, new CommonHttpHandler() {
@Override
public void success(int arg0, Header[] arg1, byte[] bytes) {
try {
/**
* 这里能拿到数据
*/
String json = new String(bytes);
JSONObject jsonObject = new JSONObject(json);
String response = jsonObject.getString("response");
String picList = jsonObject.getString("picList");
Gson gson = new Gson();
Type t = new TypeToken<List<BigPic>>() {
}.getType();
bigPics = gson.fromJson(picList, t);
pageAdapter.setData(bigPics);
} catch (JSONException e) {
e.printStackTrace();
}
}
});
}
}
package com.tmall.view
import java.lang.reflect.Type
import java.util.List
import org.apache.http.Header
import org.json.JSONObject
import android.app.Activity
import android.content.Intent
import android.os.Bundle
import android.view.View
import android.widget.AdapterView
import android.widget.AdapterView.OnItemClickListener
import android.widget.ListView
import android.widget.TextView
import com.example.tmall.R
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
import com.loopj.android.http.RequestParams
import com.tmall.adapter.ProductListAdapter
import com.tmall.bean.Product
import com.tmall.net.CommonHttpHandler
import com.tmall.net.HttpUtil
import com.tmall.view.base.BaseApplication
public class ProductListActivity extends Activity {
private ListView proLv
// private EditText proEt
private List<Product> products
private ProductListAdapter adapter
private int state
private String text
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_prolist)
Intent intent = getIntent()
state = intent.getIntExtra("state", 0)
text = intent.getStringExtra("text")
// 找到指定的view
findView()
// 获取网络请求
getDataFromHttp()
// 连接适配器
setAdapter()
}
private void setAdapter() {
adapter = new ProductListAdapter(ProductListActivity.this, products)
proLv.setAdapter(adapter)
proLv.setOnItemClickListener(clickListener)
// proEt.setOnClickListener(onClickListener)
}
// 找到指定的view组件
private void findView() {
proLv = (ListView) findViewById(R.id.pro_list)
View title = findViewById(R.id.prolist_head)
TextView tvTitle = (TextView) findViewById(R.id.head_tv_center)
tvTitle.setText(text)
}
private void getDataFromHttp() {
String url = HttpUtil.BASE_URL + "limitbuy"
RequestParams params = new RequestParams()
params.put("state", state)
HttpUtil.post(url, params, new CommonHttpHandler() {
@Override
public void success(int arg0, Header[] arg1, byte[] bs) {
try {
// json解析
String json = new String(bs)
System.out.println(json)
if ("fail".equals(json)) {
BaseApplication.makeText("这一项没有商品")
} else {
JSONObject jsonObject = new JSONObject(json)
String response = jsonObject.getString("response")
if ("ok".equals(response)) {
String prolist = jsonObject.getString("prolist")
Gson gson = new Gson()
Type t = new TypeToken<List<Product>>() {
}.getType()
products = gson.fromJson(prolist, t)
adapter.setData(products)
} else {
BaseApplication.makeText("当前网络环境问题")
}
}
} catch (Exception e) {
e.printStackTrace()
}
}
})
}
OnItemClickListener clickListener = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// 直接跳转到下一个界面
// 这里所有点击统一处理跳到同样的界面不同的数据源
Intent intent = new Intent()
intent.putExtra("proId", products.get(position).getId())
intent.putExtra("sales", products.get(position).getSales())
intent.putExtra("price", products.get(position).getPrice())
intent.putExtra("title", products.get(position).getTitle())
intent.putExtra("cateGray", products.get(position).getCateGray())
intent.putExtra("url", products.get(position).getImgUrl())
intent.setClass(ProductListActivity.this, ProductActivity.class)
startActivity(intent)
// 设置切换动画,从右边进入,左边退出,带动态效果
ProductListActivity.this.overridePendingTransition(
R.anim.in_from_right, R.anim.out_to_left)
}
}
}
package com.tmall.view;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import com.example.tmall.R;
import com.tmall.view.base.BaseApplication;
public class SumFailActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sumfail);
}
public void onClick(View v){
if(v.getId()==R.id.sun_fail_btn){
BaseApplication.makeText("我是穷逼我是穷逼");
}
}
}
package com.tmall.view;
import com.example.tmall.R;
import android.app.Activity;
import android.os.Bundle;
public class SumOkActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sunok);
}
}
自定义控件类
package com.tmall.view;
import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.widget.ListView;
public class MyListView extends ListView {
public MyListView(Context context) {
super(context);
}
public MyListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
/**
* 重写该方法,达到使ListView适应ScrollView的效果
*/
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = View.MeasureSpec.makeMeasureSpec(
Integer.MAX_VALUE >> 2, View.MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
}
package com.tmall.view;
import android.animation.ValueAnimator;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import android.view.animation.LinearInterpolator;
import java.math.BigDecimal;
import java.math.RoundingMode;
import com.example.tmall.R;
/**
* Created by boobooL on 2016/4/19 0019
* Created 邮箱 :boobooMX@163.com
*/
/**
* 猫头鹰输入密码的时候捂住眼睛 布局文件中宽=175dp,height=107dp,也可以不写默认,只是为了预览
*/
public class OwlView extends View {
private Context mContext;
private Bitmap bm_owl;
private Bitmap bm_owl_arm_left;
private Bitmap bm_owl_arm_right;
private int bm_height;
private int moveHeight;
private int alpha = 255;
private int move_length = 0;
private Paint handPaintBefore;
private Paint handPaintAfter;
public OwlView(Context context) {
this(context, null);
}
public OwlView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public OwlView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
this.mContext = context;
init();
}
private void init() {
setBackgroundColor(Color.TRANSPARENT);
getViewTreeObserver().addOnGlobalLayoutListener(
new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
getViewTreeObserver()
.removeGlobalOnLayoutListener(this);
ViewGroup.LayoutParams lp = getLayoutParams();
if (lp == null)
return;
lp.width = dip2px(175);
lp.height = dip2px(107);
setLayoutParams(lp);
setTranslationY(dip2px(9));
}
});
bm_owl = BitmapFactory.decodeResource(getResources(),
R.drawable.owl_login);
bm_owl_arm_left = BitmapFactory.decodeResource(getResources(),
R.drawable.owl_login_arm_left);
bm_owl_arm_right = BitmapFactory.decodeResource(getResources(),
R.drawable.owl_login_arm_right);
bm_owl = compressBitmap(bm_owl, dip2px(115), dip2px(107), false);
bm_owl_arm_left = compressBitmap(bm_owl_arm_left, dip2px(40),
dip2px(65), true);
bm_owl_arm_right = compressBitmap(bm_owl_arm_right, dip2px(40),
dip2px(65), true);
bm_height = bm_owl_arm_left.getHeight() / 3 * 2 - dip2px(10);
handPaintBefore = new Paint();
handPaintBefore.setColor(Color.parseColor("#472d20"));
handPaintBefore.setAntiAlias(true);
handPaintAfter = new Paint();
handPaintAfter.setAntiAlias(true);
}
public void close() {
ValueAnimator alphaVa = ValueAnimator.ofInt(0, 255).setDuration(300);
alphaVa.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
alpha = (Integer) animation.getAnimatedValue();
invalidate();
}
});
alphaVa.start();
ValueAnimator moveVa = ValueAnimator.ofInt(dip2px(45), 0).setDuration(
200);
moveVa.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
move_length = (Integer) animation.getAnimatedValue();
invalidate();
}
});
moveVa.setStartDelay(200);
moveVa.start();
ValueAnimator va = ValueAnimator.ofInt(bm_height, 0).setDuration(300);
va.setInterpolator(new LinearInterpolator());
va.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
moveHeight = (Integer) animation.getAnimatedValue();
invalidate();
}
});
va.start();
}
public void open() {
final ValueAnimator alphaVa = ValueAnimator.ofInt(255, 0).setDuration(
300);
alphaVa.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
alpha = (Integer) animation.getAnimatedValue();
invalidate();
}
});
alphaVa.start();
ValueAnimator moveVa = ValueAnimator.ofInt(0, dip2px(45)).setDuration(
200);
moveVa.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
move_length = (Integer) animation.getAnimatedValue();
invalidate();
}
});
moveVa.start();
ValueAnimator va = ValueAnimator.ofInt(0, bm_height).setDuration(300);
va.setInterpolator(new LinearInterpolator());
va.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
moveHeight = (Integer) animation.getAnimatedValue();
invalidate();
}
});
va.setStartDelay(100);
va.start();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawBitmap(
bm_owl,
new Rect(0, 0, bm_owl.getWidth(), bm_owl.getHeight()),
new Rect(dip2px(30), 0, dip2px(30) + bm_owl.getWidth(), bm_owl
.getHeight()), handPaintAfter);
handPaintBefore.setAlpha(alpha);
canvas.drawOval(new RectF(moveHeight, getHeight() - dip2px(20),
move_length + dip2px(30), getHeight()), handPaintBefore);
canvas.drawOval(
new RectF(getWidth() - dip2px(30) - move_length, getHeight()
- dip2px(20), getWidth() - move_length, getHeight()),
handPaintBefore);
canvas.drawBitmap(bm_owl_arm_left,
new Rect(0,
0,
bm_owl_arm_left.getWidth(),
moveHeight),
new Rect(dip2px(43), getHeight() - moveHeight - dip2px(10),
dip2px(43) + bm_owl_arm_left.getWidth(), getHeight()
- dip2px(9)), handPaintAfter);
canvas.drawBitmap(bm_owl_arm_right,
new Rect(0,
0,
bm_owl_arm_right.getWidth(),
moveHeight),
new Rect(getWidth() - dip2px(40) - bm_owl_arm_right.getWidth(),
getHeight() - moveHeight - dip2px(10),
getWidth() - dip2px(40),
getHeight() - dip2px(9)),
handPaintAfter);
}
/**
* 压缩图片
*
* @param bitmap
* @param reqsW
* @param reqsH
* @param isAdjust
* @return
*/
private Bitmap compressBitmap(Bitmap bitmap, int reqsW, int reqsH,
boolean isAdjust) {
if (bitmap == null || reqsW == 0 || reqsH == 0)
return bitmap;
if (bitmap.getWidth() > reqsW || bitmap.getHeight() > reqsH) {
/**
* BigDecimal用法详解 一、简介
* Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算
* 。双精度浮点型变量double可以处理16位有效数
* 。在实际应用中,需要对更大或者更小的数进行运算和处理。float和double只能用来做科学计算或者是工程计算
* ,在商业计算中要用java.math.BigDecimal。BigDecimal所创建的是对象,我们不能使用传统的+、-、*、/
* 等算术运算符直接对其对象进行数学运算
* ,而必须调用其相对应的方法。方法中的参数也必须是BigDecimal的对象。构造器是类的特殊方法
* ,专门用来创建对象,特别是带有参数的对象。 二、构造器描述 BigDecimal(int) 创建一个具有参数所指定整数值的对象。
* BigDecimal(double) 创建一个具有参数所指定双精度值的对象。 BigDecimal(long)
* 创建一个具有参数所指定长整数值的对象。 BigDecimal(String) 创建一个具有参数所指定以字符串表示的数值的对象。
*
* 三、方法描述 add(BigDecimal) BigDecimal对象中的值相加,然后返回这个对象。
* subtract(BigDecimal) BigDecimal对象中的值相减,然后返回这个对象。
* multiply(BigDecimal) BigDecimal对象中的值相乘,然后返回这个对象。
* divide(BigDecimal) BigDecimal对象中的值相除,然后返回这个对象。 toString()
* 将BigDecimal对象的数值转换成字符串。 doubleValue() 将BigDecimal对象中的值以双精度数返回。
* floatValue() 将BigDecimal对象中的值以单精度数返回。 longValue()
* 将BigDecimal对象中的值以长整数返回。 intValue() 将BigDecimal对象中的值以整数返回。
*
* 四、格式化及例子 由于NumberFormat类的format()方法可以使用BigDecimal对象作为其参数,
* 可以利用BigDecimal对超出16位有效数字的货币值,百分值,以及一般数值进行格式化控制。
* 以利用BigDecimal对货币和百分比格式化为例
* 。首先,创建BigDecimal对象,进行BigDecimal的算术运算后,分别建立对货币和百分比格式化的引用
* ,最后利用BigDecimal对象作为format()方法的参数,输出其格式化的货币值和百分比。
*/
float scaleX = new BigDecimal(reqsW).divide(
new BigDecimal(bitmap.getWidth()), 4, RoundingMode.DOWN)
.floatValue();
float scaleY = new BigDecimal(reqsH).divide(
new BigDecimal(bitmap.getHeight()), 4, RoundingMode.DOWN)
.floatValue();
if (isAdjust) {
scaleX = scaleX < scaleY ? scaleX : scaleY;
scaleY = scaleX;
}
Matrix matrix = new Matrix();
matrix.postScale(scaleX, scaleY);
bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(),
bitmap.getHeight(), matrix, true);
}
return bitmap;
}
private int dip2px(int dpValue) {
float scale = mContext.getResources().getDisplayMetrics().density;
return (int) (dpValue * scale + 0.5f);
}
}