android实现uc和墨迹天气那样的左右拖动效果.docx

上传人:b****6 文档编号:6725616 上传时间:2023-01-09 格式:DOCX 页数:23 大小:20.66KB
下载 相关 举报
android实现uc和墨迹天气那样的左右拖动效果.docx_第1页
第1页 / 共23页
android实现uc和墨迹天气那样的左右拖动效果.docx_第2页
第2页 / 共23页
android实现uc和墨迹天气那样的左右拖动效果.docx_第3页
第3页 / 共23页
android实现uc和墨迹天气那样的左右拖动效果.docx_第4页
第4页 / 共23页
android实现uc和墨迹天气那样的左右拖动效果.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

android实现uc和墨迹天气那样的左右拖动效果.docx

《android实现uc和墨迹天气那样的左右拖动效果.docx》由会员分享,可在线阅读,更多相关《android实现uc和墨迹天气那样的左右拖动效果.docx(23页珍藏版)》请在冰豆网上搜索。

android实现uc和墨迹天气那样的左右拖动效果.docx

android实现uc和墨迹天气那样的左右拖动效果

[代码]FlingGalleryActivity

importandroid.app.Activity;

importandroid.os.Bundle;

importandroid.content.Context;

importandroid.graphics.Color;

importandroid.util.Log;

importandroid.view.Gravity;

importandroid.view.MotionEvent;

importandroid.view.View;

importandroid.view.ViewGroup;

importandroid.view.View.OnClickListener;

importandroid.widget.ArrayAdapter;

importandroid.widget.Button;

importandroid.widget.CheckBox;

importandroid.widget.EditText;

importandroid.widget.LinearLayout;

importandroid.widget.TableLayout;

importandroid.widget.TextView;

publicclassFlingGalleryActivityextendsActivity

{

privatefinalintcolor_red=Color.argb(100,200,0,0);

privatefinalintcolor_green=Color.argb(100,0,200,0);

privatefinalintcolor_blue=Color.argb(100,0,0,200);

privatefinalintcolor_yellow=Color.argb(100,200,200,0);

privatefinalintcolor_purple=Color.argb(100,200,0,200);

privatefinalString[]mLabelArray={"View1","View2","View3","View4","View5"};

privatefinalint[]mColorArray={color_red,color_green,color_blue,color_yellow,color_purple};

privateFlingGallerymGallery;

privateCheckBoxmCheckBox;

//Note:

Thefollowinghandleriscriticaltocorrectfunctionof

//theFlingGalleryclass.ThisenablestheFlingGalleryclassto

//detectwhenthemotioneventhasendedbyfingerbeinglifted

@Override

publicbooleanonTouchEvent(MotionEventevent)

{

returnmGallery.onGalleryTouchEvent(event);

}

publicvoidonCreate(BundlesavedInstanceState)

{

super.onCreate(savedInstanceState);

mGallery=newFlingGallery(this);

mGallery.setPaddingWidth(5);

mGallery.setAdapter(newArrayAdapter(getApplicationContext(),android.R.layout.simple_list_item_1,mLabelArray)

{

@Override

publicViewgetView(intposition,ViewconvertView,ViewGroupparent)

{

Log.d("111","count="+position);

//if(convertView!

=null&&convertViewinstanceofGalleryViewItem)

//{

//GalleryViewItemgalleryView=(GalleryViewItem)convertView;

//

//galleryView.mEdit1.setText("");

//galleryView.mText1.setText(mLabelArray[position]);

//galleryView.mText1.setBackgroundColor(mColorArray[position]);

//galleryView.mText2.setText(mLabelArray[position]);

//galleryView.mText2.setBackgroundColor(mColorArray[position]);

//

//Log.d("111","count="+position);

//

//returngalleryView;

//

//}

returnnewGalleryViewItem(getApplicationContext(),position);

}

});

LinearLayoutlayout=newLinearLayout(getApplicationContext());

layout.setOrientation(LinearLayout.VERTICAL);

LinearLayout.LayoutParamslayoutParams=newLinearLayout.LayoutParams(

LinearLayout.LayoutParams.MATCH_PARENT,

LinearLayout.LayoutParams.MATCH_PARENT);

layoutParams.setMargins(10,10,10,10);

layoutParams.weight=1.0f;

layout.addView(mGallery,layoutParams);

mCheckBox=newCheckBox(getApplicationContext());

mCheckBox.setText("GalleryisCircular");

mCheckBox.setText("GalleryisCircular");

mCheckBox.setPadding(50,10,0,10);

mCheckBox.setTextSize(30);

mCheckBox.setChecked(true);

mCheckBox.setOnClickListener(newOnClickListener()

{

@Override

publicvoidonClick(Viewview)

{

mGallery.setIsGalleryCircular(mCheckBox.isChecked());

}

});

layout.addView(mCheckBox,newLinearLayout.LayoutParams(

LinearLayout.LayoutParams.MATCH_PARENT,

LinearLayout.LayoutParams.WRAP_CONTENT));

setContentView(layout);

}

privateclassGalleryViewItemextendsTableLayout

{

privateEditTextmEdit1;

privateTextViewmText1;

privateTextViewmText2;

privateButtonmButton1;

privateButtonmButton2;

publicGalleryViewItem(Contextcontext,intposition)

{

super(context);

this.setOrientation(LinearLayout.VERTICAL);

this.setLayoutParams(newLinearLayout.LayoutParams(

LinearLayout.LayoutParams.MATCH_PARENT,

LinearLayout.LayoutParams.MATCH_PARENT));

mEdit1=newEditText(context);

this.addView(mEdit1,newLinearLayout.LayoutParams(

LinearLayout.LayoutParams.MATCH_PARENT,

LinearLayout.LayoutParams.WRAP_CONTENT));

mText1=newTextView(context);

mText1.setText(mLabelArray[position]);

mText1.setTextSize(30);

mText1.setGravity(Gravity.LEFT);

mText1.setBackgroundColor(mColorArray[position]);

this.addView(mText1,newLinearLayout.LayoutParams(

LinearLayout.LayoutParams.MATCH_PARENT,

LinearLayout.LayoutParams.WRAP_CONTENT));

mButton1=newButton(context);

mButton1.setText("<<");

mButton1.setGravity(Gravity.LEFT);

mButton1.setOnClickListener(newOnClickListener()

{

@Override

publicvoidonClick(Viewview)

{

mGallery.movePrevious();

}

});

this.addView(mButton1,newLinearLayout.LayoutParams(

LinearLayout.LayoutParams.MATCH_PARENT,

LinearLayout.LayoutParams.WRAP_CONTENT));

mButton2=newButton(context);

mButton2.setText(">>");

mButton2.setGravity(Gravity.RIGHT);

mButton2.setOnClickListener(newOnClickListener()

{

@Override

publicvoidonClick(Viewview)

{

mGallery.moveNext();

}

});

this.addView(mButton2,newLinearLayout.LayoutParams(

LinearLayout.LayoutParams.MATCH_PARENT,

LinearLayout.LayoutParams.WRAP_CONTENT));

mText2=newTextView(context);

mText2.setText(mLabelArray[position]);

mText2.setTextSize(30);

mText2.setGravity(Gravity.RIGHT);

mText2.setBackgroundColor(mColorArray[position]);

this.addView(mText2,newLinearLayout.LayoutParams(

LinearLayout.LayoutParams.MATCH_PARENT,

LinearLayout.LayoutParams.MATCH_PARENT,1));

}

}

}

[代码]FlingGallery

importandroid.content.Context;

importandroid.view.GestureDetector;

importandroid.view.KeyEvent;

importandroid.view.MotionEvent;

importandroid.view.View;

importandroid.view.animation.Animation;

importandroid.view.animation.AnimationUtils;

importandroid.view.animation.Interpolator;

importandroid.view.animation.Transformation;

importandroid.widget.Adapter;

importandroid.widget.FrameLayout;

importandroid.widget.LinearLayout;

//TODO:

//1.InordertoimproveperformanceCachescreenbitmapanduseforanimation

//2.Establishsuperfluousmemoryallocationsanddelayorreplacewithreusedobjects

//Probablyneedtomakesurewearenotallocatingobjects(strings,etc.)inloops

publicclassFlingGalleryextendsFrameLayout

{

//Constants

privatefinalintswipe_min_distance=120;

privatefinalintswipe_max_off_path=250;

privatefinalintswipe_threshold_veloicty=400;

//Properties

privateintmViewPaddingWidth=0;

privateintmAnimationDuration=250;

privatefloatmSnapBorderRatio=0.5f;

privatebooleanmIsGalleryCircular=true;

//Members

privateintmGalleryWidth=0;

privatebooleanmIsTouched=false;

privatebooleanmIsDragging=false;

privatefloatmCurrentOffset=0.0f;

privatelongmScrollTimestamp=0;

privateintmFlingDirection=0;

privateintmCurrentPosition=0;

privateintmCurrentViewNumber=0;

privateContextmContext;

privateAdaptermAdapter;

privateFlingGalleryView[]mViews;

privateFlingGalleryAnimationmAnimation;

privateGestureDetectormGestureDetector;

privateInterpolatormDecelerateInterpolater;

publicFlingGallery(Contextcontext)

{

super(context);

mContext=context;

mAdapter=null;

mViews=newFlingGalleryView[3];

mViews[0]=newFlingGalleryView(0,this);

mViews[1]=newFlingGalleryView(1,this);

mViews[2]=newFlingGalleryView(2,this);

mAnimation=newFlingGalleryAnimation();

mGestureDetector=newGestureDetector(newFlingGestureDetector());

mDecelerateInterpolater=AnimationUtils.loadInterpolator(mContext,android.R.anim.decelerate_interpolator);

}

publicvoidsetPaddingWidth(intviewPaddingWidth)

{

mViewPaddingWidth=viewPaddingWidth;

}

publicvoidsetAnimationDuration(intanimationDuration)

{

mAnimationDuration=animationDuration;

}

publicvoidsetSnapBorderRatio(floatsnapBorderRatio)

{

mSnapBorderRatio=snapBorderRatio;

}

publicvoidsetIsGalleryCircular(booleanisGalleryCircular)

{

if(mIsGalleryCircular!

=isGalleryCircular)

{

mIsGalleryCircular=isGalleryCircular;

if(mCurrentPosition==getFirstPosition())

{

//Weneedtoreloadtheviewimmediatelytothelefttochangeittocircularvieworblank

mViews[getPrevViewNumber(mCurrentViewNumber)].recycleView(getPrevPosition(mCurrentPosition));

}

if(mCurrentPosition==getLastPosition())

{

//Weneedtoreloadtheviewimmediatelytotherighttochangeittocircularvieworblank

mViews[getNextViewNumber(mCurrentViewNumber)].recycleView(getNextPosition(mCurrentPosition));

}

}

}

publicintgetGalleryCount()

{

return(mAdapter==null)?

0:

mAdapter.getCount();

}

publicintgetFirstPosition()

{

return0;

}

publicintgetLastPosition()

{

return(getGalleryCount()==0)?

0:

getGalleryCount()-1;

}

privateintgetPrevPosition(intrelativePosition)

{

intprevPosition=relativePosition-1;

if(prevPosition

{

prevPosition=getFirstPosition()-1;

if(mIsGalleryCircular==true)

{

prevPosition=getLastPosition();

}

}

returnprevPosition;

}

privateintgetNextPosition(intrelativePosition)

{

intnextPosition=relativePosition+1;

if(nextPosition>getLastPosition())

{

nextPosition=getLastPosition()+1;

if(mIsGalleryCircular==true)

{

nextPosition=getFirstPosition();

}

}

returnnextPosition;

}

privateintgetPrevViewNumber(intrelativeViewNumber)

{

return(relativeViewNumber==0)?

2:

relativeViewNumber-1;

}

privateintgetNextViewNumber(intrelativeViewNumber)

{

return

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1