`

Gallery的onItemSelected方法中UI操作时滑动问题解决

 
阅读更多

最近在项目中使用Gallery时重写onItemSelected方法并在里面进行UI操作,发现Gallery左右滑动时不流畅,跳跃感很强,折腾了好几天终于在stackoverflow上发现了解决办法,重写onlayout和onscroll方法。

废话少说上代码

package com.hzd.groupurchasing.view;

import android.content.Context;
import android.os.SystemClock;
import android.util.AttributeSet;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.widget.Gallery;

public class MyGallery extends Gallery {

	private static final int OFFSETX = 100;

	public MyGallery(Context context, AttributeSet attrs, int defStyle) {
		super(context, attrs, defStyle);
	}

	public MyGallery(Context context, AttributeSet attrs) {
		super(context, attrs);
	}

	public MyGallery(Context context) {
		super(context);
	}

	float startX;

	  private long mLastScrollEvent;

	  @Override
	  protected void onLayout(boolean changed, int l, int t, int r, int b)
	  {
	    // XXX Hack alert!
	    // Ignore layout calls if we've had a scroll event in the last 250 msec;
	    // that'll ignore the per-second layout calls we get through BooPlayerView's
	    // updating.
	    long now = SystemClock.uptimeMillis();
	    if (Math.abs(now - mLastScrollEvent) > 250) {
	      super.onLayout(changed, l, t, r, b);
	    }
	  }

	  @Override
	  public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY)
	  {
	    mLastScrollEvent = SystemClock.uptimeMillis();
	    return super.onScroll(e1, e2, distanceX, distanceY);
	  }
}

 

原地址:http://stackoverflow.com/questions/8347965/android-gallery-onitemselected-causes-scrolling-to-snap

             http://code.google.com/p/android/issues/detail?id=16171

分享到:
评论

相关推荐

    智能家居系统 选项选取事件OnItemSelected.doc

    智能家居系统 选项选取事件OnItemSelected.doc 学习资料 复习资料 教学资源

    gallery简单实现 图片调整

    package e gallery; import android app Activity; import android os Bundle; import android view LayoutInflater; import android view View; import android view ViewGroup; import android view ViewGroup ...

    android 面试2

    17、Android中使用Menu时可能需要重写的方法(AC) A、onCreateOptionsMenu() B、onCreateMenu() C、onOptionsItemSelected() D、onItemSelected() 18、关于ContentValues类的说法正确的是(A) A、他和HashTable比较...

    spinner2:Spinner2是默认Android的Spinner的重新实现,其中包含控件选择行为的简单方法

    Spinner2是对默认Android的spinner的重新实现,并提供了一种用于控件选择行为的简单方法。 支持的功能 分配spinner.setAdapter(adapter, withAction);启用/禁用onItemSelected(AdapterView<?> arg0, View arg...

    AdapterViews and Adapters

    Resource Description can be explained, fragments of the document outlines the e-book, the source code to fill in here will be described in detail in our recommendation, more likely to be others to ...

    android图片拍照 删除 添加 旋转

    public void onItemSelected(AdapterView<?> adapter, View view, int position, long id) { mSwitcher.setImageURI(imgList1.get(position).getUri()); pos = position; } public void ...

    移动平台开发技术——第5讲 Android高级控件 慕课习题

    第5讲 客观题自测练习 ...A.OnItemSelected()方法 B.findViewById()方法 C.getText()方法 D.getSelectItem()方法 正确答案:D 4单选(1分)关于列表选择框下列说法错误的是 A.通常只能选择一个选择项 B

    Android 生成带图像的下拉选择框列表.rar

     然后动态生成每个下拉项对应的View,每个下拉项View由LinearLayout中包含一个ImageView及一个TextView构成,最后为为Spinner设置内容适配器:  sp.setOnItemSelectedListener(//设置选项选中的监听器  new ...

    singleselectlinearlayout:只能选择一个子视图的 LinearLayout。 你可以自己实现回调

    实现接口ITMSearchInShopSingleSelectCallback,自定义onItemSelected(View view)和onItemUnSelected(View view)两个方法。 在您的 XML 或代码中使用 SingleSelectLinearLayout 作为 LinearLayout。更重要的是? 您...

    CarouselLib-轮播头像、图片的library.zip

    问题:多次调用AutoScroll()自动播放时,播放速度回成倍增加,这个因为作者没有判断当前是否正在播放。我的demo中对这个问题进行了处理。项目地址:https://github.com/zhaoxin1943/CarouselLib 效果图:如何使用...

    Android代码-Material-Spinner

    Material Spinner ...Add the spinner to your layout XML: ... @Override public void onItemSelected(MaterialSpinner view, int position, long id, String item) { Snackbar.make(view, "Clic

    bottom_navy_bar:精美动感的底部导航

    底部导航栏 精美而生动的底部导航。 导航栏使用您当前的主题,但是您可以随意对其进行自定义。 预习 页面预览 自定义(可选) 底部导航栏 iconSize项目图标的大小 ...title选择此项目时,图标旁边将显示的文本

    search_widget:颤振包

    搜索小部件 Flutter软件包提供了一个搜索小部件,用于从数据列表中选择一个选项。...onItemSelected : (item) { //Do whatever you would like setState (() { _selectedItem = item; }); }, 弹出列表项

    星座说明书

    通过创建线程对象,然后自动调用了run()方法,到达设置的时间时自动跳转启动进入下一个Activity界面。  3.1.2程序 //定义欢迎界面类 public class LaunchActivity extends Activity{ @Override protected void ...

    Android应用开发I实验指导书.doc

    setOnItemSelectedListener(new " "OnItemSelectedListener() { " "@Override " "public void onItemSelected(AdapterView<?> parent, View view, " "int position, " "long id) { " "tv。setText("您选择...

    android-spinner:android中微调器输入的样板

    android中微调器输入的样板 要记住的事情,您需要实现 onItemSelectedListener 接口,然后在 public void onItemSelected( AdapterView<?> parent, View view, int pos, long id) { // An item was selected...

    react-select-dropdown:演示版

    React选择下拉菜单 安装 npm install react-select-dropdown 可以与browserify和React一起使用。 定义 var SelectDropdown = require('react-select-dropdown')...onItemSelected: function(item){ console.log('You

    pixi-emote-selector::speech_balloon::winking_face_with_tongue:pixi.js的Emote选择器

    :speech_balloon: :winking_face_with_tongue: 像素表情选择器表情选择器用法import { EmoteSelector } from ... from ( 'emote_heart' ) , ] , onItemSelected : ( indexSelected ) => { console . log ( "Item selec

    Android-NewPopupMenu-使用PopupWindow实现的Popup菜单.zip

     public void onItemSelected(MenuItem item) { // TODO Auto-generated method stub switch (item.getItemId()) {  case PLAY_SELECTION:  break;  case ADD_TO_PLAYLIST:  break...

Global site tag (gtag.js) - Google Analytics