栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 移动开发 > Android

Android 自定义按钮点击事件和长按事件对比

Android 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android 自定义按钮点击事件和长按事件对比

 Android 自定义按钮点击事件和长按事件对比

一个按钮同时实现点击和长按事件,有时候会有冲突,我们针对这一现象来自定义按钮来区分点击和长按事件

1.xml中

 
 
    
    
     
     
    
 
 

2.MainActivity中

public class MainActivity extends Activity { 
 
   private TextView Tv1;  
    private LongTouchBtn Btn1;  
    private int num=0; 
    private SeekBar sbar;  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
      super.onCreate(savedInstanceState);  
      setContentView(R.layout.activity_main);  
      sbar= (SeekBar) findViewById(R.id.seekbar); 
      Tv1 = (TextView)findViewById(R.id.tv1);  
      Btn1 = (LongTouchBtn)findViewById(R.id.btn2);  
      Btn1.setonClickListener(new View.onClickListener() {  
   
 @Override  
 public void onClick(View arg0) {  
   Log.i("huahua", "自定义按钮处理单击");  
     
 }  
      });  
      Btn1.setonLongClickListener(new View.onLongClickListener() {  
   
 @Override  
 public boolean onLongClick(View v) {  
   Log.i("huahua", "自定义按钮处理长按一次相应");  
   return true;  
 }  
      });  
 
        
      Btn1.setonLongTouchListener(new LongTouchListener() {  
   
 @Override  
 public void onLongTouch() {  
   num++;  
   int seekbar_progress = sbar.getProgress(); 
   Log.i("huahua", "seekbar_progress="+seekbar_progress);  
   seekbar_progress++; 
   sbar.setProgress(seekbar_progress); 
   Tv1.setText(num+"");  
   Log.i("huahua", "正在长按");  
     
 }  
      },1000);  
    }  
} 

3.新建一个自定义的LongTouchBtn类

public class LongTouchBtn extends Button{  
   
    
  private boolean clickdown = false;  
    
    
  private LongTouchListener mListener;  
    
    
  private int mtime;  
    
    
  public LongTouchBtn(Context context, AttributeSet attrs) {  
    super(context, attrs);  
    // TODO Auto-generated constructor stub  
  }  
  
    
  @Override  
  public boolean onTouchEvent(MotionEvent event) {  
    if(event.getAction() == MotionEvent.ACTION_DOWN)  
    {  
      clickdown = true;  
      new LongTouchTask().execute();  
  
      Log.i("huahua", "按下");  
    }  
    else if(event.getAction() == MotionEvent.ACTION_UP)  
    {  
      clickdown = false;  
      Log.i("huahua", "弹起");  
    }  
    return super.onTouchEvent(event);  
  }  
  
    
  private void sleep(int time) {  
    try {  
      Thread.sleep(time);  
    } catch (InterruptedException e) {  
      e.printStackTrace();  
    }  
  }  
    
    
  class LongTouchTask extends AsyncTask{  
  
    @Override  
    protected Void doInBackground(Void... params) {  
      while(clickdown)  
      {  
 sleep(mtime);  
 publishProgress(0);  
      }  
      return null;  
    }  
  
    @Override  
    protected void onPostExecute(Void result) {  
  
    }  
  
    @Override  
    protected void onProgressUpdate(Integer... values) {  
      mListener.onLongTouch();  
    }  
      
  }  
    
    
  public void setonLongTouchListener(LongTouchListener listener, int time) {  
    mListener = listener;  
    mtime = time;  
      
  }  
    
    
  public interface LongTouchListener {  
  
      
    void onLongTouch();  
  }  
}  

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/158859.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号