ГДЕ найти демоверсию Android Fingerpaint? (эпоха Android Studio)

Многие-многие обсуждения Android сосредоточены на (по-видимому, известном) образце Fingerpaint:

https://stackoverflow.com/a/16650524/294884

Где его взять для использования с Android Studio? .. 2014

http://developer.android.com/samples/index.html

Или это сейчас просто полностью устарело и унаследовано? Спасибо за любую информацию

Android Studio: НЕТ папок, образцов и т.п.............

введите здесь описание изображения

Есть ли вероятность, что любимый SDK Manager на Mac - Studio может помочь?

введите здесь описание изображения

Должен ли я идти с папкой API11?

На странице Android не отображается Fingerpaint: вот что я вижу

введите здесь описание изображения

Глядя в каждой категории, нет Fingerpaint....

На Mac мне удалось загрузить образцы API11 с помощью любимого ADKManager. Невероятно, но на Mac они глубоко спрятаны внутри упаковки (черт возьми, Mac!) Но этого «образца» там нет ... печально

введите здесь описание изображения


person Fattie    schedule 11.06.2014    source источник
comment
Привет, Джо. Рагунандан (один из наших известных участников) ответил на этот вопрос 20 мая 2013 года в 13:21. Так что, думаю, не так уж он и устарел. Он находится в папке SDK в разделе Samples/Graphics. В моей установке Windows он находится в разделе: [install path]\sdk\samples\android-19\legacy\ApiDemos\src\com\example\android\apis\graphics Вы можете заметить слово legacy, которое используется только для версий до 18 (с 7 по 17 не помещайте его в ЭТУ папку). О, да, это зависит от того, загружаете ли вы образцы в свой диспетчер SDK (есть ли он в Android Studio? Наверное, да) - или устанавливаете Eclipse и просто копируете файлы из него.   -  person Phantômaxx    schedule 11.06.2014
comment
Успокойся... ты слишком эмоционален. Я предложил вам метод: установите Eclipse (думаю, есть версия для Mac, не так ли?). Обновите SDK до последней версии, выбрав папки с примерами. Теперь они у вас на жестком диске (я не верю в ОС без папок — это Unix или Linux на базе Android, не так ли?). Нужно просто найти их (и импортировать — вы найдете множество руководств, рассказывающих, как перейти с Eclipse на Android Studio). И наслаждаться!   -  person Phantômaxx    schedule 11.06.2014
comment
@JoeBlow, у тебя есть SDK для Android? если это так, вы можете вручную проверить папку в папке sdk. Пример android-sdk/samples/android-11/ApiDemos/src/com/example/android/apis/graphics/FingerPaint.java   -  person Raghunandan    schedule 11.06.2014
comment
Голем - Ты прав, прости! Вы знаете, ужасно устанавливать Eclipse на Mac с Android Studio: потому что это может полностью испортить установку Studio. Вы можете себе представить, как это страшно для нового Android-разработчика...   -  person Fattie    schedule 11.06.2014
comment
Что мешает мне использовать Android Studio, так это предупреждение с сайта Android Developer: Caution: Android Studio is currently available as an early access preview. Several features are either incomplete or not yet implemented and you may encounter bugs. If you are not comfortable using an unfinished product, you may want to instead download (or continue to use) the ADT Bundle (Eclipse with the ADT Plugin). Мне больше подходит СТАБИЛЬНАЯ среда.   -  person Phantômaxx    schedule 11.06.2014
comment
@JoeBlow Я знаю, что у вас, пользователей Mac, есть фантастический инструмент под названием Time Machine — резервное копирование состояния вашей машины в текущее время. Если что-то облажается, это будет не твоя задница. Поскольку у вас есть резервная копия, и вы можете вернуться к исходному состоянию (создайте резервную копию папок SDK на компакт-диске, прежде чем вернуться)   -  person Phantômaxx    schedule 11.06.2014
comment
@JoeBlow developer.android.com/samples/index.html.   -  person Raghunandan    schedule 11.06.2014
comment
@Rag -- демонстрации Fingerpaint больше нет в этом списке!!!! Ты можешь в это поверить?   -  person Fattie    schedule 11.06.2014
comment
@JoeBlow все еще здесь для меня   -  person Raghunandan    schedule 11.06.2014
comment
@Rag -- Ahhhhh .. они должны передать другую веб-страницу на Mac! Обратите внимание на третье изображение, которое я добавил выше.   -  person Fattie    schedule 11.06.2014
comment
Как вы думаете, ребята, я найду это в примерах API11? (Обратите внимание на мое изображение из SDKManager)....   -  person Fattie    schedule 11.06.2014
comment
@JoeBlow: второе изображение, любимый SDK Manager: Образцы для SDK Он есть на всех уровнях API с 7 по 19 (предыдущие в любом случае не продаются). Также 7, в настоящее время. Так что лучше скачайте все с 8 по 19 - повезло, вам не нужно устанавливать Eclipse!   -  person Phantômaxx    schedule 11.06.2014
comment
Ааа.. не было его в API11. Хорошо, я пройдусь по ним один за другим и найду СПАСИБО !!!!!!!!!!!!!!!!   -  person Fattie    schedule 11.06.2014
comment
На вашем месте я бы проверил все галочки в SDK Manager, за исключением только дополнения GoogleTV (которое также несовместимо с Windows, к вашему сведению). Это может занять некоторое время.   -  person Phantômaxx    schedule 11.06.2014


Ответы (1)


Я нашел это! Благодаря Голему и Рагунандану

Невероятно сложно найти его на Mac. Используйте SDKManager для загрузки API11Samples.

Затем вам нужно на Mac установить пакет, содержащий само приложение Studio,

и развернуть вниз. попробуйте АпиДемос

введите здесь описание изображения

Я просто не знаю, последняя ли это версия файла.

Вот и весь файл...

для всех пользователей Mac, чтобы сэкономить ваше время:

Насколько я знаю, это последняя версия. См. также выдающееся обсуждение на https://stackoverflow.com/a/16650524/294884.

весь файл Fingerpaint.java: (насколько я знаю, это весь образец :)

ЭТО ИЗ SDK11, 17 или 19:

Я ВНИМАТЕЛЬНО ПРОВЕРИЛ, И ФАЙЛ ИДЕНТИЧЕН в 11,17,19. Надеюсь, это поможет кому-то.

/*
 * Copyright (C) 2007 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.example.android.apis.graphics;

import android.content.Context;
import android.graphics.*;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;

public class FingerPaint extends GraphicsActivity
        implements ColorPickerDialog.OnColorChangedListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(new MyView(this));

        mPaint = new Paint();
        mPaint.setAntiAlias(true);
        mPaint.setDither(true);
        mPaint.setColor(0xFFFF0000);
        mPaint.setStyle(Paint.Style.STROKE);
        mPaint.setStrokeJoin(Paint.Join.ROUND);
        mPaint.setStrokeCap(Paint.Cap.ROUND);
        mPaint.setStrokeWidth(12);

        mEmboss = new EmbossMaskFilter(new float[] { 1, 1, 1 },
                                       0.4f, 6, 3.5f);

        mBlur = new BlurMaskFilter(8, BlurMaskFilter.Blur.NORMAL);
    }

    private Paint       mPaint;
    private MaskFilter  mEmboss;
    private MaskFilter  mBlur;

    public void colorChanged(int color) {
        mPaint.setColor(color);
    }

    public class MyView extends View {

        private static final float MINP = 0.25f;
        private static final float MAXP = 0.75f;

        private Bitmap  mBitmap;
        private Canvas  mCanvas;
        private Path    mPath;
        private Paint   mBitmapPaint;

        public MyView(Context c) {
            super(c);

            mPath = new Path();
            mBitmapPaint = new Paint(Paint.DITHER_FLAG);
        }

        @Override
        protected void onSizeChanged(int w, int h, int oldw, int oldh) {
            super.onSizeChanged(w, h, oldw, oldh);
            mBitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
            mCanvas = new Canvas(mBitmap);
        }

        @Override
        protected void onDraw(Canvas canvas) {
            canvas.drawColor(0xFFAAAAAA);

            canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint);

            canvas.drawPath(mPath, mPaint);
        }

        private float mX, mY;
        private static final float TOUCH_TOLERANCE = 4;

        private void touch_start(float x, float y) {
            mPath.reset();
            mPath.moveTo(x, y);
            mX = x;
            mY = y;
        }
        private void touch_move(float x, float y) {
            float dx = Math.abs(x - mX);
            float dy = Math.abs(y - mY);
            if (dx >= TOUCH_TOLERANCE || dy >= TOUCH_TOLERANCE) {
                mPath.quadTo(mX, mY, (x + mX)/2, (y + mY)/2);
                mX = x;
                mY = y;
            }
        }
        private void touch_up() {
            mPath.lineTo(mX, mY);
            // commit the path to our offscreen
            mCanvas.drawPath(mPath, mPaint);
            // kill this so we don't double draw
            mPath.reset();
        }

        @Override
        public boolean onTouchEvent(MotionEvent event) {
            float x = event.getX();
            float y = event.getY();

            switch (event.getAction()) {
                case MotionEvent.ACTION_DOWN:
                    touch_start(x, y);
                    invalidate();
                    break;
                case MotionEvent.ACTION_MOVE:
                    touch_move(x, y);
                    invalidate();
                    break;
                case MotionEvent.ACTION_UP:
                    touch_up();
                    invalidate();
                    break;
            }
            return true;
        }
    }

    private static final int COLOR_MENU_ID = Menu.FIRST;
    private static final int EMBOSS_MENU_ID = Menu.FIRST + 1;
    private static final int BLUR_MENU_ID = Menu.FIRST + 2;
    private static final int ERASE_MENU_ID = Menu.FIRST + 3;
    private static final int SRCATOP_MENU_ID = Menu.FIRST + 4;

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);

        menu.add(0, COLOR_MENU_ID, 0, "Color").setShortcut('3', 'c');
        menu.add(0, EMBOSS_MENU_ID, 0, "Emboss").setShortcut('4', 's');
        menu.add(0, BLUR_MENU_ID, 0, "Blur").setShortcut('5', 'z');
        menu.add(0, ERASE_MENU_ID, 0, "Erase").setShortcut('5', 'z');
        menu.add(0, SRCATOP_MENU_ID, 0, "SrcATop").setShortcut('5', 'z');

        /****   Is this the mechanism to extend with filter effects?
        Intent intent = new Intent(null, getIntent().getData());
        intent.addCategory(Intent.CATEGORY_ALTERNATIVE);
        menu.addIntentOptions(
                              Menu.ALTERNATIVE, 0,
                              new ComponentName(this, NotesList.class),
                              null, intent, 0, null);
        *****/
        return true;
    }

    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
        super.onPrepareOptionsMenu(menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        mPaint.setXfermode(null);
        mPaint.setAlpha(0xFF);

        switch (item.getItemId()) {
            case COLOR_MENU_ID:
                new ColorPickerDialog(this, this, mPaint.getColor()).show();
                return true;
            case EMBOSS_MENU_ID:
                if (mPaint.getMaskFilter() != mEmboss) {
                    mPaint.setMaskFilter(mEmboss);
                } else {
                    mPaint.setMaskFilter(null);
                }
                return true;
            case BLUR_MENU_ID:
                if (mPaint.getMaskFilter() != mBlur) {
                    mPaint.setMaskFilter(mBlur);
                } else {
                    mPaint.setMaskFilter(null);
                }
                return true;
            case ERASE_MENU_ID:
                mPaint.setXfermode(new PorterDuffXfermode(
                                                        PorterDuff.Mode.CLEAR));
                return true;
            case SRCATOP_MENU_ID:
                mPaint.setXfermode(new PorterDuffXfermode(
                                                    PorterDuff.Mode.SRC_ATOP));
                mPaint.setAlpha(0x80);
                return true;
        }
        return super.onOptionsItemSelected(item);
    }
}
person Fattie    schedule 11.06.2014
comment
Хотя, возможно, это не последняя версия... Уровень API 17 должен быть последним неустаревшим, а уровень API 19 — последним устаревшим. Но все они могут быть одинаковыми, начиная с версии 7, если честно. Итак, 11 — это хороший компромисс. - person Phantômaxx; 11.06.2014
comment
@gol Потрясающе - я тщательно скачал их все и проверил, в файле нет абсолютно никаких изменений с SDK11. Спасибо!!! - person Fattie; 12.06.2014
comment
Я думаю, что есть какой-то бесплатный API... Поищите в Google, вы, вероятно, обнаружите тонну (10+) различных репозиториев github, из которых можно найти и выбрать тот, который лучше всего соответствует вашим потребностям. Здоровья, чувак. - person Phantômaxx; 12.06.2014
comment
Привет @Der!!! Вы знаете, я искал, искал и искал, я задавал вопросы здесь и т. д., stackoverflow.com/questions/24013595 - просто кажется быть НИКТО! Я рад написать свой собственный, но это кажется странным. Тем не менее, я остаюсь поклонником Android :) К черту айфоны! - person Fattie; 12.06.2014
comment
Я сделал БЫСТРЫЙ поиск и нашел несколько интересных ссылок: compiletimeerror.com/2013/09/, vogella.com/tutorials/ AndroidTouch/article.html, java2s.com/Code/ Android/2D-Graphics/. Должен признаться, что я также нашел несколько копий исходного кода FingerPaint.java... ;) - person Phantômaxx; 12.06.2014
comment
(Проклятые маки!) Хм, вы знаете, это скорее статьи о том, как писать; что круто. Я могу написать свою собственную, без проблем — мне просто нужна полная, завершенная, работающая библиотека, которая уже делает все это, чтобы избавить меня от хлопот! :О - person Fattie; 12.06.2014