09设置界面的布局和设置界面逻辑的完成

最终实现的效果图如下:




看下布局的整体的outline:



可以看到整体是使用线性布局,中间那个按钮ImageView有一个属性被设置了:

android:visibility="invisible"

整体的实现代码如下:

<?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:background="#f2f0eb"
    android:orientation="vertical" >

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="@dimen/height_top_bar"
        android:background="@color/common_top_bar_blue"
        android:gravity="center_vertical" >

        <TextView
            android:id="@+id/message_title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:text="设置"
            android:textColor="#fff"
            android:textSize="18sp" />
    </RelativeLayout>

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fadingEdge="none" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical" >

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dip"
                android:layout_marginRight="10dip"
                android:layout_marginTop="10dip"
                android:orientation="vertical" >

                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="30dip"
                    android:gravity="bottom|left"
                    android:paddingLeft="10dip"
                    android:text="新消息提醒"
                    android:textColor="@color/btn_gray_pressed" />

                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="1dip"
                    android:background="@color/btn_gray_normal" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical" >

                <RelativeLayout
                    android:id="@+id/rl_switch_notification"
                    android:layout_width="match_parent"
                    android:layout_height="50dip"
                    android:background="@drawable/btn_bottom_selector"
                    android:padding="10dip" >

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_centerVertical="true"
                        android:paddingLeft="10dip"
                        android:text="接收新消息通知"
                        android:textColor="@android:color/black"
                        android:textSize="14sp"
                        android:typeface="serif" />

                    <ImageView
                        android:id="@+id/iv_switch_open_notification"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_alignParentRight="true"
                        android:layout_centerVertical="true"
                        android:background="@drawable/open_icon"
                        android:visibility="visible" />

                    <ImageView
                        android:id="@+id/iv_switch_close_notification"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_alignParentRight="true"
                        android:layout_centerVertical="true"
                        android:background="@drawable/close_icon"
                        android:visibility="invisible" />
                </RelativeLayout>

                <TextView
                    android:id="@+id/textview1"
                    android:layout_width="match_parent"
                    android:layout_height="1dip"
                    android:layout_marginLeft="10dip"
                    android:layout_marginRight="10dip"
                    android:background="#E6E6E6" />

                <RelativeLayout
                    android:id="@+id/rl_switch_sound"
                    android:layout_width="match_parent"
                    android:layout_height="50dip"
                    android:background="@drawable/btn_bottom_selector"
                    android:padding="10dip" >

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_centerVertical="true"
                        android:paddingLeft="10dip"
                        android:text="声音"
                        android:textColor="@android:color/black"
                        android:textSize="14sp"
                        android:typeface="serif" />

                    <ImageView
                        android:id="@+id/iv_switch_open_sound"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_alignParentRight="true"
                        android:layout_centerVertical="true"
                        android:background="@drawable/open_icon"
                        android:visibility="visible" />

                    <ImageView
                        android:id="@+id/iv_switch_close_sound"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_alignParentRight="true"
                        android:layout_centerVertical="true"
                        android:background="@drawable/close_icon"
                        android:visibility="invisible" />
                </RelativeLayout>

                <TextView
                    android:id="@+id/textview2"
                    android:layout_width="match_parent"
                    android:layout_height="1dip"
                    android:layout_marginLeft="10dip"
                    android:layout_marginRight="10dip"
                    android:background="#E6E6E6" />

                <RelativeLayout
                    android:id="@+id/rl_switch_vibrate"
                    android:layout_width="match_parent"
                    android:layout_height="50dip"
                    android:background="@drawable/btn_bottom_selector"
                    android:padding="10dip" >

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_centerVertical="true"
                        android:paddingLeft="10dip"
                        android:text="震动"
                        android:textColor="@android:color/black"
                        android:textSize="14sp"
                        android:typeface="serif" />

                    <ImageView
                        android:id="@+id/iv_switch_open_vibrate"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_alignParentRight="true"
                        android:layout_centerVertical="true"
                        android:background="@drawable/open_icon"
                        android:visibility="visible" />

                    <ImageView
                        android:id="@+id/iv_switch_close_vibrate"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_alignParentRight="true"
                        android:layout_centerVertical="true"
                        android:background="@drawable/close_icon"
                        android:visibility="invisible" />
                </RelativeLayout>

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="10dip"
                    android:layout_marginRight="10dip"
                    android:layout_marginTop="10dip"
                    android:orientation="vertical" >

                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="30dip"
                        android:gravity="bottom|left"
                        android:paddingLeft="10dip"
                        android:text="聊天设置"
                        android:textColor="@color/btn_gray_pressed" />

                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="1dip"
                        android:background="@color/btn_gray_normal" />
                </LinearLayout>

                <RelativeLayout
                    android:id="@+id/rl_switch_speaker"
                    android:layout_width="match_parent"
                    android:layout_height="50dip"
                    android:background="@drawable/btn_bottom_selector"
                    android:padding="10dip" >

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_centerVertical="true"
                        android:paddingLeft="10dip"
                        android:text="使用扬声器播放语音"
                        android:textColor="@android:color/black"
                        android:textSize="14sp"
                        android:typeface="serif" />

                    <ImageView
                        android:id="@+id/iv_switch_open_speaker"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_alignParentRight="true"
                        android:layout_centerVertical="true"
                        android:background="@drawable/open_icon"
                        android:visibility="visible" />

                    <ImageView
                        android:id="@+id/iv_switch_close_speaker"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_alignParentRight="true"
                        android:layout_centerVertical="true"
                        android:background="@drawable/close_icon"
                        android:visibility="invisible" />
                </RelativeLayout>

                <View
                    android:layout_width="match_parent"
                    android:layout_height="1dip"
                    android:layout_marginLeft="10dp"
                    android:layout_marginRight="10dp"
                    android:background="@color/btn_gray_normal" />

                <LinearLayout
                    android:id="@+id/ll_black_list"
                    android:layout_width="match_parent"
                    android:layout_height="50dip"
                    android:background="@drawable/btn_bottom_selector"
                    android:padding="10dip" >

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center_vertical"
                        android:paddingLeft="10dip"
                        android:text="通讯录黑名单"
                        android:textColor="@android:color/black"
                        android:textSize="14sp" />
                </LinearLayout>
                
                <View
                    android:layout_width="match_parent"
                    android:layout_height="1dip"
                    android:layout_marginLeft="10dp"
                    android:layout_marginRight="10dp"
                    android:background="@color/btn_gray_normal" />
                 <LinearLayout
                     android:id="@+id/ll_diagnose"
                    android:layout_width="match_parent"
                    android:layout_height="50dip"
                    android:background="@drawable/btn_bottom_selector"
                    android:padding="10dip" >

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center_vertical"
                        android:paddingLeft="10dip"
                        android:text="发送程序的运行日志给我"
                        android:textColor="@android:color/black"
                        android:textSize="14sp" />
                </LinearLayout>
            </LinearLayout>

            <!--
                 <TextView
                android:layout_width="match_parent"
                android:layout_height="1dip"
                android:layout_marginLeft="10dip"
                android:layout_marginRight="10dip"
                android:background="#E6E6E6" />
            -->

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="15dip"
                android:background="#ffffff"
                android:orientation="vertical" >
                 
                <Button
                    android:id="@+id/btn_logout"
                    android:layout_width="match_parent"
                    android:layout_height="44dp"
                    android:layout_marginBottom="12dp"
                    android:layout_marginLeft="10dip"
                    android:layout_marginRight="10dip"
                    android:layout_marginTop="12dp"
                    android:background="@drawable/btn_style_alert_dialog_special"
                    android:text="@string/button_logout"
                    android:textColor="@android:color/white"
                    android:textSize="18sp" />
            </LinearLayout>
        </LinearLayout>
    </ScrollView>

</LinearLayout>

看一下逻辑代码的Outline:



package com.dy.ustc.im.ui;

import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;

import com.dy.ustc.im.BlacklistActivity;
import com.dy.ustc.im.DiagnoseActivity;
import com.dy.ustc.im.R;
import com.dy.ustc.im.application.IMApplication;
import com.dy.ustc.im.controller.MyApp;
import com.easemob.EMCallBack;
import com.easemob.chat.EMChatManager;
import com.easemob.chat.EMChatOptions;

/**
 * 设置界面
 * 
 * @author 
 * 
 */
public class SettingsFragment extends Fragment implements OnClickListener {

	/**
	 * 设置新消息通知布局
	 */
	private RelativeLayout rl_switch_notification;
	/**
	 * 设置声音布局
	 */
	private RelativeLayout rl_switch_sound;
	/**
	 * 设置震动布局
	 */
	private RelativeLayout rl_switch_vibrate;
	/**
	 * 设置扬声器布局
	 */
	private RelativeLayout rl_switch_speaker;

	/**
	 * 打开新消息通知imageView
	 */
	private ImageView iv_switch_open_notification;
	/**
	 * 关闭新消息通知imageview
	 */
	private ImageView iv_switch_close_notification;
	/**
	 * 打开声音提示imageview
	 */
	private ImageView iv_switch_open_sound;
	/**
	 * 关闭声音提示imageview
	 */
	private ImageView iv_switch_close_sound;
	/**
	 * 打开消息震动提示
	 */
	private ImageView iv_switch_open_vibrate;
	/**
	 * 关闭消息震动提示
	 */
	private ImageView iv_switch_close_vibrate;
	/**
	 * 打开扬声器播放语音
	 */
	private ImageView iv_switch_open_speaker;
	/**
	 * 关闭扬声器播放语音
	 */
	private ImageView iv_switch_close_speaker;

	/**
	 * 声音和震动中间的那条线
	 */
	private TextView textview1, textview2;

	private LinearLayout blacklistContainer;
	
	/**
	 * 退出按钮
	 */
	private Button logoutBtn;

	private EMChatOptions chatOptions;
 
	/**
	 * 诊断
	 */
	private LinearLayout llDiagnose;
	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
		return inflater.inflate(R.layout.fragment_conversation_settings, container, false);
	}

	@Override
	public void onActivityCreated(Bundle savedInstanceState) {
		super.onActivityCreated(savedInstanceState);
		 // 防止被T后,没点确定按钮然后按了home键,长期在后台又进app导致的crash
		if(savedInstanceState != null && savedInstanceState.getBoolean("isConflict", false))
            return;
		//注意:添加了getView()   然后再findViewById
		rl_switch_notification = (RelativeLayout) getView().findViewById(R.id.rl_switch_notification);
		rl_switch_sound = (RelativeLayout) getView().findViewById(R.id.rl_switch_sound);
		rl_switch_vibrate = (RelativeLayout) getView().findViewById(R.id.rl_switch_vibrate);
		rl_switch_speaker = (RelativeLayout) getView().findViewById(R.id.rl_switch_speaker);

		iv_switch_open_notification = (ImageView) getView().findViewById(R.id.iv_switch_open_notification);
		iv_switch_close_notification = (ImageView) getView().findViewById(R.id.iv_switch_close_notification);
		iv_switch_open_sound = (ImageView) getView().findViewById(R.id.iv_switch_open_sound);
		iv_switch_close_sound = (ImageView) getView().findViewById(R.id.iv_switch_close_sound);
		iv_switch_open_vibrate = (ImageView) getView().findViewById(R.id.iv_switch_open_vibrate);
		iv_switch_close_vibrate = (ImageView) getView().findViewById(R.id.iv_switch_close_vibrate);
		iv_switch_open_speaker = (ImageView) getView().findViewById(R.id.iv_switch_open_speaker);
		iv_switch_close_speaker = (ImageView) getView().findViewById(R.id.iv_switch_close_speaker);
		logoutBtn = (Button) getView().findViewById(R.id.btn_logout);
		//在退出登录按钮上显示当前用户名
		if(!TextUtils.isEmpty(EMChatManager.getInstance().getCurrentUser())){
			logoutBtn.setText(getString(R.string.button_logout) + "(" + EMChatManager.getInstance().getCurrentUser() + ")");
		}

		textview1 = (TextView) getView().findViewById(R.id.textview1);
		textview2 = (TextView) getView().findViewById(R.id.textview2);
		
		blacklistContainer = (LinearLayout) getView().findViewById(R.id.ll_black_list);
		llDiagnose=(LinearLayout) getView().findViewById(R.id.ll_diagnose);
		blacklistContainer.setOnClickListener(this);
		rl_switch_notification.setOnClickListener(this);
		rl_switch_sound.setOnClickListener(this);
		rl_switch_vibrate.setOnClickListener(this);
		rl_switch_speaker.setOnClickListener(this);
		logoutBtn.setOnClickListener(this);
		llDiagnose.setOnClickListener(this);
		chatOptions = EMChatManager.getInstance().getChatOptions();
		if (chatOptions.getNotificationEnable()) {
			iv_switch_open_notification.setVisibility(View.VISIBLE);
			iv_switch_close_notification.setVisibility(View.INVISIBLE);
		} else {
			iv_switch_open_notification.setVisibility(View.INVISIBLE);
			iv_switch_close_notification.setVisibility(View.VISIBLE);
		}
		if (chatOptions.getNoticedBySound()) {
			iv_switch_open_sound.setVisibility(View.VISIBLE);
			iv_switch_close_sound.setVisibility(View.INVISIBLE);
		} else {
			iv_switch_open_sound.setVisibility(View.INVISIBLE);
			iv_switch_close_sound.setVisibility(View.VISIBLE);
		}
		if (chatOptions.getNoticedByVibrate()) {
			iv_switch_open_vibrate.setVisibility(View.VISIBLE);
			iv_switch_close_vibrate.setVisibility(View.INVISIBLE);
		} else {
			iv_switch_open_vibrate.setVisibility(View.INVISIBLE);
			iv_switch_close_vibrate.setVisibility(View.VISIBLE);
		}

		if (chatOptions.getUseSpeaker()) {
			iv_switch_open_speaker.setVisibility(View.VISIBLE);
			iv_switch_close_speaker.setVisibility(View.INVISIBLE);
		} else {
			iv_switch_open_speaker.setVisibility(View.INVISIBLE);
			iv_switch_close_speaker.setVisibility(View.VISIBLE);
		}

	}

	
	@Override
	public void onClick(View v) {
		switch (v.getId()) {
		case R.id.rl_switch_notification:
			if (iv_switch_open_notification.getVisibility() == View.VISIBLE) {
				iv_switch_open_notification.setVisibility(View.INVISIBLE);
				iv_switch_close_notification.setVisibility(View.VISIBLE);
				rl_switch_sound.setVisibility(View.GONE);
				rl_switch_vibrate.setVisibility(View.GONE);
				textview1.setVisibility(View.GONE);
				textview2.setVisibility(View.GONE);
				chatOptions.setNotificationEnable(false);
				EMChatManager.getInstance().setChatOptions(chatOptions);

				MyApp.getInstance().getModel().setSettingMsgNotification(false);
			} else {
				iv_switch_open_notification.setVisibility(View.VISIBLE);
				iv_switch_close_notification.setVisibility(View.INVISIBLE);
				rl_switch_sound.setVisibility(View.VISIBLE);
				rl_switch_vibrate.setVisibility(View.VISIBLE);
				textview1.setVisibility(View.VISIBLE);
				textview2.setVisibility(View.VISIBLE);
				chatOptions.setNotificationEnable(true);
				EMChatManager.getInstance().setChatOptions(chatOptions);
				MyApp.getInstance().getModel().setSettingMsgNotification(true);
			}
			break;
		case R.id.rl_switch_sound:
			if (iv_switch_open_sound.getVisibility() == View.VISIBLE) {
				iv_switch_open_sound.setVisibility(View.INVISIBLE);
				iv_switch_close_sound.setVisibility(View.VISIBLE);
				chatOptions.setNoticeBySound(false);
				EMChatManager.getInstance().setChatOptions(chatOptions);
				MyApp.getInstance().getModel().setSettingMsgSound(false);
			} else {
				iv_switch_open_sound.setVisibility(View.VISIBLE);
				iv_switch_close_sound.setVisibility(View.INVISIBLE);
				chatOptions.setNoticeBySound(true);
				EMChatManager.getInstance().setChatOptions(chatOptions);
				MyApp.getInstance().getModel().setSettingMsgSound(true);
			}
			break;
		case R.id.rl_switch_vibrate:
			if (iv_switch_open_vibrate.getVisibility() == View.VISIBLE) {
				iv_switch_open_vibrate.setVisibility(View.INVISIBLE);
				iv_switch_close_vibrate.setVisibility(View.VISIBLE);
				chatOptions.setNoticedByVibrate(false);
				EMChatManager.getInstance().setChatOptions(chatOptions);
				MyApp.getInstance().getModel().setSettingMsgVibrate(false);
			} else {
				iv_switch_open_vibrate.setVisibility(View.VISIBLE);
				iv_switch_close_vibrate.setVisibility(View.INVISIBLE);
				chatOptions.setNoticedByVibrate(true);
				EMChatManager.getInstance().setChatOptions(chatOptions);
				MyApp.getInstance().getModel().setSettingMsgVibrate(true);
			}
			break;
		case R.id.rl_switch_speaker:
			if (iv_switch_open_speaker.getVisibility() == View.VISIBLE) {
				iv_switch_open_speaker.setVisibility(View.INVISIBLE);
				iv_switch_close_speaker.setVisibility(View.VISIBLE);
				chatOptions.setUseSpeaker(false);
				EMChatManager.getInstance().setChatOptions(chatOptions);
				MyApp.getInstance().getModel().setSettingMsgSpeaker(false);
			} else {
				iv_switch_open_speaker.setVisibility(View.VISIBLE);
				iv_switch_close_speaker.setVisibility(View.INVISIBLE);
				chatOptions.setUseSpeaker(true);
				EMChatManager.getInstance().setChatOptions(chatOptions);
				MyApp.getInstance().getModel().setSettingMsgVibrate(true);
			}
			break;
		case R.id.btn_logout: //退出登陆
			logout();
			break;
		case R.id.ll_black_list:
			startActivity(new Intent(getActivity(), BlacklistActivity.class));
			break;
		case R.id.ll_diagnose:
			startActivity(new Intent(getActivity(), DiagnoseActivity.class));
			break;
		default:
			break;
		}

	}

	void logout() {
		final ProgressDialog pd = new ProgressDialog(getActivity());
		pd.setMessage("正在退出登陆..");
		pd.setCanceledOnTouchOutside(false);
		pd.show();
IMApplication.getInstance().logout(new EMCallBack() {
			
			@Override
			public void onSuccess() {
				getActivity().runOnUiThread(new Runnable() {
					public void run() {
						pd.dismiss();
						// 重新显示登陆页面
						((MainActivity) getActivity()).finish();
						startActivity(new Intent(getActivity(), LoginActivity.class));
						
					}
				});
			}
			
			@Override
			public void onProgress(int progress, String status) {
				
			}
			
			@Override
			public void onError(int code, String message) {
				
			}
		});
	}

	
    @Override
    public void onSaveInstanceState(Bundle outState) {
        if(((MainActivity)getActivity()).isConflict)
            outState.putBoolean("isConflict", true);
        super.onSaveInstanceState(outState);
        
    }
}






评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值