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);
    }
}

时间: 2024-10-11 12:56:50

Android 仿QQ消息界面的相关文章

Android高仿QQ消息滑动删除(附源码)

大家都应该使用过QQ吧,他的消息中可以滑动删除功能,我觉得比较有意思,所以模仿写了一个,并且修改了其滑动算法.我先贴几个简单示范图吧 其实主要用的是算法以及对ListView的把控. 一下是适配器的类 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52

android 仿QQ手机版

千人2群开启,欢迎大家围观打酱油,群号145667827 您当前位置 : JavaApk-安卓应用游戏源码服务专家 » QQ » Android项目源码界面超级华丽的仿QQ最新版本 Android项目源码界面超级华丽的仿QQ最新版本 05 2014.05 作者:JavaApk   发布:2014-05-05 12:40   字符数:222   分类:QQ, VIP源码, 即时聊天   阅读: 2,392 次   18条评论 本项目是一个高仿QQ最新版本的项目,界面超级华丽,使用了大量的自定义控件

Android 仿QQ浏览器WebView,滑动隐藏显示ActionBar效果

Android 仿QQ浏览器,滑动隐藏显示ActionBar效果. 往上推,是一个ScrollView会将,actionbar以及内容往上推,当actionbar消失后,将滚动Webview的内容. 此效果是基于QuickReturnHeader源码,修改而来的,代码也不多,实现方法比较简单. 直接上demo:http://download.csdn.net/detail/xufeifandj/8388493 直接看效果图:

IOS总结_可收缩分组表格(仿QQ联系人界面)

#import "yxpGroupTBVC.h" #define  DIC_EXPANDED @"expanded" //是否是展开 0收缩 1展开 #define  DIC_ARARRY @"array" #define  DIC_TITILESTRING @"title" #define  CELL_HEIGHT 40.0f @interfaceyxpGroupTBVC ()<UITableViewDataSourc

Android仿QQ界面

最近这几天,一直跟着朋友们聚会什么的,没怎么做项目,今天总算是有时间开电脑继续做我的项目了.下面我就把我做的效果展示一下. 这是模仿了qq的界面效果.因为代码比较长就不粘贴代码了.需要的小伙伴可以跟我私聊.

亲身体验用Java写的仿qq聊天界面

Java开发工具有许多种,新手用记事本写Java程序,有些人用NetBean,jbuilder,高手用eclipse,下面介绍用eclipse开发qq聊天界面. 代码如下: package Myjava_QQ; import java.awt.*; import javax.swing.*; import Myjava_QQ.truess; import java.awt.event.*; import java.applet.*; import java.io.BufferedReader;

Android仿qq回弹阻尼ScrollView

仿qq写一个可以来回弹的ScrollView. 只需要重写ScrollView: public class MyScrollView extends ScrollView {     // y方向上当前触摸点的前一次记录位置     private int previousY = 0;     // y方向上的触摸点的起始记录位置     private int startY = 0;     // y方向上的触摸点当前记录位置     private int currentY = 0;    

js高仿QQ消息列表左滑功能

该组件,主要功能类似于QQ消息列表左滑出现删除.标为已读等按钮的功能:现在的版本用的是纯javaScript编写:后续会跟进 angularJs 开发的类似组件以及jquery的; 下面,就让我们来认识下怎么使用该程序: 在该程序里,总共分为四个文件: 1 .css文件夹 2. img 图片文件夹 3. js文件 4. index.html  主页面: 稍后,你可以自行下载,打开运行观看效果: 二.代码讲解 1.此html结构,为不可修改结构 <ul class="list-ul"

Android—简单的仿QQ聊天界面

最近仿照QQ聊天做了一个类似界面,先看下界面组成(画面不太美凑合凑合呗,,,,): 其中聊天背景可以是一个LinearLayout或者RelativeLayout里面存放的是ListView(将ListView的分割线设置成透明:android:divider="#0000"否则聊天界面会显示出分割线,,,想想都屌,,,) 于是,我要上主界面的xml布局文件了: <?xml version="1.0" encoding="utf-8"?&g