中国领先的工业平台

返回贤集网 返回微头条
贤集网技术微头条APP获取

开发日记三:使用 ViewHolder 与 XML 编写 UI

 山东大明消毒科技有限公司

下载贤集网APP入驻自媒体

大前端 Android 开发日记三:使用 ViewHolder 与 XML 编写 UI

在之前的两天里,我花了大量的时间在熟悉系统的架构上。因此,在这一天里,我主要花费的时间都是在编写 UI 上,以及对应的一些事件处理。

ViewHolder 的事件

按官网的说明:

一个 ViewHolder 描述一个项目视图和关于它在 RecyclerView 中的位置的元数据。

对于我使用例子是,我是在我的列表中的条目中使用 ViewHolder,因此每个条目都是单一的 view。这是一个示例的 ViewHolder,我在它的构建类里添加了一个 onClick 事件:

public class RelatedViewHolder extends RecyclerView.ViewHolder {    public RelatedNewsViewHolder(View view) {        super(view);        this.view = view;

       ButterKnife.bind(this, view);


       onClick(view);

   }

}

而在这个 Click 事件里,启动了一个新的 Activity:

public void onClick(View itemView) {

   itemView.setOnClickListener(view -> {

       Intent intent = new Intent();

       Context context = itemView.getContext();


       intent.setComponent(new ComponentName(context, DetailActivity.class));

       context.startActivity(intent);

   });

}

在这里面里,我们会启动一个新的 Activity。

获取 Android Device UUID

在实现的过程中,还需要一个获取设备的 UUID。DeviceID 有一个问题时,用户可能不会同意获取,于是还需要一个新的 UUID。为了简化这个逻辑,直接使用 Google 推荐的 UUID,而不是再去用 DeviceID。

public class DeviceUtil {    private static String uniqueID = null;    private static final String PREF_UNIQUE_ID = "PREF_UNIQUE_ID";    public synchronized static String getDeviceUUID(Context context) {        if (uniqueID == null) {

           SharedPreferences sharedPrefs = context.getSharedPreferences(

                   PREF_UNIQUE_ID, Context.MODE_PRIVATE);

           uniqueID = sharedPrefs.getString(PREF_UNIQUE_ID, null);            if (uniqueID == null) {

               uniqueID = UUID.randomUUID().toString();

               SharedPreferences.Editor editor = sharedPrefs.edit();

               editor.putString(PREF_UNIQUE_ID, uniqueID);

               editor.apply();

           }

       }        return uniqueID;

   }

}

在这个逻辑里,会判断机器上是否存储有之前的 UUID。如果没有的话,就生成一个新的;反之,则从 SharedPreferences 中获取一份。

实现 Android 后退按钮

由于打开的是新的页面,因此需要自己做一个 Toolbar,相应的配置代码如下所示:



   

接着,定制一个新的返回按钮标题:

然后,导入这个 xml:

同时在我们的 Activity 中添加对应的事件处理:

@Overridepublic boolean onOptionsItemSelected(MenuItem item) {    if (item.getItemId() == android.R.id.home) {

       onBackPressed();        return true;

   }    return super.onOptionsItemSelected(item);

}

矢量图形:Vector Path

还遇到一个很有遇到的问题是,可以在 Android 中使用类似于 SVG 的 Vector:


   

       

   


它也是类似的使用 Path,来描述 UI。

ScrollView

最后,花费了一些时间在编写一个 ScrollView 上,结合了之前上面的 Toolbar 等内容:



最新回复

还没有人回复哦,抢沙发吧~

发布回复

为您推荐

热门交流