本文目录
- 请进!viewflipper怎么在滑动时令可点击事件失去焦点
- 如何解决ViewFlipper的onClick和onTouch的冲突事件
- android verticalviewpager 怎么控制滑动翻页距离
- ViewFlipper可以跳到指定一个页面吗
- android中用viewflipper来放大量图片时,内存溢出,求助
- 如何正确的在Fragment中使用ViewFlipper
- ViewFlipper怎样设置不循环滑动
请进!viewflipper怎么在滑动时令可点击事件失去焦点
你没有调用onInterupterClickListener吗?如果没有调用,就设置焦点吧,当点击全屏的时候全屏获取焦点,执行viewfliper滑动,其他的失去焦点
如何解决ViewFlipper的onClick和onTouch的冲突事件
在Android中,对一个View同时调用OnTouch事件和OnClick事件时,导致事件冲突,比如onClick事件打算执行A动作,OnTouch事件打算执行B动作,但是在实际使用时会发现,当调用OnTouch时,有可能会同时执行A,B两个动作,这是因为OnClick事件本身就是在OnTouch事件中发生的;在onTouch事件中,如果返回true,就不会执行onClick,返回false,就同时执行onClick方法,要想把OnTouch和onClick事件完全的区分。可能过下列方法,解决该冲突问题:就是在 OnTouch中的MotionEvent.ACTION_DOWN 时,记录下点(X1,Y1),在 MotionEvent.ACTION_UP 时,记录下点(X2,Y2),然后比对 俩点之间的距离,如果小于一个较小数值(比如5),就认为是Click事件,onTouch中返回false,如果距离较大,可以当作onTouch事件去处理,返回true:示范如下:public boolean onTouch(View v, MotionEvent event) {if (event.getAction() == MotionEvent.ACTION_DOWN) {x1 = event.getX();y1 = event.getY();}if (event.getAction() == MotionEvent.ACTION_UP) {x2 = event.getX();y2 = event.getY();if (Math.abs(x1 - x2) 《 6) {return false;// 距离较小,当作click事件来处理}if(Math.abs(x1 - x2) 》60){ // 真正的onTouch事件}}return true;// 返回true,不执行click事件}
android verticalviewpager 怎么控制滑动翻页距离
下面的代码片段详细说明了如何实现滑动翻页。 复制代码 代码如下: public class ViewFlipperActivity extends Activity implements OnGestureListener { private static final int FLING_MIN_DISTANCE = 100; private ViewFlipper flipper; private GestureDetector detector; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.viewflipper); // 注册一个GestureDetector detector = new GestureDetector(this); flipper = (ViewFlipper) findViewById(R.id.ViewFlipper); ImageView image1 = new ImageView(this); image1.setBackgroundResource(R.drawable.image1); // 增加第一个view flipper.addView(image1); ImageView image2 = new ImageView(this); image2.setBackgroundResource(R.drawable.image2); // 增加第二个view flipper.addView(image2); } @Override public boolean onTouchEvent(MotionEvent event) { // 将触屏事件交给手势识别类处理 return this.detector.onTouchEvent(event); } @Override public boolean onDown(MotionEvent e) { return false; } @Override public void onShowPress(MotionEvent e) { } @Override public boolean onSingleTapUp(MotionEvent e) { return false; } @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { return false; } @Override public void onLongPress(MotionEvent e) { } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { if (e1.getX() - e2.getX() 》 FLING_MIN_DISTANCE) { //设置View进入和退出的动画效果 this.flipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.left_in)); this.flipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.left_out)); this.flipper.showNext(); return true; } if (e1.getX() - e2.getX() 《 -FLING_MIN_DISTANCE) { this.flipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.right_in)); this.flipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.right_out)); this.flipper.showPrevious(); return true; } return false; } } 在这段代码里,创建了两个IamgeView(用来显示图片),加入到了ViewFlipper中。程序运行后,当用手指在屏幕上向左滑动,会显示前一个图片,用手指在屏幕上向右滑动,会显示下一个图片。实现滑动切换的主要代码都在onFling()方法中,用户按下触摸屏,快速移动后松开,就会触发这个事件。在这段代码示例中,对手指滑动的距离进行了计算,如果滑动距离大于100像素,就做切换动作,否则不做任何切换动作。
ViewFlipper可以跳到指定一个页面吗
可以的,左右滑动的控件就是viewPager,viewPager可以设置当前界面的。具体设置代码:viewPager.setCurrentItem(2); 表示转跳第三页,注意viewPager是从0开始的。viewPager.setOffscreenPageLimit(4); 表示四个界面来回切换不会重新创建。viewPager.getCurrentItem();表示获取当前是第几页。
android中用viewflipper来放大量图片时,内存溢出,求助
创建太多图片而不注意回收容易导致内存溢出啊位图很占内存的,而且占的好像是native内存建议创建图片用弱引用包装或者自己回收一下
如何正确的在Fragment中使用ViewFlipper
如何正确的在Fragment中使用ViewFlipperViewFlipper继承ViewAnimator,切换view的时候是有动画效果的,适合做ppt,多界面的程序欢迎引导界面,算是个轻量级的组件,适合展示静态数据,少量数据。ViewPager继承ViewGroup。看官网描述,和Fragment是好搭档,Fragment有自己的生命周期。也就是说ViewPager更适用复杂的视图切换,而且Viewpager有自己的adapter,这也让其适应复杂对象,实现数据的动态加载。 Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。
ViewFlipper怎样设置不循环滑动
private void showNextPage() { if (mViewFlipper.getDisplayedChild() == mViewFlipper.getChildCount() - 1) {// 到达最后一页 if (isNextNewCreated) { isNextNewCreated = false; if (mListBuffer.size() 《 6) { mPagination.increasePageIndex(); getNews(); } else { addViews(getListNewsInCurrentPage(mListBuffer)); showNextPage(); } } } else { mViewFlipper.setInAnimation(Animations.inFromRightAnimation()); mViewFlipper.setOutAnimation(Animations.outToLeftAnimation()); mViewFlipper.showNext(); mViewFlipper.requestFocus(ViewFlipper.FOCUS_RIGHT); mTextViewPageNum.setText((mViewFlipper.getDisplayedChild() + 1) + ““); if (isNextNewCreated) { clickLeftButton(); } isNextNewCreated = true; } } /** * 显示之前一页 */ private void showPreviousPage() { if (mViewFlipper.getDisplayedChild() != 0) { mTextViewPageNum.setText((mViewFlipper.getDisplayedChild()) + ““); mViewFlipper.setInAnimation(Animations.inFromLeftAnimation()); mViewFlipper.setOutAnimation(Animations.outToRightAnimation()); mViewFlipper.showPrevious(); mViewFlipper.requestFocus(ViewFlipper.FOCUS_LEFT); clickLeftButton(); } }