android仿新聞閱讀器菜單彈出效果實例(附源碼DEMO下載)
開發(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)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
- Android WebView如何判定網(wǎng)頁加載的錯誤
- Android webView字體突然變小的原因及解決
- Android 解決WebView多進程崩潰的方法
- Android 中 WebView 的基本用法詳解
- 在Android環(huán)境下WebView中攔截所有請求并替換URL示例詳解
- 解決Android webview設(shè)置cookie和cookie丟失的問題
- Android 如何從零開始寫一款書籍閱讀器的示例
- Android實現(xiàn)閱讀進度記憶功能
- android閱讀器長按選擇文字功能實現(xiàn)代碼
- Android實現(xiàn)閱讀APP平移翻頁效果
- Android編程實現(xiàn)小說閱讀器滑動效果的方法
- Android使用WebView實現(xiàn)離線閱讀功能
相關(guān)文章
Android AsyncTask的缺陷和問題總結(jié)
這篇文章主要介紹了Android AsyncTask的缺陷和問題總結(jié)的相關(guān)資料,需要的朋友可以參考下2017-03-03Android基于Mapbox?V10?繪制LineGradient軌跡
這篇文章主要介紹了Android基于Mapbox?V10?繪制LineGradient軌跡,文章通告介紹一些V10上的用法,最終講下如何繪制漸變運動記錄軌跡,感興趣的小伙伴可以參考一下2022-08-08Android文件存儲SharedPreferences源碼解析
SharedPreferences是安卓平臺上一個輕量級的存儲類,用來保存應用的一些常用配置,比如Activity狀態(tài),Activity暫停時,將此activity的狀態(tài)保存到SharedPereferences中;當Activity重載,系統(tǒng)回調(diào)方法onSaveInstanceState時,再從SharedPreferences中將值取出2022-08-08實例解析如何在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)存泄漏問題,文中對Activity無法被回收而造成的內(nèi)存泄漏給出了通常的解決方案,需要的朋友可以參考下2016-02-02