2016-03-29 26 views
-1

Örnek kod için draw line var. Çalışma zamanı için noktaya göre nokta çizime ihtiyacım var. Ama şimdi sadece aktiviteyi göstererek infazdan sonra çizgim var. Ancak, aktiviteyi başlatmalı ve bu noktayı, java örnek koduna ekledim.android etkinliğinde dalga formu nasıl çizileceği

Örnek kod Sonra burada java projesi koduna

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; 
     } 
    } 
}} 

çalıştırmak java bu kod çalıştı

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); 

}} 
burada

Gerekli çıkış biçimi burada aynı çıkışa ihtiyacım var can Bunun için bir grafik libarary kullanmamın nedeni ut android aktivitesinde

+0

olduğunu deneyin? –

+0

Android stüdyoda grafik kullanmayı bilmiyorum. öyleyse, lütfen bağlantı veya örnek program öner. – wingsraam

+0

@Rajaram özel görünüm oluştur – arun

cevap

1

bu

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

Hata var Ne yazık ki LineView @arun – wingsraam

+0

hangi satır hata var. Nexsus 4 emulator – arun

+0

@Rajaram üzerinde mükemmel şekilde çalışıyor. – arun

İlgili konular