2024年C C++最全【前台学习】AndroidStudio使用及安卓基础_android studio前台,2024年最新没想到一个Handler还有中高级几种问法

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

R.id.$ 可以获取组件id的数值 配合 findViewById使用
R.string.$ 可以获取字符常量


//TextView获取操作
TextView texView;
Button button1,button2;
textView = findViewById(R.id.textView1);
button1 = findViewById(R.id.button1);
//添加按钮监听器
button1.setOnClickListener( new View. OnClickListener() {
    @Override
    public void onClick(View view) {
    	textView. setText ("左边") ;
    }
});


本地化及多语言支持

strings.xml选择右上open Edit后选择地球图标直接选择语言就能多出以列去写新的语言翻译了

LivingData&&dataBinding

LivingData
创建对象继承viewModel然后里面的对象存放在MutableLiveData容器里面

public class MyViewModel extends ViewModel {
    private MutableLiveData<Integer> count;
    public MutableLiveData<Integer> getCount() {
        if (count == null) {
        count = new MutableLiveData<>();
        count.setValue(0) ;
        }
        return count;
    }
    public void add(int p){
    	count.setValue(count.getValue() + p);
    }
}


dataBinding
主要目的是让数据存储下来 以及双向绑定
首先再build.gradle(app)里面default下面添加

dataBinding {
     enabled true
}

然后layout.xml里面添加ait + 回车 convert to dataBinding即可更改xml视图格式多出标签,其中填写LivingData对象就能完成数据的双向绑定,就不需要用java代码去根据id获取xml里面的控件然后再改内容,直接通过xml和LivingData(类)进行数据交互;

<data>
	<variable
 name= "data" type="com.example.viewmodelrestore.MyViewModet" />
</data>


主函数内将livingData 和 dataBinding进行绑定

public class MainActivity extends AppCompatActivity {
    MyViewModel myViewModel; //LivingData对象
    ActivityMainBinding binding;  //dataBinding对象
    @Override
    protected void onCreate( Bundle savedInstanceState) {
        super.onCreate( savedInstanceState);
        //将layout绑定到dataBinding
        binding = DataBindingUtil.setContentView(this,R.layout.activity_main);
        //实体化livingData
        myViewModel = ViewModelProviders.of(this).get(MyViewModel.class);
        //绑定
        binding.setData(myViewModel);
        //设置对象
        binding.setLifecycleOwner(this);
    }
}

然后通过xml控制控件数据就行,如下,就绑定了数据以及点击事件

android:text=“@{String.valueOf(data.getCount())}”
android:onClick=“@{()->data.add()}”

viewModelStateSave实现杀死进程数据仍然存在

先在build.grade(app)下dependencies里面添加

implementation ‘androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-alpha01’

然后改造使用handle; key-value形式

public class MyViewModel extends ViewModel {
    private SavedStateHandle handle;

    public MyViewModel(SavedStateHandle handle){
        this.handle = handle;
    }
    public MutableLiveData<Integer> getCount() {
        if (!handle.contains("count")) {
            handle.set("count",0);
        }
        return handle.getLiveData("count");
    }
    public void add(){
        getCount().setValue(getCount().getValue() + 1);
    }
}

创建的时候记得带上参数savedState,new SavedStateVMFactory(this))创建即可
myViewModel = ViewModelProviders.of(this,new SavedStateVMFactory(this)).get(MyViewModel.class);

SharedPreferences本地持久化存储

[基于前面两个配置实现]反正就是拿一个类基础AppCompatActivity直接控制存key-value到本地xml里面
data-data-找到包下面就能看到本地文件,存储使用onPause(),不适用destory或者stop它们经常被跳过
修改实体类直接实现实体类存储;其他不变
image.png

package com.example.myapplication;
import android.app.Application;
import android.content.Context;
import android.content.SharedPreferences;

import androidx.annotation.NonNull;
import androidx.lifecycle.AndroidViewModel;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.SavedStateHandle;
import androidx.lifecycle.ViewModel;

public class MyViewModel extends AndroidViewModel {
    private SavedStateHandle handle;
    public MyViewModel(@NonNull Application application) {
        super(application);
        this.handle = handle;
        if (!handle.contains("count")) {
            load();
        }


![img](https://img-blog.csdnimg.cn/img_convert/b7570b904a0e602c9c2e795640d46cc3.png)
![img](https://img-blog.csdnimg.cn/img_convert/10ab46237e59312f7ec2583c1b517c9c.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618668825)**

8272)]

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618668825)**

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值