Android腾讯微博客户端开发一:在下方的Tab的实现
2011-09-12 20:24
423 查看
javaeye处女贴
红色的是res下drawable文件夹下的一个selector文件,内容是
Selector文件代码
<?xml version="1.0" encoding="UTF-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="false" android:state_selected="false" android:state_pressed="false" android:drawable=<SPAN style="BACKGROUND-COLOR: #00ff00">"@drawable/tab_timeline_normal" /></SPAN>
<item android:state_focused="false" android:state_selected="true" android:state_pressed="false" android:drawable=<SPAN style="BACKGROUND-COLOR: #00ff00">"@drawable/tab_timeline_active" /></SPAN>
<item android:state_focused="true" android:state_selected="false" android:state_pressed="false" android:drawable=<SPAN style="BACKGROUND-COLOR: #00ff00">"@drawable/tab_timeline_normal" /></SPAN>
<item android:state_focused="true" android:state_selected="true" android:state_pressed="false" android:drawable=<SPAN style="BACKGROUND-COLOR: #00ff00">"@drawable/tab_timeline_active" /></SPAN>
<item android:state_pressed="true" android:drawable=<SPAN style="BACKGROUND-COLOR: #00ff00">"@drawable/tab_timeline_normal" /></SPAN>
</selector>
也是你按下时,和不按时等有一个效果上的改变,具体的可以参看关于selector的知识。绿色的就是两张不同效果的图片
Mainactivity代码
public class MainActivity extends TabActivity {
private TabHost tabHost;
private RadioGroup mainbtGroup;
private static final String HOME = "主页";
private static final String REFER = "提及";
private static final String SECRET = "私信";
private static final String SEARCH = "搜索";
private static final String ATTENTIION = "关注";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tabhost);
tabHost = this.getTabHost();
View view1 = View.inflate(MainActivity.this, R.layout.tab, null);
((ImageView) view1.findViewById(R.id.tab_imageview_icon)).setImageResource(<SPAN style="BACKGROUND-COLOR: #ff0000">R.drawable.tab_timeline_selector)</SPAN>;
((TextView) view1.findViewById(R.id.tab_textview_title)).setText(HOME);
TabHost.TabSpec spec1 = tabHost.newTabSpec(HOME)
.setIndicator(view1)
.setContent(new Intent(this, HomeTimeLineActivity.class));
tabHost.addTab(spec1);
View view2 = View.inflate(MainActivity.this, R.layout.tab, null);
((ImageView) view2.findViewById(R.id.tab_imageview_icon)).setImageResource(<SPAN style="BACKGROUND-COLOR: #ff0000">R.drawable.tab_atme_selector)</SPAN>;
((TextView) view2.findViewById(R.id.tab_textview_title)).setText(REFER);
TabHost.TabSpec spec2 = tabHost.newTabSpec(REFER)
.setIndicator(view2)
.setContent(new Intent(this, ReferActivity.class));
tabHost.addTab(spec2);
View view3 = View.inflate(MainActivity.this, R.layout.tab, null);
((ImageView) view3.findViewById(R.id.tab_imageview_icon)).setImageResource(<SPAN style="BACKGROUND-COLOR: #ff0000">R.drawable.tab_message_selector)</SPAN>;
((TextView) view3.findViewById(R.id.tab_textview_title)).setText(SECRET);
TabHost.TabSpec spec3 = tabHost.newTabSpec(SECRET)
.setIndicator(view3)
.setContent(new Intent(this, MessageActivity.class));
tabHost.addTab(spec3);
View view4 = View.inflate(MainActivity.this, R.layout.tab, null);
((ImageView) view4.findViewById(R.id.tab_imageview_icon)).setImageResource(<SPAN style="BACKGROUND-COLOR: #ff0000">R.drawable.tab_explore_selector</SPAN>);
((TextView) view4.findViewById(R.id.tab_textview_title)).setText(SEARCH);
TabHost.TabSpec spec4 = tabHost.newTabSpec(SEARCH)
.setIndicator(view4)
.setContent(new Intent(this, SearchActivity.class));
tabHost.addTab(spec4);
View view5 = View.inflate(MainActivity.this, R.layout.tab, null);
((ImageView) view5.findViewById(R.id.tab_imageview_icon)).setImageResource(<SPAN style="BACKGROUND-COLOR: #ff0000">R.drawable.tab_focus_selector</SPAN>);
((TextView) view5.findViewById(R.id.tab_textview_title)).setText(ATTENTIION);
TabHost.TabSpec spec5 = tabHost.newTabSpec(ATTENTIION)
.setIndicator(view5)
.setContent(new Intent(this, AttentionActivity.class));
tabHost.addTab(spec5);
}
关键是tabhost,tabcontent和tabs这三个id一定要正确红色的是tab的背景
是一张.9.png格式的图片,这个很有用哟在android里,经常用来处理图片拉升的问题。左边和上面的小点表示要拉伸的地方,右边和下面的表示内容区。关于.9.png格式图片在android里面得更多应用看<a href="http://developer.android.com/guide/developing/tools/draw9patch.html">这里</a>
Tabhost布局文件代码
<?xml version="1.0" encoding="UTF-8"?>
<TabHost android:id="@android:id/tabhost" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android">
<RelativeLayout android:orientation="vertical"
android:layout_width="fill_parent" android:layout_height="fill_parent">
<FrameLayout android:id="@android:id/tabcontent"
android:layout_width="fill_parent" android:layout_height="fill_parent" />
<TabWidget android:id="@android:id/tabs" <SPAN style="BACKGROUND-COLOR: #ff0000">android:background="@drawable/tab_bkg"</SPAN> android:fadingEdge="none"
android:fadingEdgeLength="0.0px" android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true" />
</RelativeLayout>
</TabHost>
Tabhost布局文件代码
android:layout_alignParentBottom="true" 把tab的五个按钮挨着父控件的底部,在android里面RelativeLayout很好用
Tab布局文件,就是你看到的那5个按钮的布局文件代码
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content"
xmlns:android="http://schemas.android.com/apk/res/android">
<ImageView android:id="@+id/tab_imageview_icon" android:layout_width="fill_parent" android:layout_height="32.0dip" android:scaleType="fitCenter" />
<TextView android:id="@+id/tab_textview_title" android:textSize="11.0sp" android:ellipsize="marquee" android:gravity="center" android:layout_width="fill_parent" android:layout_height="wrap_content" android:singleLine="true" android:marqueeRepeatLimit="1" />
</LinearLayout>
红色的是res下drawable文件夹下的一个selector文件,内容是
Selector文件代码
<?xml version="1.0" encoding="UTF-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="false" android:state_selected="false" android:state_pressed="false" android:drawable=<SPAN style="BACKGROUND-COLOR: #00ff00">"@drawable/tab_timeline_normal" /></SPAN>
<item android:state_focused="false" android:state_selected="true" android:state_pressed="false" android:drawable=<SPAN style="BACKGROUND-COLOR: #00ff00">"@drawable/tab_timeline_active" /></SPAN>
<item android:state_focused="true" android:state_selected="false" android:state_pressed="false" android:drawable=<SPAN style="BACKGROUND-COLOR: #00ff00">"@drawable/tab_timeline_normal" /></SPAN>
<item android:state_focused="true" android:state_selected="true" android:state_pressed="false" android:drawable=<SPAN style="BACKGROUND-COLOR: #00ff00">"@drawable/tab_timeline_active" /></SPAN>
<item android:state_pressed="true" android:drawable=<SPAN style="BACKGROUND-COLOR: #00ff00">"@drawable/tab_timeline_normal" /></SPAN>
</selector>
<?xml version="1.0" encoding="UTF-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_focused="false" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/tab_timeline_normal" /> <item android:state_focused="false" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/tab_timeline_active" /> <item android:state_focused="true" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/tab_timeline_normal" /> <item android:state_focused="true" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/tab_timeline_active" /> <item android:state_pressed="true" android:drawable="@drawable/tab_timeline_normal" /> </selector>
也是你按下时,和不按时等有一个效果上的改变,具体的可以参看关于selector的知识。绿色的就是两张不同效果的图片
Mainactivity代码
public class MainActivity extends TabActivity {
private TabHost tabHost;
private RadioGroup mainbtGroup;
private static final String HOME = "主页";
private static final String REFER = "提及";
private static final String SECRET = "私信";
private static final String SEARCH = "搜索";
private static final String ATTENTIION = "关注";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tabhost);
tabHost = this.getTabHost();
View view1 = View.inflate(MainActivity.this, R.layout.tab, null);
((ImageView) view1.findViewById(R.id.tab_imageview_icon)).setImageResource(<SPAN style="BACKGROUND-COLOR: #ff0000">R.drawable.tab_timeline_selector)</SPAN>;
((TextView) view1.findViewById(R.id.tab_textview_title)).setText(HOME);
TabHost.TabSpec spec1 = tabHost.newTabSpec(HOME)
.setIndicator(view1)
.setContent(new Intent(this, HomeTimeLineActivity.class));
tabHost.addTab(spec1);
View view2 = View.inflate(MainActivity.this, R.layout.tab, null);
((ImageView) view2.findViewById(R.id.tab_imageview_icon)).setImageResource(<SPAN style="BACKGROUND-COLOR: #ff0000">R.drawable.tab_atme_selector)</SPAN>;
((TextView) view2.findViewById(R.id.tab_textview_title)).setText(REFER);
TabHost.TabSpec spec2 = tabHost.newTabSpec(REFER)
.setIndicator(view2)
.setContent(new Intent(this, ReferActivity.class));
tabHost.addTab(spec2);
View view3 = View.inflate(MainActivity.this, R.layout.tab, null);
((ImageView) view3.findViewById(R.id.tab_imageview_icon)).setImageResource(<SPAN style="BACKGROUND-COLOR: #ff0000">R.drawable.tab_message_selector)</SPAN>;
((TextView) view3.findViewById(R.id.tab_textview_title)).setText(SECRET);
TabHost.TabSpec spec3 = tabHost.newTabSpec(SECRET)
.setIndicator(view3)
.setContent(new Intent(this, MessageActivity.class));
tabHost.addTab(spec3);
View view4 = View.inflate(MainActivity.this, R.layout.tab, null);
((ImageView) view4.findViewById(R.id.tab_imageview_icon)).setImageResource(<SPAN style="BACKGROUND-COLOR: #ff0000">R.drawable.tab_explore_selector</SPAN>);
((TextView) view4.findViewById(R.id.tab_textview_title)).setText(SEARCH);
TabHost.TabSpec spec4 = tabHost.newTabSpec(SEARCH)
.setIndicator(view4)
.setContent(new Intent(this, SearchActivity.class));
tabHost.addTab(spec4);
View view5 = View.inflate(MainActivity.this, R.layout.tab, null);
((ImageView) view5.findViewById(R.id.tab_imageview_icon)).setImageResource(<SPAN style="BACKGROUND-COLOR: #ff0000">R.drawable.tab_focus_selector</SPAN>);
((TextView) view5.findViewById(R.id.tab_textview_title)).setText(ATTENTIION);
TabHost.TabSpec spec5 = tabHost.newTabSpec(ATTENTIION)
.setIndicator(view5)
.setContent(new Intent(this, AttentionActivity.class));
tabHost.addTab(spec5);
}
public class MainActivity extends TabActivity { private TabHost tabHost; private RadioGroup mainbtGroup; private static final String HOME = "主页"; private static final String REFER = "提及"; private static final String SECRET = "私信"; private static final String SEARCH = "搜索"; private static final String ATTENTIION = "关注"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.tabhost); tabHost = this.getTabHost(); View view1 = View.inflate(MainActivity.this, R.layout.tab, null); ((ImageView) view1.findViewById(R.id.tab_imageview_icon)).setImageResource(R.drawable.tab_timeline_selector); ((TextView) view1.findViewById(R.id.tab_textview_title)).setText(HOME); TabHost.TabSpec spec1 = tabHost.newTabSpec(HOME) .setIndicator(view1) .setContent(new Intent(this, HomeTimeLineActivity.class)); tabHost.addTab(spec1); View view2 = View.inflate(MainActivity.this, R.layout.tab, null); ((ImageView) view2.findViewById(R.id.tab_imageview_icon)).setImageResource(R.drawable.tab_atme_selector); ((TextView) view2.findViewById(R.id.tab_textview_title)).setText(REFER); TabHost.TabSpec spec2 = tabHost.newTabSpec(REFER) .setIndicator(view2) .setContent(new Intent(this, ReferActivity.class)); tabHost.addTab(spec2); View view3 = View.inflate(MainActivity.this, R.layout.tab, null); ((ImageView) view3.findViewById(R.id.tab_imageview_icon)).setImageResource(R.drawable.tab_message_selector); ((TextView) view3.findViewById(R.id.tab_textview_title)).setText(SECRET); TabHost.TabSpec spec3 = tabHost.newTabSpec(SECRET) .setIndicator(view3) .setContent(new Intent(this, MessageActivity.class)); tabHost.addTab(spec3); View view4 = View.inflate(MainActivity.this, R.layout.tab, null); ((ImageView) view4.findViewById(R.id.tab_imageview_icon)).setImageResource(R.drawable.tab_explore_selector); ((TextView) view4.findViewById(R.id.tab_textview_title)).setText(SEARCH); TabHost.TabSpec spec4 = tabHost.newTabSpec(SEARCH) .setIndicator(view4) .setContent(new Intent(this, SearchActivity.class)); tabHost.addTab(spec4); View view5 = View.inflate(MainActivity.this, R.layout.tab, null); ((ImageView) view5.findViewById(R.id.tab_imageview_icon)).setImageResource(R.drawable.tab_focus_selector); ((TextView) view5.findViewById(R.id.tab_textview_title)).setText(ATTENTIION); TabHost.TabSpec spec5 = tabHost.newTabSpec(ATTENTIION) .setIndicator(view5) .setContent(new Intent(this, AttentionActivity.class)); tabHost.addTab(spec5); }
关键是tabhost,tabcontent和tabs这三个id一定要正确红色的是tab的背景
是一张.9.png格式的图片,这个很有用哟在android里,经常用来处理图片拉升的问题。左边和上面的小点表示要拉伸的地方,右边和下面的表示内容区。关于.9.png格式图片在android里面得更多应用看<a href="http://developer.android.com/guide/developing/tools/draw9patch.html">这里</a>
Tabhost布局文件代码
<?xml version="1.0" encoding="UTF-8"?>
<TabHost android:id="@android:id/tabhost" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android">
<RelativeLayout android:orientation="vertical"
android:layout_width="fill_parent" android:layout_height="fill_parent">
<FrameLayout android:id="@android:id/tabcontent"
android:layout_width="fill_parent" android:layout_height="fill_parent" />
<TabWidget android:id="@android:id/tabs" <SPAN style="BACKGROUND-COLOR: #ff0000">android:background="@drawable/tab_bkg"</SPAN> android:fadingEdge="none"
android:fadingEdgeLength="0.0px" android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true" />
</RelativeLayout>
</TabHost>
<?xml version="1.0" encoding="UTF-8"?> <TabHost android:id="@android:id/tabhost" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"> <RelativeLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="fill_parent" android:layout_height="fill_parent" /> <TabWidget android:id="@android:id/tabs" android:background="@drawable/tab_bkg" android:fadingEdge="none" android:fadingEdgeLength="0.0px" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" /> </RelativeLayout> </TabHost>
Tabhost布局文件代码
android:layout_alignParentBottom="true" 把tab的五个按钮挨着父控件的底部,在android里面RelativeLayout很好用
android:layout_alignParentBottom="true" 把tab的五个按钮挨着父控件的底部,在android里面RelativeLayout很好用
Tab布局文件,就是你看到的那5个按钮的布局文件代码
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content"
xmlns:android="http://schemas.android.com/apk/res/android">
<ImageView android:id="@+id/tab_imageview_icon" android:layout_width="fill_parent" android:layout_height="32.0dip" android:scaleType="fitCenter" />
<TextView android:id="@+id/tab_textview_title" android:textSize="11.0sp" android:ellipsize="marquee" android:gravity="center" android:layout_width="fill_parent" android:layout_height="wrap_content" android:singleLine="true" android:marqueeRepeatLimit="1" />
</LinearLayout>
<?xml version="1.0" encoding="UTF-8"?> <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content" xmlns:android="http://schemas.android.com/apk/res/android"> <ImageView android:id="@+id/tab_imageview_icon" android:layout_width="fill_parent" android:layout_height="32.0dip" android:scaleType="fitCenter" /> <TextView android:id="@+id/tab_textview_title" android:textSize="11.0sp" android:ellipsize="marquee" android:gravity="center" android:layout_width="fill_parent" android:layout_height="wrap_content" android:singleLine="true" android:marqueeRepeatLimit="1" /> </LinearLayout>
相关文章推荐
- Android腾讯微博客户端开发一:在下方的Tab的实现
- Android腾讯微博客户端开发一:在下方的Tab的实现
- Android腾讯微博客户端开发一:在下方的Tab的实现
- Android腾讯微博客户端开发一:在下方的Tab的实现
- Android腾讯微博客户端开发一:在下方的Tab的实现
- Android腾讯微博客户端开发一:在下方的Tab的实现
- Android腾讯微博客户端开发三:多账号管理的实现
- Android腾讯微博客户端开发三:多账号管理的实现
- Android腾讯微博客户端开发三:多账号管理的实现
- Android腾讯微博客户端开发三:多账号管理的实现
- Android腾讯微博客户端开发5:利用FootView实现ListView滑动动态加载实现分页
- Android腾讯微博客户端开发5:利用FootView实现ListView滑动动态加载实现分页
- Android腾讯微博客户端开发5:利用FootView实现ListView滑动动态加载实现分页
- Android腾讯微博客户端开发五:利用FootView实现ListView滑动动态加载实现分页
- Android-用户登陆的例子(服务器端开发到客户端实现)
- 6.腾讯微博Android客户端开发——换取Access Token
- 基于Android的小巫新闻客户端开发---显示新闻详细内容业务逻辑实现
- 基于Android的小巫新闻客户端开发--主界面业务逻辑实现
- 3.腾讯微博Android客户端开发——算法、编码、辅助方法编写
- Android UI开发第三十九篇——Tab界面实现汇总及比较