所以我尝试使用Canvas在Android Studio中绘制一条线。为了绘制一条简单的线,您需要使用
定义contentViewsetContentView(R.id.activity_main);
我似乎无法在ImageViews或TextViews之间进行组合,它们只是相互覆盖。
为了获得绘制的线条,我需要将contentView更改为
setContentView(DrawView);
如果我这样做,我所有的其他事情都会消失。
以下是我的2个文件:
MainActivity:
public class MainActivity extends Activity {
DrawView drawLine;
ImageView view;
SeekBar seekBar;
DrawView drawView;
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
drawView = new DrawView(this);
drawView.setBackgroundColor(Color.WHITE);
setContentView(drawView);
view.setZ(-1);
SeekBar seekBar = (SeekBar)findViewById(R.id.seekBar);
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
int progressChanged = 0;
TextView text = (TextView)findViewById(R.id.textView);
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
progressChanged = progress;
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
text.setText("Progress: " + progressChanged);
}
});
}
}
drawView函数:
public class DrawView extends View {
Paint paint = new Paint();
ImageView view = (ImageView)findViewById(R.id.imageView);
SeekBar seekBar = (SeekBar)findViewById(R.id.seekBar);
TextView text = (TextView)findViewById(R.id.textView);
public DrawView(Context context) {
super(context);
paint.setColor(Color.BLACK);
}
@Override
public void onDraw(Canvas canvas) {
canvas.drawLine(0, 0, 20, 20, paint);
canvas.drawLine(20, 0, 0, 20, paint);
}
}
如何将TextViews和/或ImageViews与画布结合使用?
答案 0 :(得分:0)
为了绘制一条简单的线,您需要使用
定义contentView
不一定。
为了获得绘制的线条,我需要将contentView更改为
不一定。
如何将TextViews和/或ImageViews与画布结合使用?
步骤1:在DrawView
上实现双参数构造函数,该构造函数需要Context
和AttributeSet
。
步骤2:在包含ImageViews
和TextViews
的布局资源文件中,也包含DrawView
。请注意,您需要在XML元素名称中使用完全限定的类名(例如,com.eriklann.android.DrawView
)。