一、把View嵌入xml布局要注意设置宽高、不要用自适应、因为view默认也是填充整个屏幕。
二、如果是嵌入多个xml要注意判断View里面的对象是否为空。
三、要引用 这个构造方法 View类名(Context context,AttributeSet attr),如TopSurFV(Context context,AttributeSet attr);
四、事件view的touch事件在没有说明id ,Activity是得不到点击事件的,可以通过context传入判断Activity对象。
五、在布局的时候要指明顺序、要不然会出现,只显示到view就没有的情况。用table布局的时候,系统会自动帮你识别顺序。
希望看到的朋友在此基础上,补充和修改。也请告诉我一声哦。。
MainActivity.class>>>>>>>>>>>>>>>>>>>>>>>>
package org.lun.main;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity implements OnClickListener{
/** Called when the activity is first created. */
private Button buttonok;
private Button buttonlogin;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
fullscreen();
setContentView(R.layout.main);
buttonok=(Button) findViewById(R.id.enter);
buttonlogin=(Button) findViewById(R.id.login);
buttonok.setOnClickListener(this);
buttonlogin.setOnClickListener(this);
}
public void fullscreen(){
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams. FLAG_FULLSCREEN ,
WindowManager.LayoutParams. FLAG_FULLSCREEN);
}
public boolean onTouchEvent(MotionEvent event){
if(event.getX()>=2&&event.getX()<30){
if(event.getY()>2&&event.getY()<30){
}
}
return true;
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
}
TopSurFV.class>>>>>>>>>>>>>>>>>>>>>>
package org.lun.view;
import org.lun.main.R;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
public class TopSurFV extends SurfaceView implements SurfaceHolder.Callback,Runnable{
private Bitmap bitmap;
private Bitmap bmptopglugin;
private SurfaceHolder surfaceHolder;
private static int state;
private static int isshow=1;
private static final int SLEEPTIME=50;
private boolean isflag;
private Context context;
public TopSurFV(Context context) {
super(context);
}
public TopSurFV(Context context,AttributeSet attr)
{
super(context,attr);
this.context=context;
surfaceHolder=getHolder();
surfaceHolder.addCallback(this);
setFocusable(true);
inibmp();
}
public void inibmp(){
bitmap=BitmapFactory.decodeResource(getResources(), R.drawable.top);
bmptopglugin=BitmapFactory.decodeResource(getResources(), R.drawable.topplugin);
}
public void Draw(){
Canvas canvas=surfaceHolder.lockCanvas();
Paint paint=new Paint();
if(bitmap==null){
inibmp();
}
if(canvas!=null){
canvas.drawBitmap(bitmap, 0, 0, paint);
if(state==1){
canvas.drawBitmap(bmptopglugin, 10, 10, paint);
}
surfaceHolder.unlockCanvasAndPost(canvas);
}
}
public boolean onTouchEvent(MotionEvent event){
if(event.getX()>=10&&event.getX()<40){
if(event.getY()>10&&event.getY()<40){
state=1;
}
}
postInvalidate();
return true;
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
isflag=true;
new Thread(this).start();
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
isflag=false;
}
@Override
public void run() {
while (isflag)
{
try
{
Thread.sleep(SLEEPTIME);
Draw();
state=0;
}
catch (Exception e)
{
}
}
}
}
main.xml>>>>>>>>>>>>>>>>
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/homeback"
android:stretchColumns="1">
<org.lun.view.TopSurFV
android:id="@+id/enterActivity"
android:layout_width="fill_parent"
android:layout_height="35px"
/>
<TextView
android:text="@string/welcomeenter"
android:textStyle="bold"
android:layout_marginTop="10px"
android:textSize="20px"
android:gravity="center"
/>
<TableRow
>
<TextView
android:text="@string/user"
android:textStyle="bold"
android:gravity="right"
android:textSize="15px"
android:padding="3dip" />
<EditText android:id="@+id/username"
android:padding="3dip"
android:scrollHorizontally="true" />
</TableRow>
<TableRow >
<TextView
android:text="@string/password"
android:textStyle="bold"
android:gravity="right"
android:textSize="15px"
android:padding="3dip" />
<EditText android:id="@+id/password"
android:password="true"
android:padding="3dip"
android:scrollHorizontally="true" />
</TableRow>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/la2"
android:gravity="center"
android:layout_marginRight="0px"
>
<Button android:id="@+id/enter"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/ok"
/>
<Button android:id="@+id/login"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/login"
/>
</LinearLayout>
</TableLayout>
分享到:
相关推荐
`<include />`标签是一个非常实用的功能,它允许我们将一个XML布局文件嵌入到另一个布局文件中,实现代码的复用和模块化。这个Demo将详细解释如何使用`<include />`标签以及其背后的原理。 ### 1. `<include />`...
C#代码可以遍历XML节点,将每个留言元素转换成HTML段落或列表项,然后嵌入到网页模板中。 4. **数据添加和更新**:当用户提交新留言或编辑现有留言时,C#代码会处理这些请求,创建或修改相应的XML元素,并保存到...
在Android项目中嵌入Cocos2dx项目是一个常见的需求,特别是在开发混合式游戏或应用时。Cocos2dx是一款高效的游戏开发框架,它基于C++,同时提供了Java、Objective-C和Swift的接口,使得开发者可以方便地在Android和...
XML数据岛是ASP(Active Server Pages)中用于在HTML页面中嵌入XML数据的技术。通过XML数据岛,开发者可以在客户端直接处理XML文档,提供了一种灵活的数据交互方式。XML数据岛结合JavaScript或VBScript可以实现动态...
XML数据岛是一种技术,它允许在HTML文档中嵌入XML数据,并通过XML文档对象模型(DOM)进行访问和操作。DOM是XML和HTML文档的一种标准编程接口,它提供了一种结构化的表示方式,使开发者能够轻松地添加、删除或修改...
Struts是一个开源的MVC(Model-View-Controller)框架,它被广泛用于构建Java Web应用程序。在"NTSKY struts+xml bbs系统"中,我们可以看到Struts框架被用作后台处理和控制层,以管理用户请求并协调应用程序的各个...
在某些场景下,我们可能需要在DataGrid的某一列中嵌入ComboBox控件,以提供用户多选或者下拉选择的功能。本文将详细讲解如何在DataGrid中实现这一功能,并结合MVVM(Model-View-ViewModel)设计模式来增强可维护性...
通过JSP,我们可以创建自定义标签库,实现MVC(Model-View-Controller)设计模式,从而更好地组织和管理项目结构。 XML是一种标记语言,主要用来存储和传输结构化数据。它以易于人类阅读和机器解析的方式描述数据。...
`pdfview.ocx`控件可以在Wpf应用中嵌入,通过C#代码进行交互控制,实现PDF的动态展示和操作。 在提供的压缩包文件中,`WindowsFormsApplication.sln`是Visual Studio解决方案文件,包含了项目的配置信息。`Windows...
将Gallery嵌入到ListView中,可以实现更丰富的界面交互效果。这篇教程将详细讲解如何在ListView中嵌入Gallery控件。 首先,我们要理解ListView的工作原理。ListView通过Adapter来提供数据,并利用convertView机制来...
这允许在Compose布局中嵌入XML视图,例如,当需要使用特定的第三方库控件时。 - **包裹Compose组件**:相反,如果在XML布局中需要使用Compose组件,可以创建一个自定义的`ViewGroup`,并在其中初始化和渲染Compose...
读者可以通过这些实例学习如何设置JDBC(Java Database Connectivity)连接,执行SQL查询,处理XML文档,以及如何在JSP中有效地嵌入和解析XML。 在学习过程中,读者需要对Java基础和基本的Web开发概念有一定的了解...
1. JSP基础:JSP是Java平台上的动态网页开发技术,它允许开发者在HTML或XML文档中嵌入Java代码,以实现服务器端的逻辑处理。JSP的基础包括JSP语法、指令、脚本元素、内置对象(如request、response、session等)以及...
5. **MVC(Model-View-Controller)模式**:JSP通常与Servlet结合,实现MVC设计模式,其中Servlet作为控制器,JSP作为视图,模型通常是JavaBean或其他业务逻辑组件。 **XML技术** 1. **XML基础**:XML是一种标记...
而对于JSP,掌握MVC(Model-View-Controller)设计模式以及如何与Servlet协作处理请求和响应是进阶技能。 通过阅读《XML实用大全》和《JSP教程》这两份资源,你可以系统地学习这两个技术,掌握XML的创建、解析和...
自定义视图内嵌入了诸如TextView、ImageView、Button等基本的Android组件,使得开发者在使用RadiusView时可以直接操作这些内置的View,无需额外创建和管理,简化了开发流程。 5. 扩展性(Extensibility): ...
设置`BottomNavigationView`时,需要添加对应的菜单资源文件(menu.xml),并在活动中通过`setMenuProvider`或者`setupWithNavController`方法绑定菜单项与页面之间的关系。 `ViewPager`是一个用来展示多个页面并...
本主题主要关注如何在自定义的LinearLayout中嵌入自定义的View,并利用GridView来有效地组织这些视图。 首先,我们要了解LinearLayout。LinearLayout是Android布局系统中最基本的布局之一,它按照垂直或水平方向...
在开发过程中,可能会运用到一些设计模式,如Model-View-Controller(MVC)模式,以分离数据、视图和控制逻辑,提高代码的可维护性和可扩展性。 8. **调试与部署** 使用Flex Builder或Flash Builder这样的集成...