毕业设计ppt模板下载实现一个类似淘宝Android客户端的APP有多难

您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
手机淘宝软件设计
毕业论文.doc 32页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
需要金币:150 &&
你可能关注的文档:
··········
··········
手机淘宝软件设计
作 者 姓 名
指导教师姓名
专业技术职务
淘机迷介绍 3
1.1需求分析 3
1.11设计背景 3
1.12设计目的 6
1.2运行环境 7
1.2.1开发环境 7
1.2.2运行环境 9
模块划分 9
2.1淘机迷首页 9
2.2我的淘机迷 10
2.3搜索 10
第三章 总体设计 10
3.1系统流程图 10
3.2功能的实现(主要的类) 11
详细设计 15
4.1初始化界面(wait类) 15
4.3 购买界面(buying类) 16
4.4 地址的填写和保存(address类) 17
4.5姓名电话号码的填写和保存( nameAndTelephone类) 19
4.6网上银行支付和支付宝支付(paymentStyle类) 21
4.7查询和控制( FirstView类) 22
4.8 视图加载(SecondView类) 25
4.9 XML文件解析(JSON) 27
总结与展望 28
5.1设计总结 28
5.2设计展望 29
交流在现代社会正起着越来越重要的作用,作为交流工具的手机发展到现在,已经成为了现代生活的一个随身携带的必备品。摩托罗拉2004年的一项关于手机的调查中,其中一个问题“如果你只能随身带三件东西,你会带什么?”,用户回答是钥匙、钱包和手机。正是由于随身携带这一点,使得手机已经远远超过了一个交流工具这种概念,手机包含有键盘等必备配件(或软组件),可以成为基本的信息输入设备;分辨率越来越高的屏幕可以成为阅读、游戏终端;可以毫不夸张地说,手机已经成为一个集娱乐、时尚为一体的电子消费品,承担了制造欢乐、娱乐化的任务。Communication in modern society is playing a more and more important role as a tool of communication, the mobile phone development to the present, has become a modern life carry essential goods. Motorola 2004 on a mobile phone survey, one of the problems of &if you could take three things, what would you take?” the user answers are the keys, wallet and mobile phone. It is due to carry on this point, the mobile phone has been far more than a tool to communicate this concept, mobile phone comprises a keyboard and other necessary accessories (or component), can be the basic info higher and higher resolution screen can be read, Can say none exaggerative, mobile phone has become a set of entertainment, fashion as one of the electronic consumer goods, assumed make happiness, entertainment task.
T is China's largest shopping site Taobao goods, daily trading volume is very surprising. However Taobao transaction has a limitation, is to conduct online transactions must use PC, if encounter unique situations, such as electricity, computer can not access, network instability, no computer and a series of conditions, let us not to conduct online t
正在加载中,请稍后...基于android,安卓,购物淘宝电子商务app,毕业论文设计,开题报告任务书
注册用户:
    
(1000+人收藏)
 来源:
论文助手网
 Licence:
 联系:QQ:
 分类:
 平台:
 环境:
android,java,sql
 大小:
 更新:
基于android安卓开题报告任务书毕业论文设计购物淘宝电子商务app
联系方式 :
下载APP,支持永久资源免费下载
下载APP,支持永久资源免费下载
下载APP,资源永久免费
如果出现不能下载的情况,请联系站长,联系方式在下方。
载论文助手APP,资源永久免费
如果你已经登录仍然出现不能下载的情况,请本页面或者联系站长
&主要是为开发者提供一套TAE在无线端开放的代码实例,主要完成使用Native的方式实现淘宝商品的选择、购买和支付等交易链路环节,解决了之前导购类App只能通过H5的方式跳转到淘宝无线端的H5页面,打通了在一个App中购买商品的整个流程,让用户的购物体验更加完整和流程;其次,TAE作为阿里巴巴无线开放平台,还为开发者提供了更丰富的数据接口。
客服联系QQ:(有问题找客服,支持在线人工服务).更多信息请关注
要发表评论,您必须先。
下载APP,支持永久资源免费下载
请用电脑打开本网页,即可以免费获取你想要的了。android自定义视图之类似淘宝商品详情
公司项目需求,需要一个类似淘宝详情一样的页面,但又有所不同,于是自己写了一个。本文只是提供一种思路,控件的普适性还不够,希望读者能自行修改。
老规矩,先上一个项目原图吧:
本文只是上图右边部分效果。demo也只有右边部分。不过这个控件的代码是一样的。
直接贴代码
TwoPageLayout.java:
* Created by paulz on .
public class TwoPageLayout extends ViewGroup {
View pageO
View pageT
private int mTouchS
private int mPageChangeL
private int currentP
private boolean isI
OnPageChangeListener mOnPageChangeL
public OverS
public TwoPageLayout(Context context) {
super(context);
init(context);
public TwoPageLayout(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
public TwoPageLayout(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context);
private void init(Context context){
this.context=
final ViewConfiguration
= ViewConfiguration.get(context);
mTouchSlop=vc.getScaledTouchSlop();
//滑动翻页的临界值
mPageChangeLimit=150;
scroller=new OverScroller(getContext());
public boolean onInterceptTouchEvent(MotionEvent ev) {
switch (ev.getAction()){
case MotionEvent.ACTION_DOWN:
downX=ev.getX();
downY=ev.getY();
isIntercept=touchChildToTop();
case MotionEvent.ACTION_MOVE:
if(!isIntercept)
if(Math.abs(downY-ev.getY())&mTouchSlop){
//滑动开始
if(currentPage==1&&downY-ev.getY()&0){
isScrolling=
}else if(currentPage==0&&downY-ev.getY()&0){
isScrolling=
case MotionEvent.ACTION_UP:
isScrolling=
case MotionEvent.ACTION_CANCEL:
isScrolling=
return super.onInterceptTouchEvent(ev);
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
measureChildren(widthMeasureSpec,heightMeasureSpec);
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
if(pageOne==null){
pageOne=getChildAt(0);
if(pageTwo==null){
pageTwo=getChildAt(1);
protected void onLayout(boolean changed, int l, int t, int r, int b) {
if (pageOne!=null&&pageOne.getVisibility() != GONE) {
pageOne.layout(0+getPaddingLeft(), 0+getPaddingTop(), getWidth()-getPaddingRight(), getHeight()-getPaddingBottom());
if (pageTwo!=null&&pageTwo.getVisibility() != GONE) {
pageTwo.layout(0+getPaddingLeft(), getHeight(), getWidth()-getPaddingRight(), getHeight()+getHeight()-getPaddingBottom());
private float downX;
private float downY;
private boolean isS
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()){
case MotionEvent.ACTION_DOWN:
downX=event.getX();
downY=event.getY();
isIntercept=touchChildToTop();
case MotionEvent.ACTION_MOVE:
if(currentPage==1&&downY-event.getY()&0){
isScrolling=
}else if(currentPage==0&&downY-event.getY()&0){
isScrolling=
isScrolling=
if(currentPage==1&&!isIntercept){
isScrolling=
if(isScrolling){
if(currentPage==0&&downY-event.getY()&0){//整体向上偏移,翻到下一页
scrollTo(0,(int)(downY-event.getY()));
}else if(currentPage==1&&downY-event.getY()&0){//翻到上一页
scrollTo(0,getHeight()+(int)(downY-event.getY()));
case MotionEvent.ACTION_UP:
if(isScrolling){
if(currentPage==0){
if((downY-event.getY()&mPageChangeLimit)){
scroller.startScroll(0,getScrollY(),0,getHeight()-getScrollY(),500);
invalidate();
scrollTo(0,getHeight());
currentPage=1;
if(mOnPageChangeListener!=null){
mOnPageChangeListener.onPageChanged(currentPage,pageTwo,true);
scroller.startScroll(0,getScrollY(),0,-getScrollY(),300);
invalidate();
scrollTo(0,0);
if(Math.abs(downY-event.getY())&mPageChangeLimit){
scroller.startScroll(0,getScrollY(),0,-getScrollY(),500);
invalidate();
if(mOnPageChangeListener!=null){
mOnPageChangeListener.onPageChanged(currentPage,pageOne,true);
currentPage=0;
scroller.startScroll(0,getScrollY(),0,pageOne.getHeight()-getScrollY(),300);
invalidate();
scrollTo(0,pageOne.getHeight());
isScrolling=
isIntercept=
case MotionEvent.ACTION_CANCEL:
isScrolling=
scrollTo(0,0);
isIntercept=
private WebView childO
private ListView childT
private int curTouchC
public void setScrollerChildren(WebView childOne, ListView childTwo){
this.childOne=childO
this.childTwo=childT
curTouchChild=0;
public void changeCurScrollerChild(int i){
curTouchChild=i;
//实现第二页中包含可滑动控件时是否滑到顶部
//从而决定本控件是否处理touch事件。
private boolean touchChildToTop(){
if(curTouchChild==0&&childOne!=null&&childOne.getScrollY()&=0){
}else if(curTouchChild==1&&childTwo!=null&&childTwo.getScrollY()&=0&&childTwo.getFirstVisiblePosition()==0){
public void computeScroll() {
puteScrollOffset()){
scrollTo(0,scroller.getCurrY());
postInvalidate();
public void setOnPageChangeListener(OnPageChangeListener onPageChangeListener){
mOnPageChangeListener=onPageChangeL
public interface OnPageChangeListener{
public void onPageChanged(int page, View currentView,boolean bySelf);
MainActivity.java:
public class MainActivity extends AppCompatActivity {
TwoPageLayout mL
WebView mWebV
RadioGroup mT
ListView mL
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
private List<map& getListData(){
List<map& data=new ArrayList&&();
Random r=new Random(100);
for(int i=0;i&20;i++){
Map map=new HashMap&&();
map.put(&key_text&, &第二页第二选项卡 listview---item+&+i);
map.put(&key_text2&, &呵呵 listview---item+&+i);
data.add(map);
private void initView() {
mLayout=(TwoPageLayout)findViewById(R.id.main_content);
mWebView=(WebView)findViewById(R.id.web_view);
mTabs=(RadioGroup)findViewById(R.id.radio_group);
mListview=(ListView)findViewById(R.id.lv);
initWebView();
mWebView.loadUrl(&https://blog.csdn.net/qinzhen308/article/details/&);
//设置滑动会冲突的视图进去
mLayout.setScrollerChildren(mWebView,mListview);
//第二页切换标签
mTabs.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId){
case R.id.rb_detail:
mListview.setVisibility(View.GONE);
mWebView.setVisibility(View.VISIBLE);
mLayout.changeCurScrollerChild(0);
case R.id.rb_comments:
mWebView.setVisibility(View.GONE);
mListview.setVisibility(View.VISIBLE);
mLayout.changeCurScrollerChild(1);
mTabs.check(R.id.rb_detail);
mListview.setAdapter(new SimpleAdapter(MainActivity.this,getListData(),R.layout.item_adapter,new String[]{&key_text&,&key_text2&},new int[]{R.id.text1,R.id.text2}));
//监听切换到那一页了
mLayout.setOnPageChangeListener(new TwoPageLayout.OnPageChangeListener() {
public void onPageChanged(int page, View currentView, boolean bySelf) {
Toast.makeText(getApplicationContext(),&当前页码:&+page+&,是否自己改变:&+bySelf,Toast.LENGTH_LONG).show();
if(page==1){
mWebView.loadUrl(&https://blog.csdn.net/qinzhen308/article/details/&);
if(mTabs.getCheckedRadioButtonId()==R.id.rb_detail){
mWebView.loadUrl(&https://blog.csdn.net/qinzhen308/article/details/&);
private void initWebView() {
// LayoutParams lp=new
// LayoutParams(LayoutParams.MATCH_PARENT,ScreenUtil.HEIGHT);
// mWebView.setLayoutParams(lp);
// contentInSV.addView(mWebView);
WebSettings wSet = mWebView.getSettings();
wSet.setDefaultTextEncodingName(&UTF-8&);
wSet.setScriptEnabled(true);
mWebView.setVerticalScrollbarOverlay(true); // 指定的垂直滚动条有叠加样式
wSet.setUseWideViewPort(true);// 设定支持viewport
wSet.setLoadWithOverviewMode(true);
wSet.setBuiltInZoomControls(false);
wSet.setSupportZoom(false);
wSet.setDisplayZoomControls(false);
mWebView.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// TODO Auto-generated method stub
view.loadUrl(url);
public void onPageFinished(WebView view, String url) {
// TODO Auto-generated method stub
super.onPageFinished(view, url);
}</map</map
activity_main.xml:
主要代码就这几部分。TowPageLayout这个布局的用法有点类似DrawerLayout,他只能拥有2个子视图,看字面意思也就是2页的布局嘛。主要需要注意的是,当第二页有可滑动控件的情况,需要对事件拦截。滑动的动画是通过OverScroller这个类进行辅助计算。当然要注意,OverScroller只是负责计算滑动过程中的坐标变化,并不会改变控件的滑动状态,需要通过重绘来实现位置的改变。
地址:/qinzhen308/TwoPageViewAndroid实现淘宝体验的商品列表排序分类点击事件 - CSDN博客
Android实现淘宝体验的商品列表排序分类点击事件
之前做过一些需求,因为开发周期短,在产品分类的弹窗上一直有一些遗憾,这次又遇到了分类的页面要做,所以花了点时间思考,利用一个开源组件SlideBottomPanel成功实现了一个体验很好的分类功能
网上流传了很多版本的弹窗,但基本都是基于popWindow,Spinner,或者直接覆盖一层Dialog,大多用户必须手点把外层的弹窗点掉,才能选择其他种类的分类放,&#36924;死强迫
症有木有。
捣鼓了一番,效果如下
真正使用效果会非常平滑
废话不多说,Git地址/kingideayou/SlideBottomPanel
下载后可以直接把几个java文件复制到自己的项目中,同时记得复制attr参数信息
项目需要Jar包:SmartAndroid
全部弄好,写页面~
&?xml version=&1.0& encoding=&utf-8&?&
&LinearLayout xmlns:android=&/apk/res/android&
android:layout_width=&match_parent&
android:layout_height=&match_parent&
xmlns:app=&/apk/res-auto&
android:background=&#fff&
android:orientation=&vertical&&
&include layout=&@layout/search_tit&&&/include&
&com.xuleyuan.sortmenu.view.slidebottompanel.SlideBottomPanel
android:id=&@+id/sbp&
android:layout_width=&match_parent&
android:layout_height=&match_parent&
app:sbp_panel_height=&200dp&
app:sbp_background_layout=&@layout/background_layout&
app:sbp_title_height_no_display=&0dp&
&FrameLayout
android:layout_width=&match_parent&
android:layout_height=&200dp&
android:background=&#ffffff&
android:orientation=&vertical&&
android:id=&@+id/lv_credit_sort&
android:layout_width=&match_parent&
android:layout_height=&match_parent&/&
&/FrameLayout&
&/com.xuleyuan.sortmenu.view.slidebottompanel.SlideBottomPanel&
&/LinearLayout&
SlideBottomPanel中的一个属性background_layout必须填,这里定义的这个控件所覆盖的页面,可以理解成它本身是一个Framelayout,这个属性定义的是最底层的一个页面
,如果你用其他手段(外部用FrameLayout去做重叠,那么他会强制截取掉你的触摸事件)
我这边简单的做了一个空的页面background_layout,内部是可以任意编辑的,比如在其中加入ScrollView等
&?xml version=&1.0& encoding=&utf-8&?&
&LinearLayout xmlns:android=&/apk/res/android&
android:orientation=&vertical& android:layout_width=&match_parent&
android:layout_height=&match_parent&&
&/LinearLayout&
下面是search_tit页面
&?xml version=&1.0& encoding=&utf-8&?&
&LinearLayout xmlns:android=&/apk/res/android&
android:layout_width=&match_parent&
android:layout_height=&wrap_content&
android:background=&#ffffff&
android:orientation=&horizontal&
android:gravity=&center_vertical&
android:padding=&15dp&&
&RadioGroup
android:layout_width=&match_parent&
android:layout_height=&33dp&
android:orientation=&horizontal&
&RadioButton
android:id=&@+id/rb_bank&
android:button=&@null&
android:gravity=&center&
android:layout_width=&0dp&
android:layout_weight=&1&
android:layout_height=&match_parent& /&
&ImageView
android:id=&@+id/arrow1&
android:layout_width=&15dp&
android:src=&@mipmap/arrow_black&
android:layout_height=&match_parent& /&
android:layout_marginLeft=&2dp&
android:layout_width=&0.5dp&
android:layout_height=&match_parent&
android:background=&#d6d6d6&/&
&RadioButton
android:id=&@+id/rb_range&
android:button=&@null&
android:layout_width=&0dp&
android:gravity=&center&
android:layout_weight=&1&
android:layout_height=&match_parent& /&
&ImageView
android:id=&@+id/arrow2&
android:layout_width=&15dp&
android:src=&@mipmap/arrow_black&
android:layout_height=&match_parent& /&
android:layout_marginLeft=&2dp&
android:layout_width=&0.5dp&
android:layout_height=&match_parent&
android:background=&#d6d6d6&/&
&RadioButton
android:id=&@+id/rb_money&
android:button=&@null&
android:layout_width=&0dp&
android:layout_weight=&1&
android:gravity=&center&
android:layout_height=&match_parent& /&
&ImageView
android:id=&@+id/arrow3&
android:layout_width=&15dp&
android:src=&@mipmap/arrow_black&
android:layout_height=&match_parent& /&
android:layout_marginLeft=&2dp&
android:layout_width=&0.5dp&
android:layout_height=&match_parent&
android:background=&#d6d6d6&/&
&RadioButton
android:id=&@+id/rb_time&
android:button=&@null&
android:layout_width=&0dp&
android:layout_weight=&1&
android:gravity=&center&
android:layout_height=&match_parent& /&
&ImageView
android:id=&@+id/arrow4&
android:layout_width=&15dp&
android:src=&@mipmap/arrow_black&
android:layout_height=&match_parent& /&
&/RadioGroup&
&/LinearLayout&
到此页面部分全部完成,下面贴上代码部分
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
private SlideBottomP
private RadioButton rbB
private RadioButton rbR
private RadioButton rbM
private RadioButton rbT
private ImageView arrow1;
private ImageView arrow2;
private ImageView arrow3;
private ImageView arrow4;
private ListView lvCreditS
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initTit();
setListen();
initData();
private void initData() {
lvCreditSort.setAdapter(new ArrayAdapter&&(MainActivity.this, R.layout.list_item, getData()));
private ArrayList&String& getData()
ArrayList list = new ArrayList();
for (int i = 0; i & 20; i++) {
list.add(&Item & + i);
private void setListen() {
rbMoney.setOnClickListener(this);
rbTime.setOnClickListener(this);
rbRange.setOnClickListener(this);
rbBank.setOnClickListener(this);
sbp.setOnStateChangeListener(new SlideBottomPanel.OnStateChangeListener() {
public void Hidden(boolean isHidden) {
if (isHidden){
clearArrow();
clearTextColor();
private void initView() {
lvCreditSort = (ListView) findViewById(R.id.lv_credit_sort);
sbp = (SlideBottomPanel) findViewById(R.id.sbp);
rbBank = (RadioButton) findViewById(R.id.rb_bank);
rbMoney = (RadioButton) findViewById(R.id.rb_money);
rbRange = (RadioButton) findViewById(R.id.rb_range);
rbTime = (RadioButton) findViewById(R.id.rb_time);
arrow1 = (ImageView) findViewById(R.id.arrow1);
arrow2 = (ImageView) findViewById(R.id.arrow2);
arrow3 = (ImageView) findViewById(R.id.arrow3);
arrow4 = (ImageView) findViewById(R.id.arrow4);
private void initTit() {
rbBank.setText(&机构类型&);
rbRange.setText(&综合排序&);
rbMoney.setText(&金额范围&);
rbTime.setText(&贷款期限&);
public void clearTextColor(){
rbTime.setTextColor(getResources().getColor(R.color.black));
rbMoney.setTextColor(getResources().getColor(R.color.black));
rbRange.setTextColor(getResources().getColor(R.color.black));
rbBank.setTextColor(getResources().getColor(R.color.black));
public void clearArrow(){
arrow1.setImageResource(R.mipmap.arrow_black);
arrow2.setImageResource(R.mipmap.arrow_black);
arrow3.setImageResource(R.mipmap.arrow_black);
arrow4.setImageResource(R.mipmap.arrow_black);
public void onClick(View v) {
switch (v.getId()){
case R.id.rb_bank:
clearArrow();
clearTextColor();
rbBank.setTextColor(getResources().getColor(R.color.tv_money_color));
arrow1.setImageResource(R.mipmap.arrow_orienge_up);
sbp.reOpen();
case R.id.rb_money:
clearArrow();
clearTextColor();
rbMoney.setTextColor(getResources().getColor(R.color.tv_money_color));
arrow3.setImageResource(R.mipmap.arrow_orienge_up);
sbp.reOpen();
case R.id.rb_range:
clearArrow();
clearTextColor();
rbRange.setTextColor(getResources().getColor(R.color.tv_money_color));
arrow2.setImageResource(R.mipmap.arrow_orienge_up);
sbp.reOpen();
case R.id.rb_time:
clearArrow();
clearTextColor();
rbTime.setTextColor(getResources().getColor(R.color.tv_money_color));
arrow4.setImageResource(R.mipmap.arrow_orienge_up);
sbp.reOpen();
这里只是初步的完成,这个空间原本还有很多&#20540;得改善的地方,所以我对原空间做了一些修改
http://download.csdn.net/detail/u64166
因为时间原因,先把完全版的代码地址贴上,哈哈哈,赚点分,有时间继续完善
好,下一步的工作,原版本的开源组件虽然能实现大部分的功能,但在快速点击,他是反应不过来的,以为他在动画的前面进行了判断,如果进行动画中,那么忽略你的操作
直接加一个方法
private void reOpenPanel() {
final View mPanel = findViewWithTag(TAG_PANEL);
if (isPanelShowing()){
if (isAnimating) {
mPanel.clearAnimation();
isAnimating =
final int t = (int)(mMeasureHeight - mTitleHeightNoDisplay);
ValueAnimator animator = ValueAnimator.ofFloat(
ViewHelper.getY(mPanel), mMeasureHeight - mTitleHeightNoDisplay);
animator.setInterpolator(mCloseAnimationInterpolator);
animator.setTarget(mPanel);
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
public void onAnimationUpdate(ValueAnimator animation) {
float value = (float) animation.getAnimatedValue();
ViewHelper.setY(mPanel, value);
if (mDarkFrameLayout != null && mIsFade && value & t) {
mDarkFrameLayout.fade((int) ((1 - value / t) * DarkFrameLayout.MAX_ALPHA));
animator.addListener(new Animator.AnimatorListener() {
public void onAnimationStart(Animator animation) {
isAnimating =
public void onAnimationEnd(Animator animation) {
isAnimating =
isPanelShowing =
showPanelTitle(mPanel);
displayPanel();
public void onAnimationCancel(Animator animation) {
isAnimating =
isPanelShowing =
showPanelTitle(mPanel);
public void onAnimationRepeat(Animator animation) {
animator.setDuration(50);
animator.start();
displayPanel();
此时快速点击就可以完美运行啦
但是仔细一看,卧槽,点击暗层的监听这个也没有
public interface OnStateChangeListener{
void Hidden(boolean isHidden);
OnStateChangeListener mOnStateChangeListener;
public void setOnStateChangeListener(OnStateChangeListener e){
mOnStateChangeListener=e;
重新写一下hide()方法中的Listener
animator.addListener(new Animator.AnimatorListener() {
public void onAnimationStart(Animator animation) {
isAnimating =
public void onAnimationEnd(Animator animation) {
isAnimating =
isPanelShowing =
mOnStateChangeListener.Hidden(true);
showPanelTitle(mPanel);
public void onAnimationCancel(Animator animation) {
isAnimating =
isPanelShowing =
mOnStateChangeListener.Hidden(true);
showPanelTitle(mPanel);
public void onAnimationRepeat(Animator animation) {
Ok,完事大吉~
本文已收录于以下专栏:
相关文章推荐
AndroidStaggeredGrid是etsy实现的一个android瀑布流控件,没有继承ListView和Gridview,而是从更深层的AbsListVew着手实现,项目地址在这里https:...
Android实战开发中,ListView控件用途十分广泛,各种自定义控件多种多样。当项目要求实现一个2列的商品列表形式的界面,我们首先肯定想到用ListView,然后我们可以使用百度的自定义List...
概述目前像淘宝及展示列表等都有多个item展示的需求,可能大多数如果没做过,第一眼就是ListView去嵌套ListView,虽然这样是可以完成,但是这样做会导致手机过度绘制,为什么呢?因为当一个It...
昨天有朋友问了我这样一个需求,就是在天猫App中首页进入搜索界面,搜索出的商品页中,有一个按钮可以切换商品列表的布局。没有用过或者用的少天猫App的赶紧下载体验下(哈哈,给天猫打个广告~)。如果你很懒...
突然想想,很久没有写过博客了,这些天做毕设,搞论文,一直到六月中旬,回到公司发现带我的那个哥即将离职,突然发现不久以后就剩我一个android开发,其实有点惶恐,每天忙忙碌碌的做需求,改bug。今天就...
PopupWindow弹出后其他地方变暗的效果如何实现
现实的解决方法,总结了一下,共有两种
第一种方法,简单有效:
popupwindow 的界面本来就是和整个屏幕一样的大小,
&#160;只是有内容的部分...
【工匠若水 http://blog.csdn.net/yanbober 转载烦请注明出处,尊重劳动成果】1
背景之所以写这一篇博客的原因是因为之前有写过一篇《Android应用setContentV...
他的最新文章
讲师:何宇健
讲师:董岩
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)

我要回帖

更多关于 毕业设计论文网 的文章

 

随机推荐