繼承PopWindow入門(mén)時(shí)的處女作

前言


有人說(shuō)你工作這么多年了,你平時(shí)熟讀四書(shū)五經(jīng),閱碼于無(wú)數(shù),你至今寫(xiě)過(guò)一篇技術(shù)博客嗎?聽(tīng)完這句話,我點(diǎn)燃手中的香煙,向空中呼出一口氣,當(dāng)香煙逐漸消失,我也在思考,確實(shí),這幾年來(lái),我沒(méi)有分享過(guò)一篇技術(shù)文章,以至于我覺(jué)得這幾年來(lái),我什么都沒(méi)有積累,這對(duì)于一個(gè)程序員想要往更高方向走,是至關(guān)重要的。于是,我決定嘗試著開(kāi)始寫(xiě)技術(shù)文章,剛開(kāi)始這些文章可能只是針對(duì)初學(xué)者,大??梢圆挥每矗瑤筒坏侥銈?,也獲取不到知識(shí),不逼逼了,開(kāi)始進(jìn)入正題。


1、開(kāi)始了我的第一個(gè)View

先上代碼,就不描述了

public class TalkPopWindow extends PopupWindow implements OnClickListener{

private View rootView,talk;

private Activity activity;

@SuppressLint("InflateParams")

public TalkPopWindow(Activity activity) {

LayoutInflater layoutInflater=(LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

rootView=layoutInflater.inflate(R.layout.popuwindow_talk, null);

this.activity=activity;

this.setContentView(rootView);

this.setWidth(LayoutParams.FILL_PARENT);

this.setHeight(LayoutParams.WRAP_CONTENT);

this.setFocusable(true);

this.setOutsideTouchable(true);

this.update();

ColorDrawable dw=new ColorDrawable(00000000);

this.setBackgroundDrawable(dw);

this.setAnimationStyle(R.anim.fade_in);

//talk=(View)rootView.findViewById(R.id.talk);

LinearLayout post=(LinearLayout) rootView.findViewById(R.id.posttalk);

post.setOnClickListener(this);

}

public void showPopuWindow(View view){

if(!this.isShowing()){

this.showAsDropDown(view, 0, 0);

}else {

this.dismiss();

}

}

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

switch (v.getId()) {

case R.id.posttalk:

dismiss();

activity.startActivity(new Intent(activity, PostTalkActivity.class));

//PostTalkPopuWindow popuWindow=new PostTalkPopuWindow(activity);

//popuWindow.showPopuWindow(v);

break;

default:

break;

}

}

}

2、稍微解釋一下,首先是View是依賴于"窗口"來(lái)顯示的,也就是我們的Activity,最終是交給Window去處理,這里就不講它里面涉及的層級(jí)關(guān)系了。

所以我們的材料:需要一個(gè)Activity,一個(gè)布局文件,一個(gè)樣式,其余 的是一些內(nèi)部屬性。

可以看到內(nèi)部實(shí)現(xiàn)了一個(gè)監(jiān)聽(tīng)器,其實(shí)也可以從外面?zhèn)魅?,但這樣失去了封裝的意義,封裝的思想就是對(duì)內(nèi)私有,對(duì)外開(kāi)發(fā)。

所以你會(huì)看到,像show,dismiss等,可以自行封裝,我這里就簡(jiǎn)單封裝了一個(gè)顯示的方法,基本滿足需求。



3、下面看看我的布局文件,直接上碼



手機(jī)模擬器效果圖如下:


4、初始化并且調(diào)用

TalkPopWindow popWindow=new TalkPopWindow(SocialActivity.this);

popWindow.showAsDropDown(talk);


我是誰(shuí),我是漁人碼頭


一首寫(xiě)代碼特別帶勁的歌曲-my heart will go on

聽(tīng)歌曲了,下次再寫(xiě)點(diǎn)比這個(gè)更好一點(diǎn)的。這里只是我當(dāng)時(shí)入門(mén)時(shí)寫(xiě)下來(lái)的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容