有人說你工作這么多年了,你平時(shí)熟讀四書五經(jīng)高职,閱碼于無數(shù)钩乍,你至今寫過一篇技術(shù)博客嗎?聽完這句話怔锌,我點(diǎn)燃手中的香煙寥粹,向空中呼出一口氣,當(dāng)香煙逐漸消失埃元,我也在思考涝涤,確實(shí),這幾年來岛杀,我沒有分享過一篇技術(shù)文章阔拳,以至于我覺得這幾年來,我什么都沒有積累类嗤,這對(duì)于一個(gè)程序員想要往更高方向走糊肠,是至關(guān)重要的。于是土浸,我決定嘗試著開始寫技術(shù)文章罪针,剛開始這些文章可能只是針對(duì)初學(xué)者,大呕埔粒可以不用看,幫不到你們派殷,也獲取不到知識(shí)还最,不逼逼了,開始進(jìn)入正題毡惜。一邊聽歌一邊看代碼拓轻??
1、開始了我的第一個(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是依賴于"窗口"來顯示的帕膜,也就是我們的Activity枣氧,最終是交給Window去處理,這里就不講它里面涉及的層級(jí)關(guān)系了垮刹。
所以我們的材料:需要一個(gè)Activity达吞,一個(gè)布局文件,一個(gè)樣式荒典,其余 的是一些內(nèi)部屬性酪劫。
可以看到內(nèi)部實(shí)現(xiàn)了一個(gè)監(jiān)聽器吞鸭,其實(shí)也可以從外面?zhèn)魅耄@樣失去了封裝的意義覆糟,封裝的思想就是對(duì)內(nèi)私有刻剥,對(duì)外開發(fā)。
所以你會(huì)看到滩字,像show造虏,dismiss等,可以自行封裝踢械,我這里就簡單封裝了一個(gè)顯示的方法酗电,基本滿足需求。
3内列、下面看看我的布局文件撵术,直接上碼
手機(jī)模擬器效果圖如下:
4、初始化并且調(diào)用
TalkPopWindow popWindow=new TalkPopWindow(SocialActivity.this);
popWindow.showAsDropDown(talk);
我是誰话瞧,我是漁人碼頭
作者:可可源
鏈接:http://www.reibang.com/p/2d498c0ff222
來源:簡書
著作權(quán)歸作者所有嫩与。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處交排。