我在主的anctivity加了几个button,在外部创建了一个 SurfaceView类,现在的问题是我怎么把这个SurfaceView加到正在运行的Activity中啊。
上代码,Activity是这样的
public class control extends Activity
{
OutputStream tmpIn = null;
Button bt1,bt2,bt3,bt7;
TextView tv;
public Bitmap bit;
public void onCreate(Bundle savedInstanceState)
{
//BS = new BlueServer();
super.onCreate(savedInstanceState);
setContentView(R.layout.main2);
//requestWindowFeature(Window.FEATURE_NO_TITLE);
DrawingBoardSurfaceView sfv = new DrawingBoardSurfaceView(this);
bt1 = (Button)findViewById(R.id.button1);
bt2 = (Button)findViewById(R.id.button2);
bt3 = (Button)findViewById(R.id.button3);
bt7 = (Button)findViewById(R.id.button7);
bt1.setOnClickListener(new ClickEvent());
bt2.setOnClickListener(new ClickEvent());
bt3.setOnClickListener(new ClickEvent());
bt7.setOnClickListener(new ClickEvent());
tv = (TextView)findViewById(R.id.textview1);
我在其中实例化了自己定义的外部SurfaceView 但他显示的 还是原有的main2中所创建的SurfaceView
外部类所定义的SurfaceView是这样的public class DrawingBoardSurfaceView extends SurfaceView implements Callback,
Runnable
{
SurfaceView sfv;
SurfaceHolder holder;
public DrawingBoardSurfaceView(Context context) {
super(context);
sfv = (SurfaceView)findViewById(R.id.SufaceView1);
这里面的(R.id.SufaceView1)就是main2中所定义的SufaceView1,
main2中的代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:weightSum="1"
android:orientation="vertical"><LinearLayout android:id="@+id/LinearLayout01"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<Button
android:text="播放"
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</Button>
<Button
android:text="上一页"
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</Button>
<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/button2" android:text="下一页"></Button>
<Button
android:text="结束"
android:id="@+id/button7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></Button>
<TextView
android:text="haha"
android:id = "@+id/textview1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
></TextView> </LinearLayout>
<LinearLayout android:id="@+id/LinearLayout02"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<Button
android:text="划线"
android:id="@+id/button5"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</Button>
<Button
android:text="取消划线"
android:id="@+id/button4"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</Button>
</LinearLayout>
<SurfaceView
android:id="@+id/SufaceView1"
android:layout_width="match_parent"
android:layout_height="match_parent">
</SurfaceView >
</LinearLayout>
如何把外部定义的这个SurfaceView加到主的activity中呢,这样可以实现我在外部直接监听这个SurfaceView。请大家给个方法或思路。
上代码,Activity是这样的
public class control extends Activity
{
OutputStream tmpIn = null;
Button bt1,bt2,bt3,bt7;
TextView tv;
public Bitmap bit;
public void onCreate(Bundle savedInstanceState)
{
//BS = new BlueServer();
super.onCreate(savedInstanceState);
setContentView(R.layout.main2);
//requestWindowFeature(Window.FEATURE_NO_TITLE);
DrawingBoardSurfaceView sfv = new DrawingBoardSurfaceView(this);
bt1 = (Button)findViewById(R.id.button1);
bt2 = (Button)findViewById(R.id.button2);
bt3 = (Button)findViewById(R.id.button3);
bt7 = (Button)findViewById(R.id.button7);
bt1.setOnClickListener(new ClickEvent());
bt2.setOnClickListener(new ClickEvent());
bt3.setOnClickListener(new ClickEvent());
bt7.setOnClickListener(new ClickEvent());
tv = (TextView)findViewById(R.id.textview1);
我在其中实例化了自己定义的外部SurfaceView 但他显示的 还是原有的main2中所创建的SurfaceView
外部类所定义的SurfaceView是这样的public class DrawingBoardSurfaceView extends SurfaceView implements Callback,
Runnable
{
SurfaceView sfv;
SurfaceHolder holder;
public DrawingBoardSurfaceView(Context context) {
super(context);
sfv = (SurfaceView)findViewById(R.id.SufaceView1);
这里面的(R.id.SufaceView1)就是main2中所定义的SufaceView1,
main2中的代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:weightSum="1"
android:orientation="vertical"><LinearLayout android:id="@+id/LinearLayout01"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<Button
android:text="播放"
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</Button>
<Button
android:text="上一页"
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</Button>
<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/button2" android:text="下一页"></Button>
<Button
android:text="结束"
android:id="@+id/button7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></Button>
<TextView
android:text="haha"
android:id = "@+id/textview1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
></TextView> </LinearLayout>
<LinearLayout android:id="@+id/LinearLayout02"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<Button
android:text="划线"
android:id="@+id/button5"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</Button>
<Button
android:text="取消划线"
android:id="@+id/button4"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</Button>
</LinearLayout>
<SurfaceView
android:id="@+id/SufaceView1"
android:layout_width="match_parent"
android:layout_height="match_parent">
</SurfaceView >
</LinearLayout>
如何把外部定义的这个SurfaceView加到主的activity中呢,这样可以实现我在外部直接监听这个SurfaceView。请大家给个方法或思路。
<SurfaceView
android:id="@+id/SufaceView1"
android:layout_width="match_parent"
android:layout_height="match_parent">
</SurfaceView >
</LinearLayout>既然这样定义可以。
那么我可以得到LinearLayout:
LinearLayout layout = findViewById(R.id.ll_layout);
然后再加入你自己定义的surfaceview就可以了
layout.addView(sfv, ViewGroup.LayoutParams params) //params是定义sfv的位置用的