当前位置:   article > 正文

AndroidStudio实现类微信主界面设计_as制作微信页面

as制作微信页面

目录

一.项目概要

1.设计目标

二.界面设计

1.主页顶部

2.主页底部

3.Fragmet

三.Activity

1.新建activity类

四.核心代码

五.代码仓库


 

一.项目概要

1.设计目标

        经过一个月对Anroid Studio开发技术的学习,虽然内容不多,但对项目开发,APP设计已经有了初步的概念,这次独立完成的类微信主页面是模仿微信的页面,依靠AS平台,使用Fragment,Activity等技术开发。最终设计开发出一个,可实机运行的,主页有四个页面,每个页面展示不同的信息,并且以后可以扩展添加对应的组件,每个页面可以自由切换的APP页面设计。

二.界面设计

1.主页顶部

        首先我们的顶部设计为一个不随页面的切换而改变的标签,像下图展示一样,显示为我们APP的名字,在我们的APP主页顶部。

0425d77ef52a4bbf827585a277f1236a.png

         首先,在layout文件夹中创建一个top.xml文件,在控件框里拖入一个textView控件

8a83007f05d149eeaad29b0adfecde5f.png

        调节textView大小,位置等基础设置的代码如下:

  1. <TextView
  2. android:id="@+id/textView5"
  3. android:layout_width="wrap_content"
  4. android:layout_height="55dp"
  5. android:layout_weight="1"
  6. android:gravity="center"
  7. android:text="WeChat"
  8. android:textColor="@color/white"
  9. android:textSize="30sp" />

2.主页底部

        在主页底部是四个模块,分别由一张图片和文字组成,下图所示。同上一步操作,先在layout文件夹中创建一个bottom.xml文件。拖入四个linearlayout,分别在四个linearlayout中加入一个imageView和textView控件。

6dbf86881c59429d957fb635d405f01c.png

 

02d9d8fe74f94e0f89c8f66cc6381656.png

        在这里提醒一下,关于imageView控件的图片,图标大家可以在iconfont这个网站进行下载,

将下载好的图标资源拖入drawable文件夹中,最后将图标与对应的imageView控件绑定。

7f76e30e932540479b61db240e5a15da.png

         四组控件的属性具体代码如下:

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:app="http://schemas.android.com/apk/res-auto"
  3. xmlns:tools="http://schemas.android.com/tools"
  4. android:layout_width="match_parent"
  5. android:layout_height="wrap_content"
  6. android:id="@+id/LinearLayout"
  7. tools:context=".MainActivity"
  8. >
  9. <LinearLayout
  10. android:id="@+id/linearLayout1"
  11. android:layout_width="0dp"
  12. android:layout_height="wrap_content"
  13. android:layout_weight="1"
  14. android:gravity="center"
  15. android:orientation="vertical">
  16. <ImageView
  17. android:id="@+id/imageView2"
  18. android:layout_width="30dp"
  19. android:layout_height="30dp"
  20. android:src="@drawable/wechat"
  21. />
  22. <TextView
  23. android:id="@+id/textView2"
  24. android:layout_width="88dp"
  25. android:layout_height="wrap_content"
  26. android:gravity="center"
  27. android:text="微信"
  28. android:textSize="24sp" />
  29. </LinearLayout>
  30. <LinearLayout
  31. android:id="@+id/linearLayout2"
  32. android:layout_width="0dp"
  33. android:layout_height="wrap_content"
  34. android:layout_weight="1"
  35. android:gravity="center"
  36. android:orientation="vertical">
  37. <ImageView
  38. android:id="@+id/imageView3"
  39. android:layout_width="30dp"
  40. android:layout_height="30dp"
  41. android:src="@drawable/friend" />
  42. <TextView
  43. android:id="@+id/textView3"
  44. android:layout_width="match_parent"
  45. android:layout_height="wrap_content"
  46. android:gravity="center"
  47. android:text="通讯录"
  48. android:textSize="24sp" />
  49. </LinearLayout>
  50. <LinearLayout
  51. android:id="@+id/linearLayout3"
  52. android:layout_width="0dp"
  53. android:layout_height="wrap_content"
  54. android:layout_weight="1"
  55. android:gravity="center"
  56. android:orientation="vertical">
  57. <ImageView
  58. android:id="@+id/imageView4"
  59. android:layout_width="30dp"
  60. android:layout_height="30dp"
  61. android:src="@drawable/find" />
  62. <TextView
  63. android:id="@+id/textView4"
  64. android:layout_width="wrap_content"
  65. android:layout_height="wrap_content"
  66. android:gravity="center"
  67. android:text="发现"
  68. android:textSize="24sp" />
  69. </LinearLayout>
  70. <LinearLayout
  71. android:id="@+id/linearLayout4"
  72. android:layout_width="0dp"
  73. android:layout_height="wrap_content"
  74. android:layout_weight="1"
  75. android:gravity="center"
  76. android:orientation="vertical">
  77. <ImageView
  78. android:id="@+id/imageView"
  79. android:layout_width="30dp"
  80. android:layout_height="30dp"
  81. android:src="@drawable/mine" />
  82. <TextView
  83. android:id="@+id/textView"
  84. android:layout_width="match_parent"
  85. android:layout_height="wrap_content"
  86. android:gravity="center"
  87. android:text="我"
  88. android:textSize="24sp" />
  89. </LinearLayout>
  90. </LinearLayout>

3.Fragmet

        主页的顶部和底部都做好了,接下来就是中间显示信息的框体,这里我们使用Fragment来设计像下面一样的中间框体,所以这里我们需要设计4个同样的Fragment,这里我拿第一个Fragment来举例说明。

dc861c1bf9bf4d04b04b3ae7754f45c6.png

         同样,在layout中创建一个fragment文件,这里我们只添加一个textView控件,对各个页面进行区分。按照这个步骤,继续创建三个fragment,我们的fragment部分就大功告成了。具体代码如下:

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. tools:context=".tab1">
  6. <!-- TODO: Update blank fragment layout -->
  7. <TextView
  8. android:layout_width="match_parent"
  9. android:layout_height="match_parent"
  10. android:gravity="center"
  11. android:text="这是微信聊天界面"
  12. android:textSize="35sp" />
  13. </LinearLayout>

三.Activity

        通过使用Activity来设计出页面台页面跳转的功能,这里我们设计联系人页面,通过点击其中的联系人,然后跳转到该联系人的具体信息页面。

         Android studio活动在其生命周期的四种状态分别是:运行状态、暂停状态、停止状态、销毁状态。Activity与生命周期的有关的几个方法: 

onCreate方法:创建页面。把页面上的各个元素加载到内存中。
onStart方法:开始页面。把页面显示在屏幕上。
onResume方法:恢复页面。让页面在屏幕上活动起来,例如开机动画,开始任务。
onPause方法:暂停页面。让页面在屏幕上的动作停下来。
onStop方法:停止页面。把页面从内存上撤下来。
onDestroy方法。销毁页面。把页面琮内存中清除掉。
onRestart方法。重新加载内存中的页面数据。

1.新建activity类

887d2b50c8c24f2ebd3496f9e05a2f70.png

       

  1. package com.example.wechat20;
  2. import android.os.Bundle;
  3. import android.view.View;
  4. import android.widget.Button;
  5. import android.widget.ImageView;
  6. import android.widget.TextView;
  7. import androidx.appcompat.app.AppCompatActivity;
  8. public class MainActivity2 extends AppCompatActivity {
  9. private TextView friend_name;
  10. private TextView friend_info;
  11. private ImageView friend_pic;
  12. private Button btn_back;
  13. @Override
  14. protected void onCreate(Bundle savedInstanceState)
  15. {
  16. super.onCreate(savedInstanceState);
  17. setContentView(R.layout.activity_main2);
  18. init();
  19. setListeners();
  20. }
  21. public void init()
  22. {
  23. friend_name = (TextView) findViewById(R.id.friend_name);
  24. friend_info = (TextView) findViewById(R.id.friend_info);
  25. friend_pic = (ImageView) findViewById(R.id.friend_pic);
  26. btn_back = (Button) findViewById(R.id.btn_back);
  27. }
  28. private void setListeners()
  29. {
  30. btn_back.setOnClickListener(backMain);
  31. }
  32. private Button.OnClickListener backMain = new Button.OnClickListener()
  33. {
  34. @Override
  35. public void onClick(View arg0)
  36. {
  37. MainActivity2.this.finish();
  38. }
  39. };
  40. }

 

并新建一个相应的xml文件,对联系人信息的具体页面进行设计9bdef508820e4df8a9695089a1b8f8f5.png

 

 

四.核心代码

  1. package com.example.wechat20;
  2. import static com.example.wechat20.R.id.linearLayout5;
  3. import androidx.appcompat.app.AppCompatActivity;
  4. import android.app.Activity;
  5. import android.app.Fragment;
  6. import android.app.FragmentManager;
  7. import android.app.FragmentTransaction;
  8. import android.graphics.Color;
  9. import android.os.Bundle;
  10. import android.view.View;
  11. import android.widget.LinearLayout;
  12. public class MainActivity extends AppCompatActivity implements View.OnClickListener{
  13. private Fragment fragment4=new tab4();
  14. private Fragment fragment1=new tab1();
  15. private Fragment fragment2=new tab2();
  16. private Fragment fragment3=new tab3();
  17. private FragmentManager fragmentManager;
  18. private LinearLayout linearLayout1,linearLayout2,linearLayout3,linearLayout4;
  19. @Override
  20. protected void onCreate(Bundle savedInstanceState) {
  21. super.onCreate(savedInstanceState);
  22. setContentView(R.layout.activity_main);
  23. linearLayout1=findViewById(R.id.linearLayout1);
  24. linearLayout2=findViewById(R.id.linearLayout2);
  25. linearLayout3=findViewById(R.id.linearLayout3);
  26. linearLayout4=findViewById(R.id.linearLayout4);
  27. linearLayout1.setOnClickListener(this);
  28. linearLayout2.setOnClickListener(this);
  29. linearLayout3.setOnClickListener(this);
  30. linearLayout4.setOnClickListener(this);
  31. initFragment();
  32. }
  33. private void initFragment(){
  34. fragmentManager=getFragmentManager();
  35. FragmentTransaction transaction=fragmentManager.beginTransaction();
  36. transaction.add(R.id.id_content,fragment1);
  37. transaction.add(R.id.id_content,fragment2);
  38. transaction.add(R.id.id_content,fragment3);
  39. transaction.add(R.id.id_content,fragment4);
  40. hideFragment(transaction);
  41. transaction.commit();
  42. }
  43. private void hideFragment(FragmentTransaction transaction)
  44. {
  45. transaction.hide(fragment1);//转换,背景隐藏
  46. transaction.hide(fragment2);
  47. transaction.hide(fragment3);
  48. transaction.hide(fragment4);
  49. }
  50. private void background(View v) {
  51. switch (v.getId()) {
  52. case R.id.linearLayout1:
  53. linearLayout1.setBackgroundColor(Color.parseColor("#426F42"));
  54. break;
  55. case R.id.linearLayout2:
  56. linearLayout2.setBackgroundColor(Color.parseColor("#426F42"));
  57. break;
  58. case R.id.linearLayout3:
  59. linearLayout3.setBackgroundColor(Color.parseColor("#426F42"));
  60. break;
  61. case R.id.linearLayout4:
  62. linearLayout4.setBackgroundColor(Color.parseColor("#426F42"));
  63. break;
  64. default:
  65. break;
  66. }
  67. }
  68. private void backgroundreturn(View v) //背景颜色改变
  69. {
  70. switch (v.getId()) {
  71. case R.id.linearLayout1:
  72. linearLayout1.setBackgroundColor(Color.parseColor("white"));
  73. break;
  74. case R.id.linearLayout2:
  75. linearLayout2.setBackgroundColor(Color.parseColor("white"));
  76. break;
  77. case R.id.linearLayout3:
  78. linearLayout3.setBackgroundColor(Color.parseColor("white"));
  79. break;
  80. case R.id.linearLayout4:
  81. linearLayout4.setBackgroundColor(Color.parseColor("white"));
  82. break;
  83. default:
  84. break;
  85. }
  86. }
  87. private void showfragmnet(int i) //呼出对应的Fragment
  88. {
  89. //展示所对应的fragment
  90. FragmentTransaction transaction=fragmentManager.beginTransaction();
  91. hideFragment(transaction);
  92. switch (i){
  93. case 0:
  94. transaction.show(fragment1);
  95. background(linearLayout1);
  96. backgroundreturn(linearLayout3);
  97. backgroundreturn(linearLayout2);
  98. backgroundreturn(linearLayout4);
  99. break;
  100. case 1:
  101. transaction.show(fragment2);
  102. background(linearLayout2);
  103. backgroundreturn(linearLayout4);
  104. backgroundreturn(linearLayout1);
  105. backgroundreturn(linearLayout3);
  106. break;
  107. case 2:
  108. transaction.show(fragment3);
  109. background(linearLayout3);
  110. backgroundreturn(linearLayout4);
  111. backgroundreturn(linearLayout2);
  112. backgroundreturn(linearLayout1);
  113. break;
  114. case 3:
  115. transaction.show(fragment4);
  116. background(linearLayout4);
  117. backgroundreturn(linearLayout1);
  118. backgroundreturn(linearLayout2);
  119. backgroundreturn(linearLayout3);
  120. break;
  121. default:
  122. break;
  123. }
  124. transaction.commit();
  125. }
  126. @Override
  127. public void onClick(View v) //点击linerlayout实现页面转换
  128. {
  129. switch (v.getId()){
  130. case R.id.linearLayout1:
  131. showfragmnet(0);
  132. break;
  133. case R.id.linearLayout2:
  134. showfragmnet(1);
  135. break;
  136. case R.id.linearLayout3:
  137. showfragmnet(2);
  138. break;
  139. case R.id.linearLayout4:
  140. showfragmnet(3);
  141. break;
  142. default:
  143. break;
  144. }
  145. }
  146. }

五.代码仓库

WeChat2.0: 在Android studio中实现一个类微信页面的门户页面框架设计https://gitee.com/song-77/WeChat2.0.git

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/676356
推荐阅读
相关标签
  

闽ICP备14008679号