欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

android仿新聞閱讀器菜單彈出效果實例(附源碼DEMO下載)

 更新時間:2016年11月03日 09:39:16   作者:vipra  
本篇文章介紹了android仿新聞閱讀器菜單彈出效果實例,現(xiàn)在很多閱讀器都有這個功能,需要的朋友可以看一下。

開發(fā)中碰到問題之后實現(xiàn)的,覺得可能有的開發(fā)者用的到或則希望獨立成一個小功能DEMO,所以就放出來這么一個DEMO。

原本覺得是最后完成后發(fā)網(wǎng)站客戶端的,可是這樣體現(xiàn)不出一個功能一個功能的分析實現(xiàn)效果,而且周期時間長,所以就完成一部分,發(fā)一部分,敬請諒解。

下面的菜單彈出效果在很多的新聞閱讀器上都有,比如今日頭條、360新聞等。

其實這個實現(xiàn)起來很簡單,看其效果,其實就是一個PopupWindow,之后設(shè)定相應postion的按鈕點擊屬性,之后獲取按鈕的位置,給它設(shè)置動畫顯示消失就可以出現(xiàn)了。

下面看看代碼的思路:

由于整體是一個LISTVIEW,所以我把點擊的事件寫到了對應的Adapter適配器中。

public class MyAdapter extends BaseAdapter { 
  LayoutInflater inflater = null; 
  Activity activity; 
  ArrayList<News> newslist; 
  private PopupWindow popupWindow; 
 
  public MyAdapter(Activity activity, ArrayList<News> newslist) { 
    this.activity = activity; 
    this.newslist = newslist; 
    inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    initPopWindow(); 
  } 
 
  @Override 
  public int getCount() { 
    return newslist != null ? newslist.size() : 0; 
  } 
 
  @Override 
  public News getItem(int position) { 
    if (newslist != null && newslist.size() != 0) { 
      return newslist.get(position); 
    } 
    return null; 
  } 
 
  @Override 
  public long getItemId(int position) { 
    return position; 
  } 
 
  @Override 
  public View getView(final int position, View convertView, ViewGroup parent) { 
    View vi = convertView; 
    final ViewHolder holder; 
    if (vi == null) { 
      vi = inflater.inflate(R.layout.listview_item, null); 
      holder = new ViewHolder(); 
      holder.item_title = (TextView) vi.findViewById(R.id.item_title); 
      holder.item_content = (TextView) vi.findViewById(R.id.item_content); 
      holder.button_showpop = (ImageView) vi.findViewById(R.id.button_showpop); 
      vi.setTag(holder); 
    } else { 
      holder = (ViewHolder) vi.getTag(); 
    } 
    News news = getItem(position); 
    holder.item_title.setText(news.getTitle()); 
    holder.item_content.setText(news.getContent()); 
    holder.button_showpop .setOnClickListener(new popAction(position)); 
    return vi; 
  } 
 
  public class ViewHolder { 
    TextView item_title; 
    TextView item_content; 
    ImageView button_showpop; 
  } 
   
  /** 
   * 初始化popWindow 
   * */ 
  private void initPopWindow() { 
    View popView = inflater.inflate(R.layout.listview_pop, null); 
    popupWindow = new PopupWindow(popView, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
    popupWindow.setBackgroundDrawable(new ColorDrawable(0)); 
    //設(shè)置popwindow出現(xiàn)和消失動畫 
    popupWindow.setAnimationStyle(R.style.PopMenuAnimation); 
    btn_pop_close = (ImageView) popView.findViewById(R.id.btn_pop_close); 
  } 
   
  /** popWindow 關(guān)閉按鈕 */ 
  private ImageView btn_pop_close; 
   
  /** 
   * 顯示popWindow 
   * */ 
  public void showPop(View parent, int x, int y,int postion) { 
    //設(shè)置popwindow顯示位置 
    popupWindow.showAtLocation(parent, 0, x, y); 
    //獲取popwindow焦點 
    popupWindow.setFocusable(true); 
    //設(shè)置popwindow如果點擊外面區(qū)域,便關(guān)閉。 
    popupWindow.setOutsideTouchable(true); 
    popupWindow.update(); 
    if (popupWindow.isShowing()) { 
       
    } 
    btn_pop_close.setOnClickListener(new OnClickListener() { 
      public void onClick(View paramView) { 
        popupWindow.dismiss(); 
      } 
    }); 
  } 
   
  /** 
   * 每個ITEM中more按鈕對應的點擊動作 
   * */ 
  public class popAction implements OnClickListener{ 
    int position; 
    public popAction(int position){ 
      this.position = position; 
    } 
    @Override 
    public void onClick(View v) { 
      int[] arrayOfInt = new int[2]; 
      //獲取點擊按鈕的坐標 
      v.getLocationOnScreen(arrayOfInt); 
      int x = arrayOfInt[0]; 
      int y = arrayOfInt[1]; 
      showPop(v, x , y, position); 
    } 
  } 
} 

就這么多的內(nèi)容,很簡單,日后碰到這類相關(guān)的效果,也就不用怕了。

下面是我經(jīng)過上述代碼實現(xiàn)的效果:

下面放上該效果源碼DEMO的下載地址:下載地址

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android  AsyncTask的缺陷和問題總結(jié)

    Android AsyncTask的缺陷和問題總結(jié)

    這篇文章主要介紹了Android AsyncTask的缺陷和問題總結(jié)的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • Android實現(xiàn)簡單的banner輪播圖

    Android實現(xiàn)簡單的banner輪播圖

    這篇文章主要為大家詳細介紹了Android實現(xiàn)簡單的banner輪播圖,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • Android下的EXIF是什么

    Android下的EXIF是什么

    這篇文章主要為大家詳細介紹了Android下的EXIF是什么,Exif(Exchangeable Image File 可交換圖像文件)是一種圖象文件格式,它的數(shù)據(jù)存儲與JPEG格式是完全相同的,想要深入了解的朋友可以參考一下
    2016-04-04
  • Android基于Mapbox?V10?繪制LineGradient軌跡

    Android基于Mapbox?V10?繪制LineGradient軌跡

    這篇文章主要介紹了Android基于Mapbox?V10?繪制LineGradient軌跡,文章通告介紹一些V10上的用法,最終講下如何繪制漸變運動記錄軌跡,感興趣的小伙伴可以參考一下
    2022-08-08
  • Android文件存儲SharedPreferences源碼解析

    Android文件存儲SharedPreferences源碼解析

    SharedPreferences是安卓平臺上一個輕量級的存儲類,用來保存應用的一些常用配置,比如Activity狀態(tài),Activity暫停時,將此activity的狀態(tài)保存到SharedPereferences中;當Activity重載,系統(tǒng)回調(diào)方法onSaveInstanceState時,再從SharedPreferences中將值取出
    2022-08-08
  • Android?Drawable代碼編寫的新姿勢分享

    Android?Drawable代碼編寫的新姿勢分享

    Drawable是什么?按照字面翻譯,就是可繪制的,由于能夠繪制的東西很多,所以這個類是一個抽象類,下面這篇文章主要給大家介紹了關(guān)于Android?Drawable代碼編寫的新姿勢,需要的朋友可以參考下
    2022-01-01
  • 實例解析如何在Android應用中實現(xiàn)彈幕動畫效果

    實例解析如何在Android應用中實現(xiàn)彈幕動畫效果

    這篇文章主要介紹了如何在Android應用中實現(xiàn)彈幕動畫效果的實例,文中是利用RelativeLayout布局然后控制ViewGroup中view的顯示,細節(jié)展示得比較詳細,需要的朋友可以參考下
    2016-04-04
  • 淺談Android應用的內(nèi)存優(yōu)化及Handler的內(nèi)存泄漏問題

    淺談Android應用的內(nèi)存優(yōu)化及Handler的內(nèi)存泄漏問題

    這篇文章主要介紹了Android應用的內(nèi)存優(yōu)化及Handler的內(nèi)存泄漏問題,文中對Activity無法被回收而造成的內(nèi)存泄漏給出了通常的解決方案,需要的朋友可以參考下
    2016-02-02
  • Adnroid打造通用的帶進度條的WebView

    Adnroid打造通用的帶進度條的WebView

    這篇文章主要為大家詳細介紹了Adnroid打造通用的帶進度條的WebView的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • Android編程之滑動按鈕事件實例詳解

    Android編程之滑動按鈕事件實例詳解

    這篇文章主要介紹了Android編程之滑動按鈕事件,結(jié)合具體實例形式分析了Android滑動按鈕功能的具體實現(xiàn)步驟、布局及功能實現(xiàn)相關(guān)操作技巧,需要的朋友可以參考下
    2017-03-03

最新評論