郑州app开发android使用fragment模拟微信界面。
思路:布局一共是5个页面,其中四个页面几乎相同,只有activity_main.xml不一样需要特殊处理。下面是activity_main.xml。
{?xml version="1.0" encoding="utf-8"?}
{androidx.constraintlayout.widget.ConstraintLayout 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"}
{LinearLayout
android:id="@+id/ll_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="@drawable/menu_bg"
android:gravity="center_vertical"
android:orientation="horizontal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="1.0"}
{ImageButton
android:id="@+id/ib_weixin"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@null"
android:src="@drawable/weixin_normal"
/}
{ImageButton
android:id="@+id/ib_contact"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@null"
android:src="@drawable/contact_list_normal"
/}
{ImageButton
android:id="@+id/ib_discover"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@null"
android:src="@drawable/find_normal"
/}
{ImageButton
android:id="@+id/ib_me"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@null"
android:src="@drawable/profile_normal"
/}
{/LinearLayout}
{RelativeLayout
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@id/ll_button"
}
{/RelativeLayout}
{/androidx.constraintlayout.widget.ConstraintLayout}
因为剩余四个页面几乎一样,在这里就展示其中一个fragment_contact.xml
{?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:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"}
{TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="联系人"
android:textSize="25sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /}
{/RelativeLayout}
下面是java代码,因为四个页面都一样,只展示一个FindFragment.java
package cn.xhhkj.videoview;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
public class FindFragment extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_find, null);
return view;
}
}
MainActivity.java
package cn.xhhkj.videoview;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import android.app.FragmentTransaction;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.ImageButton;
import android.widget.MediaController;
import android.widget.VideoView;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private static final String TAG = "结果是";
private ImageButton ib_weixin;
private ImageButton ib_contact;
private ImageButton ib_find;
private ImageButton ib_me;
private ContactFragment contactFragment;
private WeixinFragment weixinFragment;
private FindFragment findFragment;
private MeFragment meFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}
public void init(){
ib_weixin = findViewById(R.id.ib_weixin);
ib_contact = findViewById(R.id.ib_contact);
ib_find = findViewById(R.id.ib_discover);
ib_me = findViewById(R.id.ib_me);
ib_contact.setOnClickListener(this);
ib_find.setOnClickListener(this);
ib_me.setOnClickListener(this);
ib_weixin.setOnClickListener(this);
//用键盘模拟人按下的场景
ib_weixin.performClick();
}
@Override
public void onClick(View v){
clearIcon();
FragmentManager manager = getSupportFragmentManager();
androidx.fragment.app.FragmentTransaction transaction = manager.beginTransaction();
switch (v.getId()){
case R.id.ib_contact:
if(contactFragment==null){
contactFragment = new ContactFragment();
}
transaction.replace(R.id.fragment_container, contactFragment);
ib_contact.setImageResource(R.drawable.contact_list_pressed);
break;
case R.id.ib_weixin:
if(weixinFragment==null){
weixinFragment = new WeixinFragment();
}
transaction.replace(R.id.fragment_container, weixinFragment);
ib_weixin.setImageResource(R.drawable.weixin_pressed);
break;
case R.id.ib_discover:
if(findFragment == null){
findFragment = new FindFragment();
}
transaction.replace(R.id.fragment_container, findFragment);
ib_find.setImageResource(R.drawable.find_pressed);
break;
case R.id.ib_me:
if(meFragment==null){
meFragment = new MeFragment();
}
transaction.replace(R.id.fragment_container, meFragment);
ib_me.setImageResource(R.drawable.profile_pressed);
break;
}
transaction.commit();
}
private void clearIcon(){
ib_contact.setImageResource(R.drawable.contact_list_normal);
ib_find.setImageResource(R.drawable.find_normal);
ib_me.setImageResource(R.drawable.profile_normal);
ib_weixin.setImageResource(R.drawable.weixin_normal);
}
}
总结,用键盘模拟人按下的场景ib_weixin.performClick();这个performClick()方法,是用键盘模拟人按下的效果。