CardView 和 Fragment

介绍

CardView 是用于实现卡片式布局效果的重要控件,实际上也是一个 frameLayout, 只是额外提供了圆角和 阴影,看上去有立体效果 常用 API
方法说明
cardBackgroundColor设置背景颜色
cardCornerRadius 设置圆角边大小
cardElevation阴影大小- 设置为0代表没有阴影
cardMaxElevation 最大的阴影大小
cardPreventCornerOverlap v20 和之前的版本中添加内边距,这个属性是为了防止卡片内容 和边角的重叠
cardUseCompatPadding 设置内边距,v21+的版本和之前的版本仍旧具有一样的计算方式
contentPadding 内边距
contentPaddingBottom 底部边距
contentPaddingLeft左侧边距
contentPaddingRight右侧边距
contentPaddingTop顶部边距

简单的使用



Fragment

Fragment的简介

1.Fragment 译为 碎片 ,是 Android 3.0 API 11 )提出的,最开始是为了适配大屏的平板。 2.Fragment 看起来和 Activity 一样,是一个用户界面。可以结合多个 Fragments 到一个 activity 中来构 建一个有多方面功能的 UI ,还可以重用同一个 Fragment 在多个 activities 中。 Fragment 可以当成是 activity 的一个组件,每个 Fragment 有单独的生命周期,可以在 activity 运行时进行添加和移除 Fragment。因此,相比较于 activity Fragment 更加轻量级,更加灵活。 3.一个 Fragment 总是被植入在一个 activity 中 ,并且其生命周期受其父 activity 直接影响,比如 activity 处于暂停,则其中的 Fragment 都暂停; activity 销毁,则所有 Fragment 都销毁。但是,当 一个 activity 运行时,你可以独立的操作每一个 Fragment ,比如添加和删除他们。进行类似的操作 时,可以将 Fragment 添加入被 activity 管理的后退栈中,这样用户可以通过点击返回按钮来返回之 前打开的 Fragment 4.Fragment 可以作为 activity 的一部分添加到布局文件中,通过声明元素作为 ViewGroup 的一部分。 也可以将 Fragment 作为一个没有自己 UI 的不可见的 activity 的工人。 总结一下: 1. Fragment 是依赖于 Activity 的,不能独立存在。 2. 一个 Activity 里可以有多个 Fragment 3. 一个 Fragment 可以被多个 Activity 重用。 4. Fragment 有自己的生命周期,并能接收输入事件。 5. 可以在 Activity 运行时动态地添加或删除 Fragment Fragment 生命周期

 

Activity 加载 Fragment 的时候,依次调用: onAttach() -> onCreate() -> onCreateView() -> onActivityCreated() -> onStart() ->onResume() 2. 当做出一个悬浮的对话框风格的 Activity ,或者其他,就是让 Fragment 所在的 Activity 可见 , 但不获 得焦点: onPause() 3. 当对话框关闭, Activity 又获得了焦点: onResume() 4. 当替换 Fragment ,并调用 addToBackStack() 将它添加到 Back 栈中: onPause() -> onStop() -> onDestoryView() 。注意,此时的 Fragment 还没有被销毁哦。 5. 当按下键盘的回退键, Fragment 会再次显示出来: onCreateView() -> onActivityCreated() -> onStart() -> onResume() 6. 如果替换后,在事务 commit 之前没有调用 addToBackStack() 方法将 Fragment 添加到 back 栈中, 或者退出了 Activity 的话,那么 Fragment 将会被完全结束, Fragment 会进入销毁状态: onPause() -> onStop() -> onDestoryView() -> onDestory() -> onDetach()

使用碎片完成的一个页面

 碎片的静态加载

public class FooterFragment extends Fragment {private Button button,button2,button3,button4,button5;// TODO: Rename parameter arguments, choose names that match// the fragment initialization parameters, e.g. ARG_ITEM_NUMBERprivate static final String ARG_PARAM1 = "param1";private static final String ARG_PARAM2 = "param2";// TODO: Rename and change types of parametersprivate String mParam1;private String mParam2;public FooterFragment() {// Required empty public constructor}/*** Use this factory method to create a new instance of* this fragment using the provided parameters.** @param param1 Parameter 1.* @param param2 Parameter 2.* @return A new instance of fragment FooterFragment.*/// TODO: Rename and change types and number of parameterspublic static FooterFragment newInstance(String param1, String param2) {FooterFragment fragment = new FooterFragment();Bundle args = new Bundle();args.putString(ARG_PARAM1, param1);args.putString(ARG_PARAM2, param2);fragment.setArguments(args);return fragment;}@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);if (getArguments() != null) {mParam1 = getArguments().getString(ARG_PARAM1);mParam2 = getArguments().getString(ARG_PARAM2);}}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {// Inflate the layout for this fragmentView view=inflater.inflate(R.layout.fragment_footer, container, false);button=view.findViewById(R.id.button);button2=view.findViewById(R.id.button2);button3=view.findViewById(R.id.button3);button4=view.findViewById(R.id.button4);button5=view.findViewById(R.id.button5);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Toast.makeText(getActivity(),"按钮1已被点击",Toast.LENGTH_SHORT).show();}});button2.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Toast.makeText(getActivity(),"按钮2已被点击",Toast.LENGTH_SHORT).show();}});button3.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Toast.makeText(getActivity(),"按钮3已被点击",Toast.LENGTH_SHORT).show();}});button4.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Toast.makeText(getActivity(),"按钮4已被点击",Toast.LENGTH_SHORT).show();}});button5.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Toast.makeText(getActivity(),"按钮5已被点击",Toast.LENGTH_SHORT).show();}});return view;}
}

Fragment所依赖的 Activity中的activity.xml文件中调用 



动态加载

需要先创建结构


创建menu包在包内创建xml文件



然后在Activity内进行切换

package com.hopu.socialapp;import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;
import android.view.MenuItem;import com.google.android.material.bottomnavigation.BottomNavigationView;
import com.google.android.material.navigation.NavigationBarView;
import com.hopu.socialapp.fragment.ConsultFragment;
import com.hopu.socialapp.fragment.FrontFragment;
import com.hopu.socialapp.fragment.InformationFragment;
import com.hopu.socialapp.fragment.MyFragment;public class MainActivity extends AppCompatActivity {private BottomNavigationView bottom_navigation;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);bottom_navigation = findViewById(R.id.bottom_navigation);ConsultFragment consultFragment = new ConsultFragment();FrontFragment fragment = new FrontFragment();InformationFragment informationFragment = new InformationFragment();MyFragment myFragment = new MyFragment();getSupportFragmentManager().beginTransaction().add(R.id.fl_th,fragment).commit();bottom_navigation.setOnItemSelectedListener(new NavigationBarView.OnItemSelectedListener() {@Overridepublic boolean onNavigationItemSelected(@NonNull MenuItem item) {if (item.getItemId() == R.id.page_1){getSupportFragmentManager().beginTransaction().replace(R.id.fl_th,fragment).commit();}else if (item.getItemId() == R.id.page_2){getSupportFragmentManager().beginTransaction().replace(R.id.fl_th,consultFragment).commit();} else if (item.getItemId() == R.id.page_3){getSupportFragmentManager().beginTransaction().replace(R.id.fl_th,informationFragment).commit();} else if (item.getItemId() == R.id.page_4){getSupportFragmentManager().beginTransaction().replace(R.id.fl_th,myFragment).commit();}return true;}});}
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部