2010-08-31 5 views
0

Hy !! Я хочу сделать приложение «Белая доска», но я не знаю, как сделать только некоторые пиксели черного и позволить другим белым.Изготовление доски

+0

Это большой вопрос, вы можете сузить ее вниз немного. Как далеко вы дошли до сих пор? Можете ли вы показать нам какой-то код? – fredley

+2

Вам просто нужно продать его правильно. ** Whiteboard Lite ** * (маркер платы не включен) * –

+0

нет я хочу программировать его самостоятельно ... Я хочу идентифицировать каждый пиксель дисплея и когда он был нажат, он должен изменить цвет ... извините У меня плохой английский –

ответ

2

Проверьте это. http://www.tutorialforandroid.com/2009/06/drawing-with-canvas-in-android.html

Кроме того, вам может потребоваться веб-приложение/услуга, чтобы передать содержимое экрана вашей аудитории.

+0

вот так? public void onCreate (Bundle savedInstanceState) { super.onCreate (savedInstanceState); Холст холст = новый Холст(); Paint paint = new Paint(); paint.setColor (Color.WHITE); canvas.drawPoint (20, 20, краска); } , но как насчет зрения ... –

+0

Прочтите эту часть по ссылке, которую я отправил вам. "Для этого: Скопируйте весь код из дроиднова, замените следующее". –

+0

Знаете ли вы, как вид знает, что краска и конвы на них? –

5

Это должно помочь получать черные пиксели на доске:

Scribbler.java:

package org.yourpackage.scribble; 

import android.app.Activity; 
import android.graphics.Color; 
import android.os.Bundle; 

public class Scribbler extends Activity { 
    DrawView drawView; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     drawView = new DrawView(this); 
     drawView.setBackgroundColor(Color.WHITE); 
     setContentView(drawView); 
     drawView.requestFocus(); 

    } 
} 

DrawView.java:

package org.yourpackage.scribble; 

import java.util.ArrayList; 
import java.util.List; 

import android.content.Context; 
import android.graphics.Canvas; 
import android.graphics.Color; 
import android.graphics.Paint; 
import android.view.MotionEvent; 
import android.view.View; 
import android.view.View.OnTouchListener; 

public class DrawView extends View implements OnTouchListener { 
    List<Point> points = new ArrayList<Point>(); 
    Paint paint = new Paint(); 

    public DrawView(Context context) { 
     super(context); 
     setFocusable(true); 
     setFocusableInTouchMode(true); 
     this.setOnTouchListener(this); 
     paint.setColor(Color.BLACK); 
    } 

    @Override 
    public void onDraw(Canvas canvas) { 
     for (Point point : points) { 
      canvas.drawCircle(point.x, point.y, 2, paint); 
     } 
    } 

    public boolean onTouch(View view, MotionEvent event) { 
     Point point = new Point(); 
     point.x = event.getX(); 
     point.y = event.getY(); 
     points.add(point); 
     invalidate(); 
     return true; 
    } 
} 

class Point { 
    float x, y; 
} 

AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="org.yourpackage.scribble" 
     android:versionCode="1" 
     android:versionName="1.0"> 
    <application> 
     <activity android:name=".Scribbler"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 
    <uses-sdk android:minSdkVersion="3" /> 
</manifest> 

... whic ч оказывается выглядеть следующим образом:

alt text

Вы можете рисовать линии вместо точек - это один раз, чтобы дать вам подсказку

+0

PERFEKT !!! Но я не понимаю, почему новый взгляд знает, что краска «на нем»? –

+0

, потому что в действии Scribbler мы устанавливаем наш DrawView как активный контент - и если в этом DrawView происходит что-то, мы получаем координаты внутри метода onTouch, а затем вызываем вызов метода onDraw, который рисует наши пиксели - вызывается onDraw автоматически, потому что мы вынуждаем повторный розыгрыш View путем вызова invaldidate() внутри onTouch - вы можете получить информацию об этом поведении в разделе «Рисование» этой ссылки http://developer.android.com/reference/android/ view/View.html – DonGru

+0

+1 DonGru. использование 2 для радиуса слишком мало, когда я использовал свой Nexus 7, поэтому я использую 20 на canvas.drawCircle() вместо – fedmich

Смежные вопросы