zoukankan      html  css  js  c++  java
  • Android 仿QQ消息界面

    values 下面

    dimens.xml

    复制代码
    <resources>
    
        <!-- Default screen margins, per the Android Design guidelines. -->
        <dimen name="activity_horizontal_margin">16dp</dimen>
        <dimen name="activity_vertical_margin">16dp</dimen>
    
    </resources>
    复制代码

    主布局

    activity_switch.xml

    复制代码
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
    
        <RelativeLayout
            android:id="@+id/rl_header"
            android:layout_width="fill_parent"
            android:layout_height="48dp"
            android:background="#df3031" >
    
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerInParent="true"
                android:layout_centerVertical="true"
                android:paddingLeft="8.0dp" >
    
                <Button
                    android:id="@+id/btn_message"
                    android:layout_width="70dip"
                    android:layout_height="30dip"
                    android:background="@drawable/baike_btn_pink_left_f_96"
                    android:gravity="center"
                    android:text="消息"
                    android:textColor="#df3031"
                    android:textSize="14sp" />
    
                <Button
                    android:id="@+id/btn_call"
                    android:layout_width="70dip"
                    android:layout_height="30dip"
                    android:background="@drawable/baike_btn_trans_right_f_96"
                    android:gravity="center"
                    android:text="电话"
                    android:textColor="#ffffff"
                    android:textSize="14sp" />
            </LinearLayout>
        </RelativeLayout>
    
        <FrameLayout
            android:id="@+id/fl_content"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" />
    
    </LinearLayout>
    复制代码

    两个fragment

    fragment_message.xml

    复制代码
    <?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:orientation="vertical" 
        android:gravity="center"
        android:background="#BED0E2">
        
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="20sp"
            android:text="消息界面" 
            android:textColor="#000000"/>
    
    </LinearLayout>
    复制代码

    fragment_call.xml

    复制代码
    <?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:orientation="vertical" 
        android:gravity="center"
        android:background="#BED0E2">
        
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="20sp"
            android:text="电话界面" 
            android:textColor="#000000"/>
    
    </LinearLayout>
    复制代码

    主页面

    SwitchActivity.java

    复制代码
    package com.example.switchutils;
    
    import android.graphics.Color;
    import android.os.Bundle;
    import android.support.v4.app.Fragment;
    import android.support.v4.app.FragmentActivity;
    import android.support.v4.app.FragmentManager;
    import android.support.v4.app.FragmentTransaction;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.view.Window;
    import android.widget.Button;
    
    public class SwitchActivity extends FragmentActivity {
    
        private Button btn_message,btn_call;
        
        private CallFragment callFragment;
        private MessageFragment messageFragment;
        
        public static final int MESSAGE_FRAGMENT_TYPE = 1;
        public static final int CALL_FRAGMENT_TYPE = 2;
        public int currentFragmentType = -1;
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            this.requestWindowFeature(Window.FEATURE_NO_TITLE);
            setContentView(R.layout.activity_switch);
            
            btn_message = (Button)findViewById(R.id.btn_message);
            btn_call = (Button)findViewById(R.id.btn_call);
            btn_message.setOnClickListener(onClicker);
            btn_call.setOnClickListener(onClicker);
            
            FragmentManager fragmentManager = getSupportFragmentManager();
            if (savedInstanceState != null) {
                int type = savedInstanceState.getInt("currentFragmentType");
                messageFragment = (MessageFragment)fragmentManager.findFragmentByTag("message");
                callFragment = (CallFragment)fragmentManager.findFragmentByTag("call");
                if(type > 0)
                    loadFragment(type);
            } else {
                FragmentTransaction transaction = fragmentManager
                        .beginTransaction();
                Fragment mainFragment = fragmentManager.findFragmentByTag("message");
                if (mainFragment != null) {
                    transaction.replace(R.id.fl_content, mainFragment);
                    transaction.commit();
                } else {
                    loadFragment(MESSAGE_FRAGMENT_TYPE);
                }
            }
            
        }
        
        @Override
        protected void onSaveInstanceState(Bundle outState) {
            super.onSaveInstanceState(outState);
            outState.putInt("lastFragmentTag", currentFragmentType);
        }
        
        private void switchFragment(int type) {
            switch (type) {
            case MESSAGE_FRAGMENT_TYPE:
                loadFragment(MESSAGE_FRAGMENT_TYPE);
                break;
            case CALL_FRAGMENT_TYPE:
                loadFragment(CALL_FRAGMENT_TYPE);
                break;
            }
            
        }
    
        private void loadFragment(int type) {
            FragmentManager fragmentManager = getSupportFragmentManager();
            FragmentTransaction transaction = fragmentManager.beginTransaction();
            if (type == CALL_FRAGMENT_TYPE) {
                if (callFragment == null) {
                    callFragment = new CallFragment();
    
                    transaction.add(R.id.fl_content, callFragment, "zhishi");
                } else {
                    transaction.show(callFragment);
                }
                if (messageFragment != null) {
                    transaction.hide(messageFragment);
                }
                currentFragmentType = MESSAGE_FRAGMENT_TYPE;
            } else {
                if (messageFragment == null) {
                    messageFragment = new MessageFragment();
                    transaction.add(R.id.fl_content, messageFragment, "wenda");
                } else {
                    transaction.show(messageFragment);
                }
                if (callFragment != null) {
                    transaction.hide(callFragment);
                }
                currentFragmentType = CALL_FRAGMENT_TYPE;
            }
            transaction.commitAllowingStateLoss();
        }
        
        private OnClickListener onClicker = new OnClickListener() {
            @Override
            public void onClick(View v) {
                switch (v.getId()) {
                case R.id.btn_message:
                    btn_message.setTextColor(Color.parseColor("#df3031"));
                    btn_call.setTextColor(Color.WHITE);
                    btn_message
                            .setBackgroundResource(R.drawable.baike_btn_pink_left_f_96);
                    btn_call
                            .setBackgroundResource(R.drawable.baike_btn_trans_right_f_96);
                    switchFragment(MESSAGE_FRAGMENT_TYPE);
                    
                    break;
                case R.id.btn_call:
                    
                    btn_message.setTextColor(Color.WHITE);
                    btn_call.setTextColor(Color.parseColor("#df3031"));
                    btn_message
                            .setBackgroundResource(R.drawable.baike_btn_trans_left_f_96);
                    btn_call
                            .setBackgroundResource(R.drawable.baike_btn_pink_right_f_96);
                    switchFragment(CALL_FRAGMENT_TYPE);
                    
                    break;
                
                }
            }
        };
    
    }
    复制代码

    两个fragment

    MessageFragment.java

    复制代码
    package com.example.switchutils;
    
    import android.os.Bundle;
    import android.support.v4.app.Fragment;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    
    public class MessageFragment extends Fragment {
    
        @Override
        public View onCreateView(LayoutInflater inflater,
                 ViewGroup container, Bundle savedInstanceState) {
    
            return inflater.inflate(R.layout.fragment_message, null);
        }
    
    }
    复制代码

    CallFragment.java

    复制代码
    package com.example.switchutils;
    
    import android.os.Bundle;
    import android.support.v4.app.Fragment;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    
    public class CallFragment extends Fragment {
    
        @Override
        public View onCreateView(LayoutInflater inflater,
                 ViewGroup container, Bundle savedInstanceState) {
    
            return inflater.inflate(R.layout.fragment_call, null);
        }
    }
    复制代码
  • 相关阅读:
    数据库练习
    pymysql
    数据库索引
    数据库查询
    数据库操作
    数据库建表
    数据库初识
    shell 编程
    Struts2与SpringMVC
    SpringAOP
  • 原文地址:https://www.cnblogs.com/wbp0818/p/5453020.html
Copyright © 2011-2022 走看看