真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

按鈕點(diǎn)擊事件與長按事件在Android項(xiàng)目中的區(qū)別是什么

本篇文章給大家分享的是有關(guān)按鈕點(diǎn)擊事件與長按事件在Android項(xiàng)目中的區(qū)別是什么,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

成都創(chuàng)新互聯(lián)公司從2013年開始,先為奉化等服務(wù)建站,奉化等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為奉化企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

 Android 自定義按鈕點(diǎn)擊事件和長按事件對比

一個(gè)按鈕同時(shí)實(shí)現(xiàn)點(diǎn)擊和長按事件,有時(shí)候會有沖突,我們針對這一現(xiàn)象來自定義按鈕來區(qū)分點(diǎn)擊和長按事件

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", "自定義按鈕處理長按一次相應(yīng)");  
          return true;  
        }  
      });  
        
      /**  
       * 這是一個(gè)自定義的接口 專門負(fù)責(zé)處理長按邏輯  
       *  @param listener  
       *      監(jiān)聽器。  
       * @param time  
       *      第2個(gè)參數(shù)傳入1000 ,表示1秒處理一次onLongTouch()方法  
       */  
      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.新建一個(gè)自定義的LongTouchBtn類

public class LongTouchBtn extends Button{  
   
  /**  
   * 記錄當(dāng)前自定義Btn是否按下  
   */  
  private boolean clickdown = false;  
    
  /**  
   * 下拉刷新的回調(diào)接口  
   */  
  private LongTouchListener mListener;  
    
  /**  
   * 按鈕長按時(shí) 間隔多少毫秒來處理 回調(diào)方法  
   */  
  private int mtime;  
    
  /**  
   * 構(gòu)造函數(shù)  
   * @param context  
   * @param attrs  
   */  
  public LongTouchBtn(Context context, AttributeSet attrs) {  
    super(context, attrs);  
    // TODO Auto-generated constructor stub  
  }  
  
  /**  
   * 處理touch事件  
   */  
  @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);  
  }  
  
  /**  
   * 使當(dāng)前線程睡眠指定的毫秒數(shù)。  
   *  
   * @param time  
   *      指定當(dāng)前線程睡眠多久,以毫秒為單位  
   */  
  private void sleep(int time) {  
    try {  
      Thread.sleep(time);  
    } catch (InterruptedException e) {  
      e.printStackTrace();  
    }  
  }  
    
  /**  
   * 處理長按的任務(wù)  
   */  
  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();  
    }  
      
  }  
    
  /**  
   * 給長按btn控件注冊一個(gè)監(jiān)聽器。  
   *  
   * @param listener  
   *      監(jiān)聽器的實(shí)現(xiàn)。  
   * @param time  
   *      多少毫秒時(shí)間間隔 來處理一次回調(diào)方法  
   */  
  public void setOnLongTouchListener(LongTouchListener listener, int time) {  
    mListener = listener;  
    mtime = time;  
      
  }  
    
  /**  
   * 長按監(jiān)聽接口,使用按鈕長按的地方應(yīng)該注冊此監(jiān)聽器來獲取回調(diào)。  
   */  
  public interface LongTouchListener {  
  
    /**  
     * 處理長按的回調(diào)方法  
     */  
    void onLongTouch();  
  }  
}  

以上就是按鈕點(diǎn)擊事件與長按事件在Android項(xiàng)目中的區(qū)別是什么,小編相信有部分知識點(diǎn)可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


分享名稱:按鈕點(diǎn)擊事件與長按事件在Android項(xiàng)目中的區(qū)別是什么
網(wǎng)站鏈接:http://weahome.cn/article/jogogi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部