专属空间一-主界面设计

  从昨天开始构思这个项目的,构思了一天,从自己到底要开发一款怎样的软件到确定目标用了几个小时。

现在软件技术已经非常的成熟,各种各样的软件也都有人做了。自己想了又想,结合当代人的特点,开发一款比较全能的软件。也就是说里面涵盖的东西比较多。有这个想法以后就开时找素材,应该开发几个页面,怎样布局,加入哪些小程序在这个软件里面。由于说是自己的基础还是非常薄弱的,只能说是在网络找到相应的教学视频,跟着一步一步去做,然后再去回头看每天所做过的内容,吸收相应的知识点,其实也就是说,在积累学习的经验而已。

  首先说一下自己目前所确定的内容有什么:五子棋(娱乐时刻)、计账本(清晰的一天)、语音词典(不一样的表达)、网络视频播放(你眼中的世界)、音乐播放器(听世界的美好)、教务系统(交互)、历史上的今天、天气(今天的心情)、新闻(掌上资讯)括号里面的是自己给取的名字。哈哈哈哈~~~

  准备1-2天完成一项。

  接下来进入今天的正题:主界面的设计

  

 

 

  然后是设计跳转到主界面

  

 

 

 

 

下面分页的用的是radiogroup和radiobutton组合中间用的是fragment添加到此布局页面之中,下面还设置了点击的效果的变换

radiobutton中的button属性设置为@null,不显示按钮的样式,然后设计加入图片drawableTop,图片的效果单独设置一下,同时设置监听,点击下面的按钮显示的是对应的fragment,对应的下面的文字也是设置了效果的。还完成了我的页面这几项的跳转。

以下为今天编写的代码:

MainActivity和xml

package com.example.personspace;

import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;

import android.os.Bundle;
import android.widget.RadioGroup;

public class MainActivity extends AppCompatActivity implements RadioGroup.OnCheckedChangeListener{
    RadioGroup mainRg;
    //声明三个按钮对应的Fragment对象
    Fragment starFrag,parnterFrag,meFrag;
    private FragmentManager manager;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mainRg=findViewById(R.id.main_rg);
        //设置监听点击了那个单选按钮
        mainRg.setOnCheckedChangeListener(this);
        //创建碎片对象
        starFrag=new StarFragment();
        parnterFrag=new ParnterFragment();
        meFrag=new MeFragment();
        //将三个Fragment进行动态加载,一起加载到布局当中;replace         add/hide/show
        addFragmentPage();

    }

    /**
     * @des 将主页当中的碎片一起加载到布局当中,有用的显示,无用的隐藏
     */

    private void addFragmentPage() {
        //创建碎片管理者对象
        manager=getSupportFragmentManager();
        //创建碎片处理事务对象
        FragmentTransaction transaction=manager.beginTransaction();
        //将三个Fragment统一添加到布局当中
        transaction.add(R.id.main_layout_center,starFrag);
        transaction.add(R.id.main_layout_center,parnterFrag);
        transaction.add(R.id.main_layout_center,meFrag);
        //隐藏后面两个
        transaction.hide(parnterFrag);
        transaction.hide(meFrag);
        //提交碎片改变后的事物
        transaction.commit();


    }

    @Override
    public void onCheckedChanged(RadioGroup group, int checkedId) {
        FragmentTransaction transaction=manager.beginTransaction();
        switch (checkedId) {
            case R.id.main_rb_star:
                transaction.hide(parnterFrag);
                transaction.hide(meFrag);
                transaction.show(starFrag);

                break;
            case R.id.main_rb_parnter:
                transaction.hide(starFrag);
                transaction.hide(meFrag);
                transaction.show(parnterFrag);

                break;
            case R.id.main_rb_me:
                transaction.hide(starFrag);
                transaction.hide(parnterFrag);
                transaction.show(meFrag);

                break;
        }
        transaction.commit();
    }
}

 

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <TextView
        android:id="@+id/main_tv_title"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:text="@string/app_name"
        android:background="@color/lightyellow"
        android:gravity="center"
        android:textSize="20sp"
        android:textStyle="bold"
        android:textColor="@color/lightpink"
        ></TextView>
    <RadioGroup
        android:id="@+id/main_rg"
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:orientation="horizontal"
        android:background="@color/lightyellow"
        android:layout_alignParentBottom="true"
        android:padding="5dp">
        <RadioButton
            android:id="@+id/main_rb_star"
            style="@style/main_rb"
            android:drawableTop="@drawable/main_rb_star"
            android:text="@string/lable_star"
            android:checked="true"/>

        <RadioButton
            android:id="@+id/main_rb_parnter"
            style="@style/main_rb"
            android:drawableTop="@drawable/main_rb_parnter"
            android:text="@string/lable_parnter"
            />

        <RadioButton
            android:id="@+id/main_rb_me"
            style="@style/main_rb"
            android:drawableTop="@drawable/main_rb_me"
            android:text="@string/lable_me"
            />

    </RadioGroup>
    <!--中间部分使用占位,会用Fragment进行布局-->
    <LinearLayout
        android:id="@+id/main_layout_center"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:layout_below="@+id/main_tv_title"
        android:layout_above="@+id/main_rg"/>

</RelativeLayout>

 

MeFragment对应的xml

package com.example.personspace;

import android.content.Intent;
import android.os.Bundle;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import com.example.personspace.Me.AboutActivity;
import com.example.personspace.Me.FeedBackActivity;
import com.example.personspace.Me.FuctionActivity;
import com.example.personspace.Me.UpdateActivity;

import de.hdodenhof.circleimageview.CircleImageView;

/**
 * A simple {@link Fragment} subclass.

 */
public class MeFragment extends Fragment {
    private TextView About,Function,Update,FeedBack;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_me, container, false);
       About=view.findViewById(R.id.mefrag_tv_about);
       Function=view.findViewById(R.id.mefrag_tv_function);
       Update=view.findViewById(R.id.mefrag_tv_update);
       FeedBack=view.findViewById(R.id.mefrag_tv_feedback);


        About.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(getActivity(), AboutActivity.class);
                startActivity(intent);
            }
        });
        Function.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(getActivity(), FuctionActivity.class);
                startActivity(intent);
            }
        });
        Update.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(getActivity(), UpdateActivity.class);
                startActivity(intent);
            }
        });
        FeedBack.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(getActivity(), FeedBackActivity.class);
                startActivity(intent);
            }
        });

        return view;

    }



}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MeFragment"
    android:background="@mipmap/me"
    android:orientation="vertical">
    <de.hdodenhof.circleimageview.CircleImageView
        android:id="@+id/mefrag_iv"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="10dp"
        app:civ_border_width="2dp"
        app:civ_border_color="@color/grey"
        android:background="@mipmap/touxiang"/>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:orientation="horizontal"
        android:layout_marginTop="150dp">
        <View
            android:layout_width="4dp"
            android:layout_height="30dp"
            android:layout_gravity="center_vertical"
            android:background="@color/colorAccent"
            android:layout_marginLeft="40dp"
            android:layout_marginRight="10dp"/>
        <TextView
            android:id="@+id/mefrag_tv_about"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:text="@string/about_app"
            android:textColor="@color/pink"
            android:textSize="20sp"
            android:gravity="center|left"
            android:onClick="About"
            />

    </LinearLayout>
    <View
        android:layout_width="match_parent"
        android:layout_height="2dp"
        android:background="@color/white"/>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:orientation="horizontal">
        <View
            android:layout_width="4dp"
            android:layout_height="30dp"
            android:layout_gravity="center_vertical"
            android:background="@color/colorAccent"
            android:layout_marginLeft="40dp"
            android:layout_marginRight="10dp"/>
        <TextView
            android:id="@+id/mefrag_tv_function"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:text="@string/function"
            android:textSize="20sp"
            android:textColor="@color/pink"
            android:gravity="center|left"/>
    </LinearLayout>
    <View
        android:layout_width="match_parent"
        android:layout_height="2dp"
        android:background="@color/white"/>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:orientation="horizontal">
        <View
            android:layout_width="4dp"
            android:layout_height="30dp"
            android:layout_gravity="center_vertical"
            android:background="@color/colorAccent"
            android:layout_marginLeft="40dp"
            android:layout_marginRight="10dp"/>
        <TextView
            android:id="@+id/mefrag_tv_update"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:text="@string/update"
            android:textSize="20sp"
            android:textColor="@color/pink"
            android:gravity="center|left"/>
    </LinearLayout>
    <View
        android:layout_width="match_parent"
        android:layout_height="2dp"
        android:background="@color/white"/>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:orientation="horizontal">
        <View
            android:layout_width="4dp"
            android:layout_height="30dp"
            android:layout_gravity="center_vertical"
            android:background="@color/colorAccent"
            android:layout_marginLeft="40dp"
            android:layout_marginRight="10dp"/>
        <TextView
            android:id="@+id/mefrag_tv_feedback"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:text="@string/feedback"
            android:textSize="20sp"
            android:textColor="@color/pink"
            android:gravity="center|left"/>
    </LinearLayout>
    <View
        android:layout_width="match_parent"
        android:layout_height="2dp"
        android:background="@color/white"/>





</LinearLayout>

列举一个功能的跳转ABOUT.XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".Me.AboutActivity"
    android:orientation="vertical"
    android:background="@mipmap/meback"
    >
    <TextView
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:text="@string/about_app"
        android:gravity="center"
        android:textSize="25dp"
        android:textStyle="bold"/>

    <TextView
    android:layout_width="match_parent"
    android:layout_height="30dp"
    android:text="                         该应用集成了多种小型软件。 "
    />
    <TextView
        android:layout_width="match_parent"
        android:layout_height="30dp"
        android:text="                         现在主要包括的有:五子棋(娱乐时刻)、 "
        />
    <TextView
        android:layout_width="match_parent"
        android:layout_height="30dp"
        android:text="                         计账本(清晰的一天)、语音词典(不一 "
        />
    <TextView
        android:layout_width="match_parent"
        android:layout_height="30dp"
        android:text="                          样的表达)、网络视频播放(你眼中的世界) "
        />
    <TextView
        android:layout_width="match_parent"
        android:layout_height="30dp"
        android:text="                          音乐播放器(听世界的美好)、教务系统 "
        />
    <TextView
        android:layout_width="match_parent"
        android:layout_height="30dp"
        android:text="                          (交互)、历史上的今天、天气(今天的 "
        />
    <TextView
        android:layout_width="match_parent"
        android:layout_height="30dp"
        android:text="                         心情)、新闻(掌上资讯) "
        />



</LinearLayout>

RadioButton和字体的变换xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true" android:drawable="@mipmap/ib_me_focus"/>
    <item android:state_checked="false" android:drawable="@mipmap/ib_me_normal"/>
    <item android:drawable="@mipmap/ib_me_normal"/>

</selector>


<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true" android:drawable="@mipmap/ib_parnter_focus"/>
    <item android:state_checked="false" android:drawable="@mipmap/ib_parnter_normal"/>
    <item android:drawable="@mipmap/ib_parnter_normal"/>

</selector>


<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true" android:drawable="@mipmap/ib_star_focus"/>
    <item android:state_checked="false" android:drawable="@mipmap/ib_star_normal"/>
    <item android:drawable="@mipmap/ib_star_normal"/>

</selector>


<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true" android:color="@color/pink"/>
    <item android:state_checked="false" android:color="@color/grey"/>
    <item  android:color="@color/grey"/>

</selector>

还设置了上面的状态栏,还有v-19和v-21之上的情况,下面三个分别是

    <!--全屏显示无透明状态栏-->
    <style name="TranslucentTheme" parent="AppTheme">
        <item name="android:windowFullscreen">true</item>
    </style>

    <!--全屏显示,有透明的状态栏-->
    <style name="statusBar" parent="AppTheme"></style>
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!-- 从19版本开始多属性需要设置-->
    <!-- 全屏显示,无状态栏的-->
    <style name="TranslucentTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="android:windowTranslucentStatus">true</item>
        <item name="android:windowTranslucentNavigation">true</item>
        <item name="android:windowFullscreen">true</item>
    </style>

    <!--全屏显示,有透明的状态栏-->
    <style name="statusBar" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="android:windowTranslucentNavigation">true</item>
        <item name="android:windowTranslucentStatus">true</item>
    </style>

</resources>
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!-- 从21版本开始多属性需要设置-->
    <!-- 全屏显示,无状态栏的-->
    <style name="TranslucentTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="android:windowTranslucentStatus">false</item>
        <item name="android:windowTranslucentNavigation">true</item>
        <!-- 否则导航栏就会呈现系统默认的灰色-->
        <item name="android:statusBarColor">@android:color/transparent</item>
        <item name="android:windowFullscreen">true</item>
    </style>

    <!--全屏显示,有透明的状态栏-->
    <style name="statusBar" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="android:windowTranslucentNavigation">true</item>
        <item name="android:windowTranslucentStatus">false</item>
        <item name="android:statusBarColor">@android:color/transparent</item>
    </style>

</resources>

今天学到的新知识还有对图片的形状进行变换,比如圆形

注意的是要导入依靠:implementation 'de.hdodenhof:circleimageview:3.1.0'

 而且图片路径写法要用src

例如:android:src="@mipmap/touxiang"

今天的开发到此结束

 

 

posted on 2020-07-16 20:21  沫戏回首  阅读(197)  评论(0编辑  收藏  举报

导航