android仿新聞閱讀器菜單彈出效果實(shí)例(附源碼DEMO下載)
開發(fā)中碰到問題之后實(shí)現(xiàn)的,覺得可能有的開發(fā)者用的到或則希望獨(dú)立成一個(gè)小功能DEMO,所以就放出來這么一個(gè)DEMO。
原本覺得是最后完成后發(fā)網(wǎng)站客戶端的,可是這樣體現(xiàn)不出一個(gè)功能一個(gè)功能的分析實(shí)現(xiàn)效果,而且周期時(shí)間長(zhǎng),所以就完成一部分,發(fā)一部分,敬請(qǐng)諒解。
下面的菜單彈出效果在很多的新聞閱讀器上都有,比如今日頭條、360新聞等。
其實(shí)這個(gè)實(shí)現(xiàn)起來很簡(jiǎn)單,看其效果,其實(shí)就是一個(gè)PopupWindow,之后設(shè)定相應(yīng)postion的按鈕點(diǎn)擊屬性,之后獲取按鈕的位置,給它設(shè)置動(dòng)畫顯示消失就可以出現(xiàn)了。
下面看看代碼的思路:
由于整體是一個(gè)LISTVIEW,所以我把點(diǎn)擊的事件寫到了對(duì)應(yīng)的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)和消失動(dòng)畫
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焦點(diǎn)
popupWindow.setFocusable(true);
//設(shè)置popwindow如果點(diǎn)擊外面區(qū)域,便關(guān)閉。
popupWindow.setOutsideTouchable(true);
popupWindow.update();
if (popupWindow.isShowing()) {
}
btn_pop_close.setOnClickListener(new OnClickListener() {
public void onClick(View paramView) {
popupWindow.dismiss();
}
});
}
/**
* 每個(gè)ITEM中more按鈕對(duì)應(yīng)的點(diǎn)擊動(dòng)作
* */
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];
//獲取點(diǎn)擊按鈕的坐標(biāo)
v.getLocationOnScreen(arrayOfInt);
int x = arrayOfInt[0];
int y = arrayOfInt[1];
showPop(v, x , y, position);
}
}
}
就這么多的內(nèi)容,很簡(jiǎn)單,日后碰到這類相關(guān)的效果,也就不用怕了。
下面是我經(jīng)過上述代碼實(shí)現(xiàn)的效果:

下面放上該效果源碼DEMO的下載地址:下載地址
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Android WebView如何判定網(wǎng)頁加載的錯(cuò)誤
- Android webView字體突然變小的原因及解決
- Android 解決WebView多進(jìn)程崩潰的方法
- Android 中 WebView 的基本用法詳解
- 在Android環(huán)境下WebView中攔截所有請(qǐng)求并替換URL示例詳解
- 解決Android webview設(shè)置cookie和cookie丟失的問題
- Android 如何從零開始寫一款書籍閱讀器的示例
- Android實(shí)現(xiàn)閱讀進(jìn)度記憶功能
- android閱讀器長(zhǎng)按選擇文字功能實(shí)現(xiàn)代碼
- Android實(shí)現(xiàn)閱讀APP平移翻頁效果
- Android編程實(shí)現(xiàn)小說閱讀器滑動(dòng)效果的方法
- Android使用WebView實(shí)現(xiàn)離線閱讀功能
相關(guān)文章
Android 中TextView的使用imageview被壓縮問題解決辦法
這篇文章主要介紹了Android 中TextView的使用imageview被壓縮問題解決辦法的相關(guān)資料,需要的朋友可以參考下2017-04-04
Android自定義View實(shí)現(xiàn)仿網(wǎng)易音樂唱片播放效果
這篇文章主要為大家詳細(xì)介紹了Android自定義View實(shí)現(xiàn)仿網(wǎng)易音樂唱片播放效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04
Android 實(shí)現(xiàn)代碼混淆的實(shí)例
這篇文章主要介紹了Android 實(shí)現(xiàn)代碼混淆的實(shí)例的相關(guān)資料,希望通過本文大家能夠掌握Android代碼混淆的實(shí)現(xiàn)方法,需要的朋友可以參考下2017-09-09
Flutter實(shí)現(xiàn)底部和頂部導(dǎo)航欄
這篇文章主要為大家詳細(xì)介紹了Flutter實(shí)現(xiàn)底部和頂部導(dǎo)航欄,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07
Android訪問php取回json數(shù)據(jù)實(shí)例
Android訪問php取回json數(shù)據(jù),實(shí)現(xiàn)代碼如下,遇到訪問網(wǎng)絡(luò)的權(quán)限不足在AndroidManifest.xml中,需要進(jìn)行如下配置2013-06-06
Android ListView自定義Adapter實(shí)現(xiàn)仿QQ界面
這篇文章主要為大家詳細(xì)介紹了ListView自定義Adapter實(shí)現(xiàn)仿QQ界面,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10
flutter監(jiān)聽app進(jìn)入前后臺(tái)狀態(tài)的實(shí)現(xiàn)
在開發(fā)app的過程中,我們經(jīng)常需要知道app處于前后臺(tái)的狀態(tài),本文主要介紹了flutter監(jiān)聽app進(jìn)入前后臺(tái)狀態(tài)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04
Android自定義控件ViewFipper實(shí)現(xiàn)豎直跑馬燈效果
這篇文章主要為大家詳細(xì)介紹了Android自定義控件ViewFipper實(shí)現(xiàn)豎直跑馬燈效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12

