`
haitian235
  • 浏览: 62463 次
  • 性别: Icon_minigender_1
  • 来自: 海南
社区版块
存档分类
最新评论

把view嵌入xml的细节

阅读更多
一、把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>
  • lun.rar (206.9 KB)
  • 下载次数: 14
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    android xml中include标签的使用

    `&lt;include /&gt;`标签是一个非常实用的功能,它允许我们将一个XML布局文件嵌入到另一个布局文件中,实现代码的复用和模块化。这个Demo将详细解释如何使用`&lt;include /&gt;`标签以及其背后的原理。 ### 1. `&lt;include /&gt;`...

    基于XML技术的留言本

    C#代码可以遍历XML节点,将每个留言元素转换成HTML段落或列表项,然后嵌入到网页模板中。 4. **数据添加和更新**:当用户提交新留言或编辑现有留言时,C#代码会处理这些请求,创建或修改相应的XML元素,并保存到...

    android项目中嵌入cocos2dx项目demo

    在Android项目中嵌入Cocos2dx项目是一个常见的需求,特别是在开发混合式游戏或应用时。Cocos2dx是一款高效的游戏开发框架,它基于C++,同时提供了Java、Objective-C和Swift的接口,使得开发者可以方便地在Android和...

    基于XML的MVC模型

    XML数据岛是ASP(Active Server Pages)中用于在HTML页面中嵌入XML数据的技术。通过XML数据岛,开发者可以在客户端直接处理XML文档,提供了一种灵活的数据交互方式。XML数据岛结合JavaScript或VBScript可以实现动态...

    用XML数据岛创建上下文菜单

    XML数据岛是一种技术,它允许在HTML文档中嵌入XML数据,并通过XML文档对象模型(DOM)进行访问和操作。DOM是XML和HTML文档的一种标准编程接口,它提供了一种结构化的表示方式,使开发者能够轻松地添加、删除或修改...

    NTSKY struts+xml bbs系统.rar_XML java_bbs_struts_xml_系统

    Struts是一个开源的MVC(Model-View-Controller)框架,它被广泛用于构建Java Web应用程序。在"NTSKY struts+xml bbs系统"中,我们可以看到Struts框架被用作后台处理和控制层,以管理用户请求并协调应用程序的各个...

    DataGrid中嵌入comBox

    在某些场景下,我们可能需要在DataGrid的某一列中嵌入ComboBox控件,以提供用户多选或者下拉选择的功能。本文将详细讲解如何在DataGrid中实现这一功能,并结合MVVM(Model-View-ViewModel)设计模式来增强可维护性...

    动态Web数据库技术——基于JSP和XML技术实现

    通过JSP,我们可以创建自定义标签库,实现MVC(Model-View-Controller)设计模式,从而更好地组织和管理项目结构。 XML是一种标记语言,主要用来存储和传输结构化数据。它以易于人类阅读和机器解析的方式描述数据。...

    PDF pdfview.ocx 无水印

    `pdfview.ocx`控件可以在Wpf应用中嵌入,通过C#代码进行交互控制,实现PDF的动态展示和操作。 在提供的压缩包文件中,`WindowsFormsApplication.sln`是Visual Studio解决方案文件,包含了项目的配置信息。`Windows...

    ListView中嵌入Gallery

    将Gallery嵌入到ListView中,可以实现更丰富的界面交互效果。这篇教程将详细讲解如何在ListView中嵌入Gallery控件。 首先,我们要理解ListView的工作原理。ListView通过Adapter来提供数据,并利用convertView机制来...

    Compose和Xml视图的混用(分模块)

    这允许在Compose布局中嵌入XML视图,例如,当需要使用特定的第三方库控件时。 - **包裹Compose组件**:相反,如果在XML布局中需要使用Compose组件,可以创建一个自定义的`ViewGroup`,并在其中初始化和渲染Compose...

    《动态Web数据库技术—基于JSP和XML技术实现》源代码

    读者可以通过这些实例学习如何设置JDBC(Java Database Connectivity)连接,执行SQL查询,处理XML文档,以及如何在JSP中有效地嵌入和解析XML。 在学习过程中,读者需要对Java基础和基本的Web开发概念有一定的了解...

    《动态Web数据库技术——基于JSP和XML技术实现》-王红-源代码-3314

    1. JSP基础:JSP是Java平台上的动态网页开发技术,它允许开发者在HTML或XML文档中嵌入Java代码,以实现服务器端的逻辑处理。JSP的基础包括JSP语法、指令、脚本元素、内置对象(如request、response、session等)以及...

    JAVA\JSP and XML

    5. **MVC(Model-View-Controller)模式**:JSP通常与Servlet结合,实现MVC设计模式,其中Servlet作为控制器,JSP作为视图,模型通常是JavaBean或其他业务逻辑组件。 **XML技术** 1. **XML基础**:XML是一种标记...

    XML帮助大全及JSP教程

    而对于JSP,掌握MVC(Model-View-Controller)设计模式以及如何与Servlet协作处理请求和响应是进阶技能。 通过阅读《XML实用大全》和《JSP教程》这两份资源,你可以系统地学习这两个技术,掌握XML的创建、解析和...

    Android-自定义RadiusView包含常用的Layout和View方便扩展

    自定义视图内嵌入了诸如TextView、ImageView、Button等基本的Android组件,使得开发者在使用RadiusView时可以直接操作这些内置的View,无需额外创建和管理,简化了开发流程。 5. 扩展性(Extensibility): ...

    BottomNavigationView+ViewPager+Fragment

    设置`BottomNavigationView`时,需要添加对应的菜单资源文件(menu.xml),并在活动中通过`setMenuProvider`或者`setupWithNavController`方法绑定菜单项与页面之间的关系。 `ViewPager`是一个用来展示多个页面并...

    自定义的LinearLayout使用自定义的View

    本主题主要关注如何在自定义的LinearLayout中嵌入自定义的View,并利用GridView来有效地组织这些视图。 首先,我们要了解LinearLayout。LinearLayout是Android布局系统中最基本的布局之一,它按照垂直或水平方向...

    一个Flex xml MP3播放器

    在开发过程中,可能会运用到一些设计模式,如Model-View-Controller(MVC)模式,以分离数据、视图和控制逻辑,提高代码的可维护性和可扩展性。 8. **调试与部署** 使用Flex Builder或Flash Builder这样的集成...

Global site tag (gtag.js) - Google Analytics