android studio 不让build对png照片进行校验 和 databinding技术

来源:互联网 发布:b超数据算胎儿体重软件 编辑:程序博客网 时间:2024/05/17 04:44

在build 里配置

 compileSdkVersion 24
    buildToolsVersion "24.0.1" 

在这两句下边 :
aaptOptions.cruncherEnabled = false   //不进行png图片合法性校验
    aaptOptions.useNewCruncher = false



1.databinding的库在support里面

2.在gradle里配置:

android {
    ....
    dataBinding {
        enabled = true
    }
}

3.比如说在布局里使用

?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
   <data>
       <variable name="user" type="com.example.User"/>//这里是使用这个技术核心的地方,相当与我们的数据在這里绑定,我们可以实时只要更新这个bean 就可以更新数据
   </data>
   <LinearLayout
       android:orientation="vertical"
       android:layout_width="match_parent"
       android:layout_height="match_parent">
       <TextView android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="@{user.firstName}"/>
       <TextView android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="@{user.lastName}"/>
   </LinearLayout>
</layout>


bean:
public class User extends BaseObservable{
//实现这个类可以做到实时更新
   private final String firstName;
   private final String lastName;
   public User(String firstName, String lastName) {
       this.firstName = firstName;
       this.lastName = lastName;
   }
   @Bindable
   public String getFirstName() {
       return this.firstName;
   }
   public String getLastName() {
       return this.lastName;
   }
//set的时候实时更新
public void setFirstName(String firstName){
this.firstName=firstName;
notifyPropertyChanged(BR.firstName);
}
}




4,使用方法:
   MainActivityBinding binding = DataBindingUtil.setContentView(this, R.layout.main_activity);
   User user = new User("Test", "User");
   binding.setUser(user);//这就起到了绑定的效果


//其他的绑定方法

MainActivityBinding binding = MainActivityBinding.inflate(getLayoutInflater());




ListItemBinding binding = ListItemBinding.inflate(layoutInflater, viewGroup, false);


ListItemBinding binding = DataBindingUtil.inflate(layoutInflater, R.layout.list_item, viewGroup, false);


/比如ListItemBinding的个类的类名如果你不清楚的话去
app    build generated source apt 包名下面去找


响应事件的主持人模式


public class MyHandlers {
    public void onClickFriend(View view) { ... }
}




   <data>
       <variable name="handlers" type="com.example.Handlers"/>
       <variable name="user" type="com.example.User"/>
   </data>
   <LinearLayout
       android:orientation="vertical"
       android:layout_width="match_parent"
       android:layout_height="match_parent">
       <TextView android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="@{user.firstName}"
           android:onClick="@{handlers::onClickFriend}"/>
   </LinearLayout>
</layout>






public class Presenter {
    public void onSaveClick(Task task){}
}
Then you can bind the click event to your class as follows:
  <?xml version="1.0" encoding="utf-8"?>
  <layout xmlns:android="http://schemas.android.com/apk/res/android">
      <data>
          <variable name="task" type="com.android.example.Task" />
          <variable name="presenter" type="com.android.example.Presenter" />
      </data>
      <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent">
          <Button android:layout_width="wrap_content" android:layout_height="wrap_content"
          android:onClick="@{() -> presenter.onSaveClick(task)}" />
      </LinearLayout>
  </layout>


//也可以使用各种属性:
<data>
    <import type="android.graphics.drawable.Drawable"/>
    <variable name="user"  type="com.example.User"/>
    <variable name="image" type="Drawable"/>
    <variable name="note"  type="String"/>
</data>




可以使用三元运算符
android:text="@{user.displayName != null ? user.displayName : user.lastName}"


可以使用各种属性的的type
  <import type="android.util.SparseArray"/>
    <import type="java.util.Map"/>
    <import type="java.util.List"/>
     <variable name="list" type="List&lt;String&gt;"/>
    <variable name="sparse" type="SparseArray&lt;String&gt;"/>
    <variable name="map" type="Map&lt;String, String&gt;"/>
    <variable name="index" type="int"/>
    <variable name="key" type="String"/>



0 0
原创粉丝点击