android|Android Studio微信界面开发
目录
一、页面布局
二、代码实现
三、运行界面
一、页面布局 第一步:除去自带的activity_main.xml文件之外,还需另外创建两个xml文件,分别是top.xml和bottom.xml.
【android|Android Studio微信界面开发】
文章图片
top.xml(顶部布局)
bottom.xml(底部布局)
四个linearlayout(线性布局)中均包含一个textview和一个imageview。
activity_main.xml(主界面布局)
导入顶部布局和底部布局,中间界面使用Framlayout(帧布局:所有放在布局里的控件,都按照层次堆叠在屏幕的左上角,后加进来的控件覆盖前面的控件。)
第二步:创建切换时四个界面的xml文件。如图,代码只展示config界面,其他三个与此类似。
文章图片
二、代码实现 主要实现的功能有:
1.监听到点击时切换fragment内容
2.监听到点击时改变底部被点击的按钮的颜色
第一步:需要生成四个fragment文件:在as中选择创建fragment文件,生成后更改oncreateview函数中的页面id即可将页面内容放进类中。
如图:
文章图片
文章图片
第二步:java代码实现功能。
import androidx.appcompat.app.AppCompatActivity;
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.view.Window;
import android.widget.LinearLayout;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {private Fragment WeChatFragment = new WeChatFragment();
private Fragment frirndFragment = new frirndFragment();
private Fragment configFragment = new configFragment();
private Fragment contastFragment = new contastFragment();
private FragmentManager fragmentManager;
private LinearLayout linearlayout_1, linearlayout_2, linearlayout_3, linearlayout_4;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
linearlayout_1 = findViewById(R.id.linearlayout_1);
linearlayout_2 = findViewById(R.id.linearlayout_2);
linearlayout_3 = findViewById(R.id.linearlayout_3);
linearlayout_4 = findViewById(R.id.linearlayout_4);
linearlayout_1.setOnClickListener(this);
linearlayout_2.setOnClickListener(this);
linearlayout_3.setOnClickListener(this);
linearlayout_4.setOnClickListener(this);
initfragment();
}private void initfragment() {
fragmentManager = getFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.add(R.id.content, WeChatFragment);
transaction.add(R.id.content, frirndFragment);
transaction.add(R.id.content, contastFragment);
transaction.add(R.id.content, configFragment);
transaction.commit();
}private void hidefragment(FragmentTransaction transaction) {transaction.hide(WeChatFragment);
transaction.hide(frirndFragment);
transaction.hide(contastFragment);
transaction.hide(configFragment);
}@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.linearlayout_1:
showfragment(0);
break;
case R.id.linearlayout_2:
showfragment(1);
break;
case R.id.linearlayout_3:
showfragment(2);
break;
case R.id.linearlayout_4:
showfragment(3);
break;
default:
break;
}
}private void showfragment(int i) {
FragmentTransaction transaction = fragmentManager.beginTransaction();
hidefragment(transaction);
switch (i) {
case 0:
transaction.show(WeChatFragment);
linearlayout_1.setBackgroundColor(Color.parseColor("#F5F5DC"));
linearlayout_2.setBackgroundColor(Color.parseColor("#FF03DAC5"));
linearlayout_3.setBackgroundColor(Color.parseColor("#FF03DAC5"));
linearlayout_4.setBackgroundColor(Color.parseColor("#FF03DAC5"));
break;
case 1:
transaction.show(frirndFragment);
linearlayout_2.setBackgroundColor(Color.parseColor("#F5F5DC"));
linearlayout_1.setBackgroundColor(Color.parseColor("#FF03DAC5"));
linearlayout_3.setBackgroundColor(Color.parseColor("#FF03DAC5"));
linearlayout_4.setBackgroundColor(Color.parseColor("#FF03DAC5"));
break;
case 2:
transaction.show(contastFragment);
linearlayout_3.setBackgroundColor(Color.parseColor("#F5F5DC"));
linearlayout_1.setBackgroundColor(Color.parseColor("#FF03DAC5"));
linearlayout_2.setBackgroundColor(Color.parseColor("#FF03DAC5"));
linearlayout_4.setBackgroundColor(Color.parseColor("#FF03DAC5"));
break;
case 3:
transaction.show(configFragment);
linearlayout_4.setBackgroundColor(Color.parseColor("#F5F5DC"));
linearlayout_1.setBackgroundColor(Color.parseColor("#FF03DAC5"));
linearlayout_3.setBackgroundColor(Color.parseColor("#FF03DAC5"));
linearlayout_2.setBackgroundColor(Color.parseColor("#FF03DAC5"));
break;
default:
break;
}
transaction.commit();
}
}
三、运行界面
文章图片
文章图片
文章图片
文章图片
代码库:https://github.com/barley12345/mywork
推荐阅读
- android第三方框架(五)ButterKnife
- Android中的AES加密-下
- 带有Hilt的Android上的依赖注入
- android|android studio中ndk的使用
- Android事件传递源码分析
- RxJava|RxJava 在Android项目中的使用(一)
- Android7.0|Android7.0 第三方应用无法访问私有库
- 深入理解|深入理解 Android 9.0 Crash 机制(二)
- android防止连续点击的简单实现(kotlin)
- Android|Android install 多个设备时指定设备