当前位置: 代码迷 >> Android >> 在安卓下怎么画图
  详细解决方案

在安卓下怎么画图

热度:37   发布时间:2016-04-27 23:04:34.0
在安卓下如何画图啊
要求不高只要画一条线就好 但是找不到方法

网上找到的解决方案都是如下格式
protected void onCreate(Bundle savedInstanceState) {        
 super.onCreate(savedInstanceState);       
  setContentView(new SampleView(this));  
   }        
   private static class SampleView extends View {         
private Paint mPaint;          
 public SampleView(Context context) {          
   super(context);           
  setFocusable(true);                           
mPaint = new Paint();           
}
。。。 。。


也就是在
  setContentView(new SampleView(this));  这里调用绘图操作 


但是在我的eclipse创建一个新的工程 是如下格式的
public class MainActivity extends ActionBarActivity {

@SuppressLint("WrongCall")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);


if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();
}
}


是这种格式setContentView(R.layout.activity_main);
如果将R.layout.activity_main换成网上的方式 运行程序就会崩溃

所以我想问一下 这种模式下如何画图呢
------解决思路----------------------
你要画图的话 那么首先 你应该有一个view来展示你所画的图.所以这个时候你就要自定义view,并在自定的view中的onDraw方法中用画笔画图了.并把这个自定view放入你的布局xml文件中去.至于自定于view 你就可以用上面的smapleview的形式
------解决思路----------------------
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
        <com.example.androidcircleanimdemo.CircleView
            android:layout_width="150dp"
            android:layout_height="150dp"
            android:layout_centerInParent="true" />
    </RelativeLayout>

</RelativeLayout>
这就是使用自定义view的方法
------解决思路----------------------
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.util.AttributeSet;
import android.view.View;
public class CircleView extends View{
public CircleView(Context context) {
this(context,null);
// TODO Auto-generated constructor stub
}
public CircleView(Context context,AttributeSet attrs) {
this(context,null,0);
// TODO Auto-generated constructor stub
}
public CircleView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
// TODO Auto-generated constructor stub
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
Paint mPaint = new Paint();
mPaint.setStyle(Style.STROKE);
mPaint.setColor(Color.GRAY);
mPaint.setStrokeWidth(5);
int width = getMeasuredWidth();
int height = getMeasuredHeight();
int radius = width>height?height/2:width/2;
canvas.drawCircle(width/2, height/2, radius, mPaint);
}
}
这是自定义的view
------解决思路----------------------
引用:
楼上的  能再详细点么

并把这个自定view放入你的布局xml文件中去
这个怎么实现

在 XML 文件中通过全类名使用你的自定义 View;

<con.demo.view
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
</con.demo.view>

------解决思路----------------------
再加一个构造函数进去 
 public ht(Context context,AttributeSet attrs) {
        super(context,attrs);
        // TODO Auto-generated constructor stub
    }
  相关解决方案