RoboBinding探究二:ImageView及自定义控件实现

来源:互联网 发布:python进程和线程 编辑:程序博客网 时间:2024/06/08 12:31
public class ImageActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);ImagePresentationModel presentationModel = new ImagePresentationModel();initializeContentView(R.layout.activity_image, presentationModel);}private void initializeContentView(int layoutId, Object presentationModel) {ViewBinder viewBinder = createViewBinder();View rootView = viewBinder.inflateAndBind(layoutId, presentationModel);setContentView(rootView);}private ViewBinder createViewBinder() {BinderFactory binderFactory = new BinderFactoryBuilder().add(new MylayoutBinding().forView(MyLayout.class)).build();return binderFactory.createViewBinder(this);}}


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    xmlns:bind="http://robobinding.org/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    tools:ignore="MissingPrefix" >    <com.test.model.MyLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        bind:image="{image}" /></LinearLayout>

public class MyLayout extends LinearLayout {private ImageView image;public MyLayout(Context context, AttributeSet attrs) {this(context, attrs, R.layout.mylayout);}protected MyLayout(Context context, AttributeSet attrs, int layoutId) {super(context, attrs);LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);inflater.inflate(layoutId, this);image = (ImageView) findViewById(R.id.image);}@SuppressLint("NewApi")public void setImage(int drawable) {image.setImageResource(drawable);}}

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:orientation="vertical" >    <ImageView        android:id="@+id/image"        android:layout_width="wrap_content"        android:layout_height="wrap_content" /></LinearLayout>

@org.robobinding.annotation.PresentationModelpublic class ImagePresentationModel implementsHasPresentationModelChangeSupport {private PresentationModelChangeSupport changeSupport;public ImagePresentationModel() {changeSupport = new PresentationModelChangeSupport(this);}@Overridepublic PresentationModelChangeSupport getPresentationModelChangeSupport() {return changeSupport;}public int getImage() {return R.drawable.test;}public void changeImage() {changeSupport.firePropertyChange("image1");}}


0 0
原创粉丝点击