- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在处理我的 ondraw 方法无法正常工作的应用程序......在我的应用程序中,我正在使用 framelayout ...所以我用了三级...1)活跃度2)图像选择3)绘图
我的图像选择工作正常,但我的绘图类工作不正常..它没有显示任何东西....我的绘画课如下...
public class Draw extends View {
String info = "";
float x = 0;
float y = 0;
int color = Color.GREEN;
public Draw(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public Draw(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint = new Paint();
paint.setStyle(Paint.Style.FILL_AND_STROKE);
paint.setColor(color);
paint.setStrokeWidth(15);
paint.setTextSize(30);
canvas.drawLine(x-10, y, x+10, y, paint);
canvas.drawLine(x, y-10, x, y+10, paint);
canvas.drawText(info, x, y, paint);
}
public void updateInfo(String t_info, float t_x, float t_y){
info = t_info;
x = t_x;
y = t_y;
invalidate();
}
public void clearInfo(){
info = "";
x = 0;
y = 0;
invalidate();
}
}
我从我的 mainactivity 类中调用它。但我首先从图像选择类中调用它,如下所示
public class FirstImage extends ImageView implements OnTouchListener {
MotionEvent event;
int a;
Bitmap image;
String huma ="human";
String info = "human";
float x = 0; //init value
float y = 0; //init value
Animation animationFadeIn;
public FirstImage(Context context) {
super(context);
}
public FirstImage(Context context, AttributeSet attrs) {
super(context, attrs);
}
public void changeImage(int id){
this.setImageResource(id);
a=id;
final Animation animationFadeout=AnimationUtils.loadAnimation(getContext(), R.anim.zoomin);
this.startAnimation(animationFadeout);
this.setOnTouchListener(this);
}
@Override
public boolean onTouch(View arg0, MotionEvent me) {
switch(me.getAction()){
case MotionEvent.ACTION_DOWN:
x=me.getX();
y= me.getY();
pageinfo(x,y);
break;
case MotionEvent.ACTION_MOVE:
x=me.getX();
y= me.getY();
pageinfo(x,y);
break;
case MotionEvent.ACTION_UP:
x=me.getX();
y= me.getY();
pageinfo(x,y);
break;
case MotionEvent.ACTION_OUTSIDE:
x=me.getX();
y= me.getY();
pageinfo(x,y);
break;
default: return true;
}
return false;
}
public void pageinfo(float x, float y) {
// TODO Auto-generated method stub
((AshActivity)getContext()).updateMsg(info, x,y);
}
}
它是从主要 Activity 类中调用的
public class AshActivity extends Activity {
ImageView i;
Draw j;
TextView t,k;
ImageButton back;
ImageButton next;
OnClickListener l2 = null;
OnClickListener l = null;
int count=0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
i = (FirstImage)findViewById(R.id.image);
j=(Draw)findViewById(R.id.info);
t=(TextView)findViewById(R.id.textView);
k=(TextView)findViewById(R.id.textView1);
back=(ImageButton)findViewById(R.id.button1);
next=(ImageButton)findViewById(R.id.button2);
if (count==0){
((FirstImage) i).changeImage(R.drawable.human);
}
//addListenerOnButton();
}
public void updateMsg(String info, float x, float y) {
// TODO Auto-generated method stub
j.updateInfo(info, x, y);
}
}
我的布局xml文件如下
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:name="http://schemas.android.com/apk/res/com.example.nam"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<!-- Screen Design for VIDEOS -->
<TableLayout
android:id="@+id/tablelayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:stretchColumns="1">
<TableRow
android:id="@+id/tableRow1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="15dip"
android:text="pic on click which will tell where is the dna located in human body or cell "
android:textSize="18dip" />
</TableRow>
<TableRow
android:id="@+id/tableRow2"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<com.example.nam.FirstImage
android:id="@+id/image"
android:layout_height="wrap_content"
android:layout_width="fill_parent" />
<com.example.nam.Draw
android:id="@+id/info"
android:layout_height="wrap_content"
android:layout_width="fill_parent" />
</FrameLayout>
</TableRow>
<TableRow
android:id="@+id/tableRow3"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<ImageButton
android:id="@+id/button1"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:src="@drawable/monotone_arrow_next_left"/>
<ImageButton
android:id="@+id/button2"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:src="@drawable/monotone_arrow_next_lrightcopy"/>
</LinearLayout>
</TableRow>
<TableRow
android:id="@+id/tableRow4"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="15dip"
android:text="please don't mind "
android:textSize="18dip" />
</TableRow>
</TableLayout>
</ScrollView>
有什么问题我没明白....
最佳答案
问题是你的Draw
实例的layout_height
是0。
这是由于您为其注册的LayoutParams
(wrap_content
);如果您更改 FrameLayout 的
属性,将显示所需的文本:
<FrameLayout android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ro.rekaszeru.sample.FirstImage android:id="@+id/image"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
<ro.rekaszeru.sample.Draw android:id="@+id/info"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</FrameLayout>
另请注意,30 的文本大小非常大...
关于android - ondraw 方法不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10696197/
安卓游戏用什么比较好: 一个带有渲染线程的SurfaceView 或 一个 SurfaceView,带有调用 SurfaceView 函数的线程 doDraw() 谢谢。 最佳答案 SurfaceVi
我花了一整天的时间调试各种将自定义 ViewGroup 添加到另一个自定义 ViewGroup 的方法,但几乎要疯了,因为它们都不起作用,而且没有官方文档或显示如何完成的示例... 基本上,我有 2
我正在尝试创建一个简单的应用程序,绘制一个简单的图形,然后单击按钮后对图形进行一些仿射变换。你能帮我完成 onClick 方法旋转吗?万分感谢。问题是,如果可能的话,我不知道如何从 CanvasVie
我有一个简单的图形应用程序,可以在屏幕上绘制一些内容。之前,我在 onDraw() 中调用 invalidate() 时没有进行检查,没有任何问题。在我的应用程序中, onDraw() 每秒被调用多次
这个问题已经有答案了: Is Java "pass-by-reference" or "pass-by-value"? (91 个回答) 已关闭 9 年前。 我提到了this question但它没有
我有以下代码: @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); mPaint.setCo
我的自定义 View 的 onDraw() 没有被触发。为什么?我正在使用 2.3.3。 View 创建时不应该自动绘制吗? onMeasure() 方法被触发,我得到正确的屏幕宽度和高度。 pack
我正在处理我的 ondraw 方法无法正常工作的应用程序......在我的应用程序中,我正在使用 framelayout ...所以我用了三级...1)活跃度2)图像选择3)绘图 我的图像选择工作正常
我有一个 SurfaceView,我喜欢在其中绘制一堆文本并绘制 72px x 72px 的 png 图像。图像始终绘制在 SurfaceView 上,但每 2 秒在不同的位置绘制一次。 (从该图
在我的自定义绘制 View 中,我使用了 Canvas.drawPaint(Paint) 方法。但 Android Studio 中的预览显示此消息: The graphics preview in
我创建了一个调用 DrawView extends View 的 Activity ,我在 Canvas 上绘制类似于二叉树的东西。 Canvas 尺寸大于屏幕尺寸,onDraw 函数绘制整个 Can
我试图在按下 drawCircle() 时调用 onDraw()。我知道它正在被调用(通过 xml 中的 onClick),因为我收到消息:“drawCircle pressed”。然而,问题是 in
我用一个新类覆盖了 RelativeLayout 类: public class myRelative extends RelativeLayout{ //... //this function is
我在使用 Android 应用程序时遇到问题。 我有一个线程不断迭代列表或形状,更新它们的位置,有时还会从列表中删除一个项目。在线程的 while 循环结束时,它调用 postInvalidate()
我有一个应用程序可以根据人的生日绘制行星和星座。我在自定义 View 中使用 onDraw() 方法,该方法被添加到 XML 中的 FrameLayout。问题是,当我离开页面并调整日期时,该 Act
我正在尝试在 CScrollView 派生类中显示图像: C++ CScrollView, how to scroll an image? 所以我想覆盖OnDraw,将代码从OnPaint 移动到On
我想向 itemView 添加动画,但是它们仅在项目当前正在移动时运行。例如,项目开始淡出,直到 alpha 为 0,但如果项目停止移动,动画就会暂停,项目只会淡出一半。之后,该项目需要再次开始移动才
对于 Android canvas 游戏,我使用以下(最小化)方法请求重绘 SurfaceView: private void refreshView() { c = surf
我正在使用 Android 2.2 构建游戏。主游戏 Activity 使用自定义 SurfaceView: class GameView extends SurfaceView 据我了解,onDra
我的自定义按钮有问题。 onDraw() 被一次又一次地调用,我不明白为什么。 public class CircleButton extends Button { static final
我是一名优秀的程序员,十分优秀!