前言
有人說你工作這么多年了躯概,你平時熟讀四書五經(jīng)登钥,閱碼于無數(shù),你至今寫過一篇技術(shù)博客嗎楞陷?聽完這句話怔鳖,我點燃手中的香煙,向空中呼出一口氣固蛾,當(dāng)香煙逐漸消失结执,我也在思考,確實艾凯,這幾年來献幔,我沒有分享過一篇技術(shù)文章,以至于我覺得這幾年來趾诗,我什么都沒有積累蜡感,這對于一個程序員想要往更高方向走,是至關(guān)重要的恃泪。于是郑兴,我決定嘗試著開始寫技術(shù)文章,剛開始這些文章可能只是針對初學(xué)者贝乎,大徘榱可以不用看,幫不到你們览效,也獲取不到知識却舀,不逼逼了,開始進(jìn)入正題锤灿。
1挽拔、開始了我的第一個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是依賴于"窗口"來顯示的,也就是我們的Activity,最終是交給Window去處理术裸,這里就不講它里面涉及的層級關(guān)系了空执。
所以我們的材料:需要一個Activity,一個布局文件穗椅,一個樣式,其余 的是一些內(nèi)部屬性奶栖。
可以看到內(nèi)部實現(xiàn)了一個監(jiān)聽器匹表,其實也可以從外面?zhèn)魅耄@樣失去了封裝的意義宣鄙,封裝的思想就是對內(nèi)私有袍镀,對外開發(fā)。
所以你會看到冻晤,像show苇羡,dismiss等,可以自行封裝鼻弧,我這里就簡單封裝了一個顯示的方法设江,基本滿足需求。
3攘轩、下面看看我的布局文件叉存,直接上碼
手機(jī)模擬器效果圖如下:
4、初始化并且調(diào)用
TalkPopWindow popWindow=new TalkPopWindow(SocialActivity.this);
popWindow.showAsDropDown(talk);
我是誰度帮,我是漁人碼頭
一首寫代碼特別帶勁的歌曲-my heart will go on
聽歌曲了歼捏,下次再寫點比這個更好一點的。這里只是我當(dāng)時入門時寫下來的笨篷。