2016-03-29 3 views
-1

У меня есть пример кода для рисования линии. Мне нужна прямая линия по точкам для времени выполнения. Но теперь я получил строку после выполнения, только показывая активность. Но, мне нужно начать работу и показать точку точки по точке, я сделал эту концепцию в примере кода Java, также прикрепленную, чтобы проверить это.Как нарисовать форму волны в активности андроида

Пример кода здесь

public class ImgDraw extends ActionBarActivity { 

ImageView drawingImageView; 
Handler mHandlerAnimation = null; 
Runnable mRunnableAnimation = null; 

Canvas canvas; 
int startx = 0, starty = 0, endx = 0, endy = 0; 
Paint paint; 
Bitmap bitmap; 
int width, height; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_imgdraw); 

    drawingImageView = (ImageView) findViewById(R.id.DrawingImageView); 

    DisplayMetrics metrics = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(metrics); 
    width = metrics.widthPixels; 
    height = metrics.heightPixels; 

    bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); 

    canvas = new Canvas(bitmap); 
    drawingImageView.setImageBitmap(bitmap); 

    // Line 
    paint = new Paint(); 
    paint.setColor(Color.BLACK); 
    paint.setStrokeWidth(3); 
    startx = 50; 
    starty = 90; 
    endx = 550; 
    endy = 90; 
    // canvas.drawLine(startx, starty, startx+1, endy, paint); 


    ImgAnimation(); 


} 

private void ImgAnimation() { 

    mHandlerAnimation = new Handler(); 

    mRunnableAnimation = new Runnable() { 
     public void run() { 

      if (endx > startx) { 
       canvas.drawLine(startx, starty, startx + 1, endy, paint); 
       startx = startx + 1; 
       getWindow().getDecorView().findViewById(android.R.id.content).invalidate(); 
      } else { 
       bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); 
       canvas = new Canvas(bitmap); 
       drawingImageView.setImageBitmap(bitmap); 
       startx = 50; 
      } 

      mHandlerAnimation.postDelayed(this, 5); 
     } 
    }; 

    mHandlerAnimation.postDelayed(mRunnableAnimation, 5); 

}} 

Необходимый формат вывода здесь я работал над кодом проекта Java здесь

public class AndroidTest extends JFrame { 
static JPanel jp; 
static Graphics g2d; 
static int x=10; 
public static void main(String[] args) { 
    AndroidTest a = new AndroidTest(); 
    a.setSize(500,500); 
    a.setLayout(null); 
    a.setLocationRelativeTo(null); 
    a.setDefaultCloseOperation(EXIT_ON_CLOSE); 
    a.setVisible(true); 

    jp = new JPanel(); 
    jp.setSize(450,100); 
    jp.setLocation(10,100); 
    jp.setBackground(Color.black); 
    jp.setVisible(true); 
    a.add(jp); 

    g2d = jp.getGraphics(); 
    while(x<=450){ 
     try { 
      Thread.sleep(10); 
     } catch (InterruptedException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     for (int k = 0; k < 10; k++) { 
      g2d.setColor(Color.black); 
      g2d.drawLine(x+k, 0 , x + k,99); 
     } 
     g2d.setColor(Color.white); 
     g2d.drawLine(x,50,x+1,50); 
     x++; 
     if (x == 446) { 
      x=10; 
     } 
    } 
}} 

запустить этот код в Java, то мне нужен тот же самый выход ет в андроиде деятельности

+0

почему не можешь использовать график libarary для этого? –

+0

Я не знаю, как использовать его в студии android. поэтому, пожалуйста, предложите ссылку или образец программы. – wingsraam

+0

@ Rajaram create custom view – arun

ответ

1

Попробуйте

import android.content.Context; 
import android.graphics.Canvas; 
import android.graphics.Color; 
import android.graphics.Paint; 
import android.util.AttributeSet; 
import android.view.View; 

public class LineView extends View { 
    private final Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); 
    private final Paint paint1 = new Paint(Paint.ANTI_ALIAS_FLAG); 
    int x=0,j=0; 

    public LineView(Context context) { 
     super(context); 
     init(); 
    } 

    public LineView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     init(); 
    } 

    public LineView(Context context, AttributeSet attrs, int defStyleAttr) { 
     super(context, attrs, defStyleAttr); 
     init(); 

    } 

    public void init() 
    { 
     paint.setColor(Color.BLACK); 
     paint1.setColor(Color.WHITE); 
    } 

    @Override 
    protected synchronized void onDraw(Canvas canvas) 
    { 
     super.onDraw(canvas); 
     canvas.drawLine(0,50,x+1,50,paint1); 

     if (x > getWidth()-5) { 
      canvas.drawRect(j, 0, j + 20, 50, paint); 
      j+=4; 
      if(j > getWidth()-5) 
       j=0; 
     } 
     else 
     { 
      x+=4; 
     } 
     invalidate(); 
    } 
} 

XML-это

<com.example.myapplication.LineView 
     android:layout_width="match_parent" 
     android:layout_height="100dp" 
     android:background="#000"/> 
+0

Я получил ошибку, как, к сожалению, LineView остановил @arun – wingsraam

+0

, какая линия у вас получила ошибку. Он отлично работает на эмуляторе nexsus 4 – arun

+0

@ Раджарам вы можете опубликовать журнал. – arun

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