• Как запретить вызов экземпляров страницы больше 1 раза(UWP)?

    ImmortalCAT
    @ImmortalCAT
    C# loving
    if (frame.CurrentSourcePageType != typeof(LALA) && typeof(LALA) != null)
    {
     frame.Navigate(typeof(LALA));
    }
    Ответ написан
    Комментировать
  • Как десериализовать с помощью newtonsoft json модель?

    @Melz
    JsonProperty?
    [JsonProperty("some.field.dot-net")]
    public string SomeFieldDotNet { get; set; }
    Ответ написан
    2 комментария
  • Как забиндить в List view разные картинки в заивисмости от содержимого элемента?

    @MonkAlex
    C#, SQL, Delphi, C++ etc
    Код бы не помешал.

    Можно сделать это на уровне модели, тогда при сборке param сразу можно будет создавать image нужный.
    Можно написать конвертер, который будет анализировать param и отдавать разные картинки для разных случаев.
    Ответ написан
    4 комментария
  • Как в WPF беспрерывно показывать в Image битмап?

    @tex0
    З.Ы Я новичок в c# и WPF соответственно.

    Курите в сторону биндинга.
    У Image (если я не ошибаюсь) есть свойство Source (тип свойства ImageSource. BitmapSource вроде как наследуется от этого типа).
    В CodeBehind определяете свойство, например так (BitmapContainer.cs)
    class BitmapContainer : INotifyPropertyChanged
    {
        public BitmapContainer()
        {
            //...
            DataContext = this; 
            //...
        }
    
    private BitmapSource varBmpSrc_;
    
        public BitmapSource BmpSrc 
        {
            get
            {
                return varBmpSrc_;
            } 
            set
            { 
                varBmpSrc_ = value; 
                OnPropertyChanged("BmpSrc");//обязательно!!! Имплементить INotifyPropertyChanged интерфейс
            }
        }
    }


    Далее в разметке (XAML) (BitmapContainer.cs.xaml)
    ...
        <Image Source={Binding BmpSrc, UpdateSourceTrigger=PropertyChanged} />
        ...


    И далее, по идее, когда вы будете задавать свойство BmpSrc у объекта класса BitmapContainer, cвойсво Source у Image будет меняться на новое.

    //где-то на просторах вашего кода
        bitmapContainerObject.BmpSrc = Converter(WriteableBitmap);
    Ответ написан
    3 комментария
  • Как получить глубину по координатам X,Y?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    https://ru.wikipedia.org/wiki/Z-%D0%B1%D1%83%D1%84...

    длина массива depthData должна равняться ширине умноженной на высоту.

    p.s. Я с кинектом не работал, так что могу ошибаться, но насколько я помню он работает именно по этому принципу.
    Ответ написан
    7 комментариев
  • Не отображается кнопка при тесте приложения, как исправить?

    @Tiberal
    какая минимальная поддерживаемая версия сдк? Для ImageButton вы используете атрибуты, которые только с 17 версии доступны
    Ответ написан
    1 комментарий
  • Почему Android VK SDK при вызове крашит VKSdk.initialize(this)?

    @kapitalistka
    честно говоря, никогда не работала с vk sdk, но
    VKSdk.initialize(Context) must be call from Application#onCreate()
    говорит о том, что для данный кусок кода надо писать в методе onCreate Aplication класса
    Ответ написан
    3 комментария
  • Ripple эффект с произвольными формами?

    enq3
    @enq3
    Android engineer at #ITX5
    Я делал контролы с полной отрисовкой всей графики на Canvas. И есть ограничение, придется пожертвовать аппаратным ускорением, но я визуально разницу не особо заметил.
    Полный код класса:
    import android.content.Context;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.graphics.Paint;
    import android.graphics.Path;
    import android.util.AttributeSet;
    import android.view.MotionEvent;
    import android.view.View;
    import com.nineoldandroids.animation.Animator;
    import com.nineoldandroids.animation.ValueAnimator;
    
    public class RippleCircle extends View {
        // ===========================================================
        // Constants
        // ===========================================================
        private static final String TAG = RippleCircle.class.getSimpleName();
        private static final int RIPPLE_COLOR = 0x66000000;
        private static final int RIPPLE_FADE_COLOR = 0x22000000;
        private static final int FAB_COLOR = 0xffcccccc;
        private static final long ANIM_DURATION = 250;
        protected static int FLAGS = Paint.ANTI_ALIAS_FLAG | Paint.FILTER_BITMAP_FLAG | Paint.DITHER_FLAG;
        // ===========================================================
        // Fields
        // ===========================================================
        private Paint mButtonBg;
        private Paint mRippleButtonBg;
        private Path main;
        private ValueAnimator animatorRipple;
        private float selRadius;
        private float radius;
        private float centerY;
        private float centerX;
        private float rippleX;
        private float rippleY;
        private boolean isButtonTouchDown;
        private boolean isProgress;     
        // ===========================================================
        // Constructors
        // ===========================================================
        public RippleCircle(Context context) {
            super(context);
            init();
        }
    
        public RippleCircle(Context context, AttributeSet attrs) {
            super(context, attrs);
            init();
        }
    
        // ===========================================================
        // Getter & Setter
        // ===========================================================
    
        // ===========================================================
        // Methods for/from SuperClass/Interfaces
        // ===========================================================
        @Override
        protected void onDraw(Canvas canvas) {
            canvas.drawCircle(centerX, centerY, radius, mButtonBg);
            canvas.clipPath(main);
            canvas.drawCircle(rippleX, rippleY, selRadius, mRippleButtonBg);
        }
    
        @Override
        protected void onSizeChanged(int w, int h, int oldw, int oldh) {
            super.onSizeChanged(w, h, oldw, oldh);
            float size = Math.min(w, h);
            centerY = size / 2;
            centerX = size / 2;
            radius = size / 2;
            main.addCircle(centerX, centerY, radius, Path.Direction.CCW);
            animatorRipple.setFloatValues(0, radius);
        }
        // ===========================================================
        // Inner Methods
        // ===========================================================
        private void init() {
            main = new Path();
    
            animatorRipple = ValueAnimator.ofFloat(0, 0);
            animatorRipple.setDuration(ANIM_DURATION);
            animatorRipple.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
                @Override
                public void onAnimationUpdate(ValueAnimator animation) {
                    selRadius = (Float) animation.getAnimatedValue();
                    if (selRadius / radius <= 1 && selRadius / radius >= 0)
                        mRippleButtonBg.setColor(blendColors(RIPPLE_COLOR, RIPPLE_FADE_COLOR, 1 - selRadius / radius));
                    invalidate();
                }
            });
    
            animatorRipple.addListener(new Animator.AnimatorListener() {
                @Override
                public void onAnimationStart(Animator animation) {
                }
    
                @Override
                public void onAnimationEnd(Animator animation) {
                    if (!isButtonTouchDown) {
                        selRadius = 0;
                        invalidate();
                        isProgress = false;
                    }
                }
    
                @Override
                public void onAnimationCancel(Animator animation) {
    
                }
    
                @Override
                public void onAnimationRepeat(Animator animation) {
    
                }
            });
            if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB) {
                setLayerType(LAYER_TYPE_SOFTWARE, null);
            }
            mButtonBg = new Paint(FLAGS);
            mButtonBg.setColor(FAB_COLOR);
    
            mRippleButtonBg = new Paint(FLAGS);
            mRippleButtonBg.setColor(RIPPLE_COLOR);
    
            setOnTouchListener(new OnTouchListener() {
                @Override
                public boolean onTouch(View v, MotionEvent event) {
    
                    switch (event.getAction()) {
                        case MotionEvent.ACTION_DOWN:
                            rippleX = event.getX();
                            rippleY = event.getY();
                            if (isPointInCircle(centerX, centerY, event.getX(), event.getY(), radius)) {
                                isButtonTouchDown = true;
                                if (!isProgress) {
                                    rippleX = event.getX();
                                    rippleY = event.getY();
                                    isProgress = true;
                                    float max = distance(centerX, centerY, rippleX, rippleY) + radius;
                                    animatorRipple.setFloatValues(0, max);
                                    animatorRipple.start();
                                }
                            }
                            break;
                        case MotionEvent.ACTION_UP:
                            isButtonTouchDown = false;
                            if (!animatorRipple.isRunning()) {
                                selRadius = 0;
                                invalidate();
                                isProgress = false;
                            }
                            break;
                    }
                    return true;
                }
            });
        }
    
        private boolean isPointInCircle(float centerX, float centerY, float x, float y, float radius) {
            return distance(centerX, centerY, x, y) <= radius;
        }
    
        private float distance(final float pX1, final float pY1, final float pX2, final float pY2) {
            final float dX = pX2 - pX1;
            final float dY = pY2 - pY1;
            return (float) Math.sqrt((dX * dX) + (dY * dY));
        }
    
        private int blendColors(int color1, int color2, float ratio) {
            final float inverseRation = 1f - ratio;
            float a = (Color.alpha(color1) * ratio) + (Color.alpha(color2) * inverseRation);
            float r = (Color.red(color1) * ratio) + (Color.red(color2) * inverseRation);
            float g = (Color.green(color1) * ratio) + (Color.green(color2) * inverseRation);
            float b = (Color.blue(color1) * ratio) + (Color.blue(color2) * inverseRation);
            return Color.argb((int) a, (int) r, (int) g, (int) b);
        }
        // ===========================================================
        // Inner and Anonymous Classes
        // ===========================================================
    }

    Используем в разметке:
    <yourPackage.RippleCircle
            android:layout_width="56dp"
            android:layout_height="56dp"
            android:layout_centerInParent="true"/>

    По аналогии можно добавить какую угодно форму, я делал прямоугольник со скругленными углами и окружность.
    Ответ написан
    4 комментария
  • Можно ли создать два AsyncTask'a в одном классе?

    LeEnot
    @LeEnot
    Енот-андроид
    Вы, конечно, можете добавить сколько угодно AsyncTask'ов в классе, но для загрузки изображений я бы порекомендовал использовать специализированную библиотеку типа Picasso, Glide, UniversalImageLoader или аналогичную.
    Какие преимущества вы получаете?
    1. Асинхронная загрузка изображений без головной боли
    2. Опциональное кеширование изображений - в том числе в RAM и на sdcard
    3. Масштабирование и преобразование изображений в thumbnails
    4. Еще много всяких приятных мелочей - см. настройки и опции библиотек
    Кстати, гугловцы для своих проектов использую Glide, очень много разработчиков используют Picasso - так что в поддержке недостатка не будет.
    Ответ написан
    6 комментариев
  • Какие пункты AndroidSDK действительно нужны для разработки, а какие будут лишние?

    Satori_Kanzo
    @Satori_Kanzo
    Make code not war
    Просто, чтобы понять: Ви-таки пг'осто хотите кошег'но пользовать пг'остг'анство нашего дог'огого Аш-Ди-Ди, либо действительно опытный разработчик, который уверен, что ему в будущем ни разу не понадобятся определенные пакеты?
    Ответ написан
    7 комментариев
  • Как получить значение null класса Integer?

    @xdeveloper
    чуть замороченней использовать Parcelable.
    кода больше писать, но можно сложные объекты передавать.

    public class Ride implements Parcelable { ....}

    Intent intent = new Intent(context, ReportActivity.class);
    intent.putExtra(Ride.class.getCanonicalName(), ride);
    context.startActivity(intent);
    Ответ написан
    Комментировать
  • Как получить значение null класса Integer?

    Ewintory
    @Ewintory
    Java / Android developer
    Integer является Serializable. Поэтому, если хотите именно так передавать, то getIntent().getSerializableExtra() вам в помощь. Только при получении, перед кастованием проверяйте на null.

    Но я бы на вашем месте передавал примитивный тип, а вместо null использовал например дефолтное значение -1.
    Ответ написан
    Комментировать
  • Как сменить контент ImageView в ViewPager Android?

    gadfi
    @gadfi
    https://gamega.org
    если я правильно понимаю у вас uris это коллекция которая хранит uri картинок
    просто меняйте значение нужного вам элемента этой коллекции
    не нужно пытаться изменить картинку руками, это произойдет в момент перерисовки когда вы вызываете
    notifyDataSetChanged
    зы используйте что то для асинхронной загрузки, например picasso, иначе будет тормозить
    Ответ написан
    3 комментария
  • Как работает цикл for в Java?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Это аналог forEach или for in.

    То есть "для каждого элемента (User cn) в списке (users) выполнить...."
    Ответ написан
    Комментировать
  • Как спарсить со страницы ссылку?

    @j_wayne
    Вот такой вызов даст HTML первой ссылки
    title.first().outerHtml();

    jsoup.org/cookbook/extracting-data/attributes-text-html

    Только doc.select(...) вроде  как возвращает коллекцию, я бы называл переменную titles.
    Ответ написан
    Комментировать