当前位置:  编程技术>移动开发
本页文章导读:
    ▪onTouchEvent 中onTouch的返回值的意思        onTouchEvent 中onTouch的返回值的意义 今天想捕获Gallery的Touch事件做自己想要的处理,但你添加完setOnTouchListener监听完之后eclipse自动会生成一个onTouch方法,就可以在这里面做你想要做的处理.........
    ▪ 简略的实现listView中item多个控件以及点击事件        简单的实现listView中item多个控件以及点击事件 public class ProductSearch extends ListActivity { private static class ProductSearchAdapter extends BaseAdapter {        private LayoutInflater mInflater;      private Bitmap mIcon1;.........
    ▪ listview onClick longClick onTouch三个事件的处置       listview onClick longClick onTouch三个事件的处理 int lastX, curX; private int totalMove = 0; private boolean firstDown = true;//开关 int duration = 150; OnTouchListener listViewOnTouchListener = new OnTouchListener() { @Override pu.........

[1]onTouchEvent 中onTouch的返回值的意思
    来源: 互联网  发布时间: 2014-02-18
onTouchEvent 中onTouch的返回值的意义
今天想捕获Gallery的Touch事件做自己想要的处理,但你添加完setOnTouchListener监听完之后eclipse自动会生成一个onTouch方法,就可以在这里面做你想要做的处理了,若你小心地看它会增加return false这行。我在处理完Event.ACTION_MOVE时将其改为return true。当我运行我的程序的时候发现Gallery不能左右滚动了。我就觉得很纳闷了,怎么不能滚动了呢?然后一个朋友提示我应该return false.我改完运行后,果真可以滚动了,并且我在move的时候也实现了我的处理。当时我就在想:return false和return true有何区别呢?

下面就是我在别的文章学习总结来的结论:
1,return false说明你还没消费onTouch事件,在执行完你onTouch里面的代码之后,onTouch事件并没有结束。就是会自动地执行Gallery这个view里onTouch代码(这个为默认).所以这就是为什么没增加你的处理的时候就只自动地调用Gallery的onTouch,若你在onTouch里面增加你的代码并且return false就会执行你的处理和默认的处理。

2,return true说明你已经消费完了onTouch事件,在执行完你的onTouch里面的代码之后,这个onTouch事件就结束了。也就是说不会再调用默认的onTouch事件了。在onTouch里面有很多种的处理比如move,down,up....,若你在move里面return false,那么接着的fling,up等后面的事件也不会处理的。

mGallery.setOnTouchListener(new OnTouchListener(){

			//@Override
			public boolean onTouch(View v, MotionEvent event) {
				// TODO Auto-generated method stub
				System.out.println("Gallery onTouch");
				if(event.getAction()==MotionEvent.ACTION_MOVE){
					mDismiss.removeMessages(1);
					System.out.println("ACTION_MOVE ");
					
				}else if(event.getAction()==MotionEvent.ACTION_UP){
					mDismiss.sendEmptyMessageDelayed(1,10000);
					System.out.println("ACTION_UP ");
				}
				return false;
			}
			
		});


1 楼 fengzhonghun 2011-09-06  
写反了吧!
2 楼 lenomon 2012-04-02  
这篇详细,希望有帮助,Android事件传递机制【Touch事件】
3 楼 追求幸福 2012-04-05  
lenomon 写道
这篇详细,希望有帮助,Android事件传递机制【Touch事件】

Thanks!
4 楼 lenomon 2012-04-07  
追求幸福 写道
lenomon 写道
这篇详细,希望有帮助,Android事件传递机制【Touch事件】

Thanks!

不用谢,多多关注,嘿嘿。

这里有个关于垂直滚动的方法汇总:android垂直自动滚动

    
[2] 简略的实现listView中item多个控件以及点击事件
    来源: 互联网  发布时间: 2014-02-18
简单的实现listView中item多个控件以及点击事件

public class ProductSearch extends ListActivity {

private static class ProductSearchAdapter extends BaseAdapter { 
 
    private LayoutInflater mInflater; 
    private Bitmap mIcon1; 
    private Bitmap mIcon2; 
 
    public ProductSearchAdapter(Context context) { 
 
        mInflater = LayoutInflater.from(context); 
 
        // Icons bound to the rows. 
        mIcon1 = BitmapFactory.decodeResource(context.getResources(), 
                R.drawable.icon48x48_1); 
        mIcon2 = BitmapFactory.decodeResource(context.getResources(), 
                R.drawable.icon48x48_2); 
    } 
 
    @Override 
    public int getCount() { 
 
        return DATA.length; 
    } 
 
    @Override 
    public Object getItem(int position) { 
 
        return position; 
    } 
 
    @Override 
    public long getItemId(int position) { 
 
        return position; 
    } 
 
    @Override 
    public View getView(final int position, View convertView, 
            ViewGroup parent) { 
        ViewHolder holder; 
        Button btn=null; 
 
        if (convertView == null) { 
            convertView = mInflater.inflate(R.layout.productsearch, null); 
 
            // Creates a ViewHolder and store references to the two children 
            // views 
            // we want to bind data to. 
            holder = new ViewHolder(); 
            holder.text = (TextView) convertView.findViewById(R.id.text); 
            holder.icon = (ImageView) convertView.findViewById(R.id.icon); 
            btn=(Button)convertView.findViewById(R.id.prdsrcbutton); 
            convertView.setTag(holder); 
        } else { 
            // Get the ViewHolder back to get fast access to the TextView 
            // and the ImageView. 
            holder = (ViewHolder) convertView.getTag(); 
        } 
 
        // Bind the data efficiently with the holder. 
        holder.text.setText(DATA[position]); 
        holder.icon.setImageBitmap((position & 1) == 1 ? mIcon1 : mIcon2); 
 
        holder.icon.setOnClickListener(new View.OnClickListener() { 
 
            @Override 
            public void onClick(View v) { 
                Log.i("image", " u clicked on icon Position" + position); 
 
            } 
        }); 
        holder.text.setOnClickListener(new View.OnClickListener() { 
 
            @Override 
            public void onClick(View v) { 
                Log.i("Text", " u clicked on text Position" + position); 
 
            } 
        }); 
 
        btn.setOnClickListener(new View.OnClickListener() { 
 
            @Override 
            public void onClick(View v) { 
                Log.i("Button","U clicked on button"); 
 
            } 
        }); 
 
 
        return convertView; 
    } 
 
    static class ViewHolder { 
        TextView text; 
        ImageView icon; 
    } 
 
    private static final String[] DATA = { "Abbaye de Belloc", 
            "Abbaye du Mont des Cats" }; 
 
} 
 
ListView product_search_list; 
Button srch_btn; 
EditText srch_text; 
 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
 
    super.onCreate(savedInstanceState); 
    setListAdapter(new ProductSearchAdapter(this)); 
    // setContentView(R.layout.productsearch); 
    // getListView().setEmptyView(findViewById(R.id.text)); 
    // srch_text = (EditText)findViewById(R.id.prdsearchtb); 
    // srch_btn = (Button) findViewById(R.id.prdsearchtb); 
    // srch_btn.setOnClickListener(new View.OnClickListener() { 
    //       
    // @Override 
    // public void onClick(View v) { 
    // callProductSearchAdapter(); 
    // 
    // } 
    // }); 
 
} 
 
void callProductSearchAdapter() { 
    setListAdapter(new ProductSearchAdapter(this)); 
} 
 
private void createDialog(String title, String text, final Intent i) { 
    if (i == null) { 
        AlertDialog ad = new AlertDialog.Builder(this).setIcon( 
                R.drawable.alert_dialog_icon).setPositiveButton("Ok", null) 
                .setTitle(title).setMessage(text).create(); 
        ad.show(); 
    } 
} 

}


    
[3] listview onClick longClick onTouch三个事件的处置
    来源: 互联网  发布时间: 2014-02-18
listview onClick longClick onTouch三个事件的处理
int lastX, curX;
 private int totalMove = 0;
 private boolean firstDown = true;//开关
 int duration = 150;
 OnTouchListener listViewOnTouchListener = new OnTouchListener() {
  
  @Override
  public boolean onTouch(View v, MotionEvent event) {
   switch (event.getAction()) {
   case MotionEvent.ACTION_DOWN: {
    lastX = (int)event.getX();
    totalMove = 0;
    firstDown = false;
    
    return false;
   }
   case MotionEvent.ACTION_MOVE:{
    if (firstDown) {
     curX = (int) event.getX();
     totalMove = 0;
     firstDown = false;
    }
    curX = (int) event.getX();

    int delatX = curX - lastX;
    //if (delatX > 0) {
     totalMove += delatX;
     lastX = curX;
    //}
    return false;
   }
   case MotionEvent.ACTION_UP:{
    boolean result = false;
    if(totalMove > 20 ){
     //
     Log.e("right","right");
     totalMove = 0;
//things you shouold do here
     result = true;
    }
    if(totalMove < 0 && Math.abs(totalMove) > 20){
     Log.e("left","left");
     totalMove = 0;
//things you shouold do here

     result= true;
    }
    return result;
   }
   }
   return false;
   
  }
 };

listView.setOnTouchListener(listViewOnTouchListener );

 其他的onclickListener onLongClickListener 好普通 无需介绍

关键在于onTouchListener中 onDown的时候 返回false onCLICK 与longclick也会感应到这个动作,true就相反。。。然后在onMove的时候去统计移动的距离,设定一个滑动的敏感度,达到这个值就返回false 处理相应的操作,例如划屏更新UI。。。不过这个值就返回true让onclick的事件响应,同时设定一个duration时延给longclick事件 达到某个值的话 也直接返回true。。

 

没有直接的api方法让他们共存,在于我们如何使用而已。


 

1 楼 大柳树 2011-06-23  
帅!!正好用到这!!
2 楼 bawanglb 2012-02-29  
支持楼主,挺好

    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3