UI TextView菜单模拟按键

来源:互联网 发布:cisco 端口安全 编辑:程序博客网 时间:2024/04/28 06:09

UI  TextView菜单模拟按键

布局设置

      

Layout_bottom中设置成一排模拟的按键

其中每一个按键实现由一个TextView来模拟,首先Layout_bottom设置的背景为浅蓝色,而TextView在没有选中时,背景图片为空白色,而选中时为深蓝色,从而突出不同的。展示出一个按钮的效果。

TextView实现OnClickListener事件处理,首先要做的处理是在TextView的属性中的clickable设置为true才可以实现OnClickListener事件处理。

最终的效果:

 

主布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:background="@drawable/default_bg"    android:gravity="bottom"    android:orientation="vertical" >    <LinearLayout        android:id="@+id/layout_top"        android:layout_width="match_parent"        android:layout_height="50dp"        android:layout_weight="2"        android:background="@drawable/bottom"        android:gravity="center"        android:orientation="vertical" >        <TextView            android:id="@+id/text_top"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="@string/app_name"            android:textColor="@android:color/black"            android:textSize="24sp" />    </LinearLayout>    <LinearLayout        android:id="@+id/layout_body"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:layout_weight="90"        android:gravity="center"        android:orientation="vertical" >    </LinearLayout>    <LinearLayout        android:id="@+id/layout_bottom"        android:layout_width="match_parent"        android:layout_height="100dp"        android:layout_weight="30"        android:background="@drawable/bottom"        android:baselineAligned="true"        android:orientation="horizontal" ><!-- 只要TextView的clickable设置为true就可以实现图片的OnClick事件处理 -->        <TextView            android:id="@+id/text_one"            android:layout_width="wrap_content"            android:layout_height="match_parent"            android:layout_gravity="center"            android:layout_weight="1"            android:clickable="true"            android:drawableTop="@drawable/bg_tab_call_log_pressed"            android:gravity="center"            android:paddingTop="15dp"            android:text="@string/one"            android:textSize="20sp"            tools:ignore="NestedWeights" />        <TextView            android:id="@+id/text_two"            android:layout_width="wrap_content"            android:layout_height="match_parent"            android:layout_weight="1"            android:clickable="true"            android:drawableTop="@drawable/bg_tab_contact_pressed"            android:focusable="true"            android:gravity="center"            android:onClick="onClick"            android:paddingTop="15dp"            android:text="@string/two"            android:textSize="20sp" />        <TextView            android:id="@+id/text_three"            android:layout_width="wrap_content"            android:layout_height="match_parent"            android:layout_gravity="center"            android:layout_weight="1"            android:clickable="true"            android:drawableTop="@drawable/bg_tab_dial_pressed"            android:focusable="true"            android:gravity="center"            android:onClick="onClick"            android:paddingTop="15dp"            android:text="@string/three"            android:textSize="20sp" />        <TextView            android:id="@+id/text_four"            android:layout_width="wrap_content"            android:layout_height="match_parent"            android:layout_gravity="center"            android:layout_weight="1"            android:clickable="true"            android:drawableTop="@drawable/bg_tab_sms_pressed"            android:focusable="true"            android:gravity="center"            android:onClick="onClick"            android:paddingTop="15dp"            android:text="@string/four"            android:textSize="20sp" />    </LinearLayout></LinearLayout>


1,2,3,4Activity的布局相同:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:layout_gravity="center"    android:gravity="center"    android:orientation="vertical" >    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="@string/activity_one"        android:textSize="24sp" /></LinearLayout>


主程序:

package com.example.uitest;import android.os.Bundle;import android.app.ActivityGroup;import android.content.Intent;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.LinearLayout;import android.widget.TextView;@SuppressWarnings("deprecation")public class UIActivity extends ActivityGroup {//声明四个TextView的引用private TextView textOne,textTwo,textThree,textFour;//声明Layout的引用private LinearLayout layout_body;//定义标志位,标记当前所处的页面private int sateFlag = 0;@Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_ui);                initView();        //展示初始的视图,主要展现在Layout_body的布局中        showView(sateFlag);        //给TextView设置事件监听器,前提是设置TextView的android:clickable的属性为true        textOne.setOnClickListener(new ViewListener());        textTwo.setOnClickListener(new ViewListener());        textThree.setOnClickListener(new ViewListener());        textFour.setOnClickListener(new ViewListener());    }       class ViewListener implements OnClickListener{@Overridepublic void onClick(View v) {// TODO Auto-generated method stubswitch (v.getId()) {case R.id.text_one:sateFlag = 0;showView(sateFlag);break;case R.id.text_two:sateFlag = 1;showView(sateFlag);break;case R.id.text_three:sateFlag = 2;showView(sateFlag);break;case R.id.text_four:sateFlag = 3;showView(sateFlag);break;default:break;}}        }    private void initView() {layout_body = (LinearLayout)findViewById(R.id.layout_body);textOne = (TextView)findViewById(R.id.text_one);textTwo = (TextView)findViewById(R.id.text_two);textThree = (TextView)findViewById(R.id.text_three);textFour = (TextView)findViewById(R.id.text_four);}        private void showView(int flag) {switch (flag) {case 0://call this method to remove all childs view form the viewGrouplayout_body.removeAllViews();//获得要展示的ActivityView view0 = getLocalActivityManager().startActivity("one", new Intent(UIActivity.this, OneView.class)).getDecorView();//设置Textview的背景,模拟按键的按下的效果textOne.setBackgroundResource(R.drawable.frame_button_background);textTwo.setBackgroundResource(R.drawable.frame_button_nopressbg);textThree.setBackgroundResource(R.drawable.frame_button_nopressbg);textFour.setBackgroundResource(R.drawable.frame_button_nopressbg);layout_body.addView(view0);break;case 1://call this method to remove all childs view form the viewGrouplayout_body.removeAllViews();//获得要展示的ActivityView view1 = getLocalActivityManager().startActivity("one", new Intent(UIActivity.this, TwoView.class)).getDecorView();//设置Textview的背景,模拟按键的按下的效果textOne.setBackgroundResource(R.drawable.frame_button_nopressbg);textTwo.setBackgroundResource(R.drawable.frame_button_background);textThree.setBackgroundResource(R.drawable.frame_button_nopressbg);textFour.setBackgroundResource(R.drawable.frame_button_nopressbg);layout_body.addView(view1);break;case 2://call this method to remove all childs view form the viewGrouplayout_body.removeAllViews();//获得要展示的ActivityView view2 = getLocalActivityManager().startActivity("one", new Intent(UIActivity.this, ThreeView.class)).getDecorView();//设置Textview的背景,模拟按键的按下的效果textOne.setBackgroundResource(R.drawable.frame_button_nopressbg);textTwo.setBackgroundResource(R.drawable.frame_button_nopressbg);textThree.setBackgroundResource(R.drawable.frame_button_background);textFour.setBackgroundResource(R.drawable.frame_button_nopressbg);layout_body.addView(view2);break;case 3://call this method to remove all childs view form the viewGrouplayout_body.removeAllViews();//获得要展示的ActivityView view3 = getLocalActivityManager().startActivity("one", new Intent(UIActivity.this, FourView.class)).getDecorView();//设置Textview的背景,模拟按键的按下的效果textOne.setBackgroundResource(R.drawable.frame_button_nopressbg);textTwo.setBackgroundResource(R.drawable.frame_button_nopressbg);textThree.setBackgroundResource(R.drawable.frame_button_nopressbg);textFour.setBackgroundResource(R.drawable.frame_button_background);layout_body.addView(view3);break;}}        @Override    public boolean onCreateOptionsMenu(Menu menu) {        getMenuInflater().inflate(R.menu.activity_ui, menu);        return true;    }    }


 

OneView,TwoView,ThreeView,FourView程序相似

package com.example.uitest;import android.app.Activity;import android.os.Bundle;public class OneView extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.one);}}


 工程下载地址:http://download.csdn.net/detail/zhaoshiqing7/4545847

原创粉丝点击