赞
踩
目录
经过一个月对Anroid Studio开发技术的学习,虽然内容不多,但对项目开发,APP设计已经有了初步的概念,这次独立完成的类微信主页面是模仿微信的页面,依靠AS平台,使用Fragment,Activity等技术开发。最终设计开发出一个,可实机运行的,主页有四个页面,每个页面展示不同的信息,并且以后可以扩展添加对应的组件,每个页面可以自由切换的APP页面设计。
首先我们的顶部设计为一个不随页面的切换而改变的标签,像下图展示一样,显示为我们APP的名字,在我们的APP主页顶部。
首先,在layout文件夹中创建一个top.xml文件,在控件框里拖入一个textView控件
调节textView大小,位置等基础设置的代码如下:
- <TextView
- android:id="@+id/textView5"
- android:layout_width="wrap_content"
- android:layout_height="55dp"
- android:layout_weight="1"
- android:gravity="center"
- android:text="WeChat"
- android:textColor="@color/white"
- android:textSize="30sp" />
在主页底部是四个模块,分别由一张图片和文字组成,下图所示。同上一步操作,先在layout文件夹中创建一个bottom.xml文件。拖入四个linearlayout,分别在四个linearlayout中加入一个imageView和textView控件。
在这里提醒一下,关于imageView控件的图片,图标大家可以在iconfont这个网站进行下载,
将下载好的图标资源拖入drawable文件夹中,最后将图标与对应的imageView控件绑定。
四组控件的属性具体代码如下:
- <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="wrap_content"
- android:id="@+id/LinearLayout"
- tools:context=".MainActivity"
- >
-
- <LinearLayout
- android:id="@+id/linearLayout1"
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:gravity="center"
- android:orientation="vertical">
-
- <ImageView
- android:id="@+id/imageView2"
- android:layout_width="30dp"
- android:layout_height="30dp"
- android:src="@drawable/wechat"
-
- />
-
- <TextView
- android:id="@+id/textView2"
- android:layout_width="88dp"
- android:layout_height="wrap_content"
- android:gravity="center"
- android:text="微信"
- android:textSize="24sp" />
-
- </LinearLayout>
-
- <LinearLayout
- android:id="@+id/linearLayout2"
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:gravity="center"
- android:orientation="vertical">
-
- <ImageView
- android:id="@+id/imageView3"
- android:layout_width="30dp"
- android:layout_height="30dp"
- android:src="@drawable/friend" />
-
- <TextView
- android:id="@+id/textView3"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:gravity="center"
- android:text="通讯录"
-
- android:textSize="24sp" />
-
- </LinearLayout>
-
- <LinearLayout
- android:id="@+id/linearLayout3"
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:gravity="center"
- android:orientation="vertical">
-
- <ImageView
- android:id="@+id/imageView4"
- android:layout_width="30dp"
- android:layout_height="30dp"
- android:src="@drawable/find" />
-
- <TextView
- android:id="@+id/textView4"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:gravity="center"
- android:text="发现"
-
- android:textSize="24sp" />
-
- </LinearLayout>
-
- <LinearLayout
- android:id="@+id/linearLayout4"
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:gravity="center"
- android:orientation="vertical">
-
- <ImageView
- android:id="@+id/imageView"
- android:layout_width="30dp"
- android:layout_height="30dp"
- android:src="@drawable/mine" />
-
- <TextView
- android:id="@+id/textView"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:gravity="center"
- android:text="我"
-
- android:textSize="24sp" />
-
- </LinearLayout>
- </LinearLayout>
主页的顶部和底部都做好了,接下来就是中间显示信息的框体,这里我们使用Fragment来设计像下面一样的中间框体,所以这里我们需要设计4个同样的Fragment,这里我拿第一个Fragment来举例说明。
同样,在layout中创建一个fragment文件,这里我们只添加一个textView控件,对各个页面进行区分。按照这个步骤,继续创建三个fragment,我们的fragment部分就大功告成了。具体代码如下:
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- tools:context=".tab1">
-
- <!-- TODO: Update blank fragment layout -->
- <TextView
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:gravity="center"
- android:text="这是微信聊天界面"
- android:textSize="35sp" />
-
- </LinearLayout>
通过使用Activity来设计出页面台页面跳转的功能,这里我们设计联系人页面,通过点击其中的联系人,然后跳转到该联系人的具体信息页面。
Android studio活动在其生命周期的四种状态分别是:运行状态、暂停状态、停止状态、销毁状态。Activity与生命周期的有关的几个方法:
onCreate方法:创建页面。把页面上的各个元素加载到内存中。
onStart方法:开始页面。把页面显示在屏幕上。
onResume方法:恢复页面。让页面在屏幕上活动起来,例如开机动画,开始任务。
onPause方法:暂停页面。让页面在屏幕上的动作停下来。
onStop方法:停止页面。把页面从内存上撤下来。
onDestroy方法。销毁页面。把页面琮内存中清除掉。
onRestart方法。重新加载内存中的页面数据。
- package com.example.wechat20;
-
- import android.os.Bundle;
- import android.view.View;
- import android.widget.Button;
- import android.widget.ImageView;
- import android.widget.TextView;
-
- import androidx.appcompat.app.AppCompatActivity;
- public class MainActivity2 extends AppCompatActivity {
- private TextView friend_name;
- private TextView friend_info;
- private ImageView friend_pic;
- private Button btn_back;
-
- @Override
- protected void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main2);
-
- init();
- setListeners();
-
- }
-
- public void init()
- {
- friend_name = (TextView) findViewById(R.id.friend_name);
- friend_info = (TextView) findViewById(R.id.friend_info);
- friend_pic = (ImageView) findViewById(R.id.friend_pic);
- btn_back = (Button) findViewById(R.id.btn_back);
- }
-
- private void setListeners()
- {
- btn_back.setOnClickListener(backMain);
- }
-
- private Button.OnClickListener backMain = new Button.OnClickListener()
- {
- @Override
- public void onClick(View arg0)
- {
- MainActivity2.this.finish();
- }
-
- };
- }
并新建一个相应的xml文件,对联系人信息的具体页面进行设计
- package com.example.wechat20;
-
- import static com.example.wechat20.R.id.linearLayout5;
-
- import androidx.appcompat.app.AppCompatActivity;
-
- import android.app.Activity;
- import android.app.Fragment;
- import android.app.FragmentManager;
- import android.app.FragmentTransaction;
- import android.graphics.Color;
- import android.os.Bundle;
- import android.view.View;
- import android.widget.LinearLayout;
-
- public class MainActivity extends AppCompatActivity implements View.OnClickListener{
-
-
- private Fragment fragment4=new tab4();
- private Fragment fragment1=new tab1();
- private Fragment fragment2=new tab2();
- private Fragment fragment3=new tab3();
-
- private FragmentManager fragmentManager;
- private LinearLayout linearLayout1,linearLayout2,linearLayout3,linearLayout4;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
-
- linearLayout1=findViewById(R.id.linearLayout1);
- linearLayout2=findViewById(R.id.linearLayout2);
- linearLayout3=findViewById(R.id.linearLayout3);
- linearLayout4=findViewById(R.id.linearLayout4);
-
- linearLayout1.setOnClickListener(this);
- linearLayout2.setOnClickListener(this);
- linearLayout3.setOnClickListener(this);
- linearLayout4.setOnClickListener(this);
-
- initFragment();
- }
-
- private void initFragment(){
- fragmentManager=getFragmentManager();
- FragmentTransaction transaction=fragmentManager.beginTransaction();
- transaction.add(R.id.id_content,fragment1);
- transaction.add(R.id.id_content,fragment2);
- transaction.add(R.id.id_content,fragment3);
- transaction.add(R.id.id_content,fragment4);
- hideFragment(transaction);
- transaction.commit();
- }
-
-
- private void hideFragment(FragmentTransaction transaction)
- {
- transaction.hide(fragment1);//转换,背景隐藏
- transaction.hide(fragment2);
- transaction.hide(fragment3);
- transaction.hide(fragment4);
- }
- private void background(View v) {
- switch (v.getId()) {
- case R.id.linearLayout1:
- linearLayout1.setBackgroundColor(Color.parseColor("#426F42"));
- break;
- case R.id.linearLayout2:
- linearLayout2.setBackgroundColor(Color.parseColor("#426F42"));
- break;
- case R.id.linearLayout3:
- linearLayout3.setBackgroundColor(Color.parseColor("#426F42"));
- break;
- case R.id.linearLayout4:
- linearLayout4.setBackgroundColor(Color.parseColor("#426F42"));
- break;
- default:
- break;
- }
- }
-
- private void backgroundreturn(View v) //背景颜色改变
- {
- switch (v.getId()) {
- case R.id.linearLayout1:
- linearLayout1.setBackgroundColor(Color.parseColor("white"));
- break;
- case R.id.linearLayout2:
- linearLayout2.setBackgroundColor(Color.parseColor("white"));
- break;
- case R.id.linearLayout3:
- linearLayout3.setBackgroundColor(Color.parseColor("white"));
- break;
- case R.id.linearLayout4:
- linearLayout4.setBackgroundColor(Color.parseColor("white"));
- break;
- default:
- break;
- }
- }
-
- private void showfragmnet(int i) //呼出对应的Fragment
- {
- //展示所对应的fragment
- FragmentTransaction transaction=fragmentManager.beginTransaction();
- hideFragment(transaction);
- switch (i){
- case 0:
- transaction.show(fragment1);
- background(linearLayout1);
- backgroundreturn(linearLayout3);
- backgroundreturn(linearLayout2);
- backgroundreturn(linearLayout4);
- break;
- case 1:
- transaction.show(fragment2);
- background(linearLayout2);
- backgroundreturn(linearLayout4);
- backgroundreturn(linearLayout1);
- backgroundreturn(linearLayout3);
- break;
- case 2:
- transaction.show(fragment3);
- background(linearLayout3);
- backgroundreturn(linearLayout4);
- backgroundreturn(linearLayout2);
- backgroundreturn(linearLayout1);
- break;
- case 3:
- transaction.show(fragment4);
- background(linearLayout4);
- backgroundreturn(linearLayout1);
- backgroundreturn(linearLayout2);
- backgroundreturn(linearLayout3);
- break;
- default:
- break;
- }
- transaction.commit();
- }
-
- @Override
- public void onClick(View v) //点击linerlayout实现页面转换
- {
- switch (v.getId()){
- case R.id.linearLayout1:
- showfragmnet(0);
- break;
- case R.id.linearLayout2:
- showfragmnet(1);
- break;
- case R.id.linearLayout3:
- showfragmnet(2);
- break;
- case R.id.linearLayout4:
- showfragmnet(3);
- break;
- default:
- break;
- }
- }
- }
WeChat2.0: 在Android studio中实现一个类微信页面的门户页面框架设计https://gitee.com/song-77/WeChat2.0.git
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。