@Override public boolean addView(ProteusView parent, ProteusView view) { if (parent instanceof ViewGroup) { ((ViewGroup) parent).addView(view.getAsView()); return true; } return false; } }
void render() { // remove the current view container.removeAllViews(); // Inflate a new view using proteus long start = System.currentTimeMillis(); view = layoutInflater.inflate(layout, data, container, 0); System.out.println("inflate time: " + (System.currentTimeMillis() - start)); // Add the inflated view to the container container.addView(view.getAsView()); }
private void alert() { ProteusView view = layoutInflater.inflate("AlertDialogLayout", data); AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setView(view.getAsView()) .setPositiveButton(R.string.action_alert_ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { dialogInterface.dismiss(); } }) .show(); }
public static float evaluate(Value value, ProteusView view) { if (value == null) { return Dimension.ZERO.apply(view.getAsView().getContext()); } final float[] result = new float[1]; DimensionAttributeProcessor<View> processor = new DimensionAttributeProcessor<View>() { @Override public void setDimension(View view, float dimension) { result[0] = dimension; } }; processor.process(view.getAsView(), value); return result[0]; }
@Nullable public static Drawable evaluate(Value value, ProteusView view) { if (null == value) { return null; } final Drawable[] d = new Drawable[1]; DrawableResourceProcessor<View> processor = new DrawableResourceProcessor<View>() { @Override public void setDrawable(View view, Drawable drawable) { d[0] = drawable; } }; processor.process(view.getAsView(), value); return d[0]; }
@NonNull @Override public ProteusView.Manager createViewManager(@NonNull ProteusContext context, @NonNull ProteusView view, @NonNull Layout layout, @NonNull ObjectValue data, @Nullable ViewTypeParser caller, @Nullable ViewGroup parent, int dataIndex) { DataContext dataContext = createDataContext(context, layout, data, parent, dataIndex); return new AdapterBasedViewManager(context, null != caller ? caller : this, view.getAsView(), layout, dataContext); }
@NonNull @Override public ProteusView.Manager createViewManager(@NonNull ProteusContext context, @NonNull ProteusView view, @NonNull Layout layout, @NonNull ObjectValue data, @Nullable ViewTypeParser caller, @Nullable ViewGroup parent, int dataIndex) { DataContext dataContext = createDataContext(context, layout, data, parent, dataIndex); return new ViewGroupManager(context, null != caller ? caller : this, view.getAsView(), layout, dataContext); }
private void process(Map<String, Value> style, ProteusView proteusView, ViewTypeParser handler) { for (Map.Entry<String, Value> entry : style.entrySet()) { //noinspection unchecked handler.handleAttribute(proteusView.getAsView(), handler.getAttributeId(entry.getKey()), entry.getValue()); } } });
public static Color.Result evaluate(Value value, ProteusView view) { final Color.Result[] result = new Color.Result[1]; ColorResourceProcessor<View> processor = new ColorResourceProcessor<View>() { @Override public void setColor(View view, int color) { result[0] = Color.Result.color(color); } @Override public void setColor(View view, ColorStateList colors) { result[0] = Color.Result.colors(colors); } }; processor.process(view.getAsView(), value); return result[0]; }
@NonNull @Override public ProteusView.Manager createViewManager(@NonNull ProteusContext context, @NonNull ProteusView view, @NonNull Layout layout, @NonNull ObjectValue data, @Nullable ViewTypeParser caller, @Nullable ViewGroup parent, int dataIndex) { DataContext dataContext = createDataContext(context, layout, data, parent, dataIndex); return new AdapterBasedViewManager(context, null != caller ? caller : this, view.getAsView(), layout, dataContext); }
protected boolean handleAttribute(@NonNull ViewTypeParser parser, @NonNull ProteusView view, int attribute, @NonNull Value value) { if (ProteusConstants.isLoggingEnabled()) { Log.d(TAG, "Handle '" + attribute + "' : " + value); } //noinspection unchecked return parser.handleAttribute(view.getAsView(), attribute, value); } }
/** * @param view * @param parent * @param dataIndex */ public void onAfterCreateView(@NonNull ProteusView view, @Nullable ViewGroup parent, int dataIndex) { View v = view.getAsView(); if (null == v.getLayoutParams()) { ViewGroup.LayoutParams layoutParams; if (parent != null) { layoutParams = generateDefaultLayoutParams(parent); } else { layoutParams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); } v.setLayoutParams(layoutParams); } }
@Override protected void apply(@NonNull Bitmap bitmap) { callback.apply(convertBitmapToDrawable(bitmap, view.getAsView().getContext())); } });
ProteusViewHolder(@NonNull ProteusView view) { super(view.getAsView()); this.view = view; this.context = view.getViewManager().getContext(); } }
/** * @param context * @param view * @param layout * @param data * @param caller * @param parent * @param dataIndex @return */ @NonNull public ProteusView.Manager createViewManager(@NonNull ProteusContext context, @NonNull ProteusView view, @NonNull Layout layout, @NonNull ObjectValue data, @Nullable ViewTypeParser caller, @Nullable ViewGroup parent, int dataIndex) { if (null != this.parent && caller != this.parent) { return this.parent.createViewManager(context, view, layout, data, caller, parent, dataIndex); } else { DataContext dataContext = createDataContext(context, layout, data, parent, dataIndex); return new ViewManager(context, caller != null ? caller : this, view.getAsView(), layout, dataContext); } }