目录
二、android studio的AndroidManifest.xml
前言
这个学期我学习了Android应用开发课程,并对android studio有了一定的了解。
一、 Android Studio简介
Android Studio是Google推出基于IntelliJ IDEA的Android应用开发集成开发环境(IDE),而且提供了更多提高Android应用的构建效率的功能;
- 基于Gradle的灵活构建系统
- Instant Run可以将变更推送到正在运行的应用中,无需重新构建Apk;
- 快速和功能丰富的模拟器;
- 丰富的测试工具、性能工具(CPU Profile和Memory Profile)和网络监控工具(Network Profiler);
- C++和NDK支持,以及LLDB可以调试原生代码;
- 使用Room将数据持久化数据库(SQLite)
- 使用apkanalyzer对预构建APK进行分析和调试
- 强大的布局编辑器
- 支持Koltin编码和Lua编码(通过NDK开发)
二、android studio的AndroidManifest.xml
AndroidManifest.xml文件是整个应用的主配置清单文件。主要的包括的是该应用的包名、组件、权限等等信息。
<activity
android:name=".LoginActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
android.intent.action.MAIN表示该页面是App的入口页面,
所以,运行这个项目后,会首先打开LoginActivity页面。
如果想其他页面作为主页面就将android:name=“”更改即可。
其他要用的页面将写成下面这种格式:
<activity
android:name=".PyquanActivity"
android:exported="false" />
<activity
android:name=".HomeActivity"
android:exported="false" />
<activity
android:name=".RegisterActivity"
android:exported="false" />
<activity
android:name=".PersonInfoActivity"
android:exported="false" />
三、近期学习成果(简单的相册)
功能:可以切换滑动相册,也可以用下面的按钮切换图片,点赞后点赞按钮会发生改变。
点赞前:
点赞后:
这个里面主要使用ViewPager2和Fragment布局,还包括评论按钮组RadioGroup、输入框、点赞、查看评论。
我对其中的一项功能进行简单介绍讲解:
1.ViewPager2简单介绍
ViewPager2是Android Jetpack库中的一个组件,是用于在应用程序中实现页面切换和滑动效果的容器。是基于RecyclerView实现的,自然继承了RecyclerView的众多优点,并且针对ViewPager存在的问题做了优化。
- 支持垂直方向的滑动且实现极其简单。
- 完全支持RecyclerView的相关配置功能。
- 支持多个PageTransformer。
- 支持DiffUtil,局部数据刷新和Item动画。
- 支持模拟用户滑动与禁止用户操作。
ViewPager2更多的是配合Fragment的使用,这需要借助FragmentStateAdapter。
2.ViewPager2使用方法
1.先新建一个Activity页面,然后在其布局文件中加入:
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/vp2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1" />
2.创建4个Fragment和布局
在这其中加入照片
3.创建一个适配器类,命名为MyFragmentPageAdapter,不创建布局文件
public class MyFragmentPageAdapter extends FragmentStateAdapter {
private List<Fragment> fg;
// 初始化列表
public MyFragmentPageAdapter(@NonNull FragmentManager fragmentManager, @NonNull Lifecycle lifecycle, List<Fragment> fragmentList){
super(fragmentManager, lifecycle);
this.fg=fragmentList;
}
// 实现FragmentStateAdapter重载方法
@NonNull
@Override
public Fragment createFragment(int position) {
return fg.get(position);
}
@Override
public int getItemCount() {
return fg == null ? 0 : fg.size();
}
}
4.主函数
public class Viewpager2Activity extends AppCompatActivity implements View.OnClickListener, RadioGroup.OnCheckedChangeListener {
private ViewPager2 mViewPager2;
private ArrayList<Fragment> mFragment;
private MyFragmentPageAdapter mMyFragmentPageAdapter;
private ImageView zan,ckpl;
private boolean zanflag=false;
private ArrayList<Integer> mRadioButton;
private RadioGroup mRadioGroup;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_viewpager2);
initView();
initData();
initAdapter();
}
private void initAdapter(){
//初始化碎片适配器,注意自定义mMyFragmentPageAdapter类,及其构造函数带了3个参数
mMyFragmentPageAdapter = new MyFragmentPageAdapter(getSupportFragmentManager(),getLifecycle(),mFragment);
mViewPager2.setAdapter(mMyFragmentPageAdapter);
}
private void initData(){
mFragment =new ArrayList<>();
mFragment.add(new Fragment1());
mFragment.add(new Fragment2());
mFragment.add(new Fragment3());
mFragment.add(new Fragment4());
mRadioButton = new ArrayList<>();
mRadioButton.add(R.id.RadioButton1);
mRadioButton.add(R.id.RadioButton2);
mRadioButton.add(R.id.RadioButton3);
mRadioButton.add(R.id.RadioButton4);
mRadioGroup.check(R.id.RadioButton1);
}
private void initView(){
zan=findViewById(R.id.zan);
ckpl=findViewById(R.id.ckpl);
ckpl.setOnClickListener(this);
zan.setOnClickListener(this);
mViewPager2=findViewById(R.id.vp2);
mViewPager2.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
//当页面被选中时
@Override
public void onPageSelected(int position) {
super.onPageSelected(position);
mRadioGroup.check(mRadioButton.get(position));
}
});
mRadioGroup = findViewById(R.id.RadioGroup);
mRadioGroup.setOnCheckedChangeListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.zan:
zanflag=!zanflag;//更改flag状态,初始为白色,点击一次,改变状态
zan.setSelected(zanflag);//设置结果
break;
case R.id.ckpl:
//跳转效果,弹出对话框,查看评论
AlertDialog.Builder builder=new AlertDialog.Builder(this);
builder.setTitle("评论");//设置对话框的标题
builder.setMessage("张三:美丽的风景");//设置对话框的内容
AlertDialog b=builder.create();
b.show();
break;
}
}
@Override
public void onCheckedChanged(RadioGroup radioGroup, int checkedId) {
mViewPager2.setCurrentItem(mRadioButton.indexOf(checkedId));
}
}
四、我常用的Android Studio 快捷键:
Ctrl+Alt+L 格式化代码
Ctrl+R 替换文本
Ctrl+F 查找文本
Ctrl+/ 或 Ctrl+Shift+/ 注释(// 或者/*...*/ )