`
haitian235
  • 浏览: 61395 次
  • 性别: 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
分享到:
评论
发表评论

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

相关推荐

    Aj_02的Android 中自定义View的应用(源码)

    来自:http://blog.csdn.net/Android_Tutor/archive/2010/04/18/5499731.aspx 测试:Android 中自定义View的应用,在main.xml中嵌入自己写的view

    eExplorer:Eclipse插件可嵌入Windows资源管理器并使其与您的工作保持同步

    eExplorer是一个Eclipse插件,用于嵌入Windows资源管理器并使其与您的工作保持同步。 特征 与Project Explorer,Package Explorer和Git Repositories View同步 面包屑导航到任何文件夹或预览文件(Internet ...

    Android代码-RecylerViewMultiHeaderView

    RecyclerView头View的ViewGroup,支持与WebView,Video,View 嵌套使用 特性 webView完美嵌入RecyclerView RecyclerView和webView之间滑动惯性传递 滑动RecyclerView中视频切换为mini小屏 优化过渡绘制卡顿的问题 ...

    Android代码-WheelView

    Use the WheelView as a View, Java and XML are both supported. Java: public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCre

    ELinkageScroll:多子视图嵌入滚动通用解决方案

    多子视图嵌入滚动通用解决方案 演示运行效果 使用方法 XML文件 &lt;? xml version = " 1.0 " encoding = " utf-8 " ?&gt; &lt;!-- 第1个子view --&gt; &lt; com .baidu.elinkagescroll.view.LWebView android : ...

    安卓编程与应用

    几乎所有的 activity 都要 和用户打交道,所以 activity 类创建了一个窗口,可以通过 setContentView(View)接口把 UI 放到 activity 创建的窗口上,当 activity 指向全屏窗口时,也可以用其他方式实现:作为漂浮窗口...

    UnityTest:在后台测试中运行

    有多种方法可以实现此目的,“ Ultimate”分支通过将UnityPlayer视图和Android应用程序嵌入单独的片段中进行处理,而“ Master”品牌的实现则采用了将UnityPlayer约束到特定位置的更简单方法android.view.View对象...

    《Android应用开发》个人总结报告.doc

    具体细节不想说了,可以参考 Samples里的ApiDemos/View,和View的Doc,以及Implementing a UI这篇Doc。其他还有很多,感觉算是SDK讲述的最多的内容。 从控件的使用上,和网页的设计类似,尽量用parent_width之类的...

    MVPDemo:MVP模式有什么好处?代码的可阅读性-Presenter被抽象成接口,可以有多种具体的实现,所以方便进行单元测试-将业务逻辑抽到Presenter中去,避免后台引用引用活动导致活动的资源无法被系统回收从而引起内存容量和OOM

    承担View的是XML,Activity和Fragment,逻辑代码控制器也在Activity和Fragment中并没有单独提取出来,其实这样的MVC我们也可以看成是MV模式,如右图可见MVP模式在Android项目中,Activity和Fragment嵌入了大部分的...

    Android开发入门之Appwidget用法分析

    App Widgets 是一个小型应用程序的View 他可以嵌入到其他应用程序中(如 桌面程序) 并且可以得到周期性刷新。 在创建App Widget之前需要了解以下几个概念 AppWidgetProviderInfo对象 它是对App Widget 元数据的一个...

    新版Android开发教程.rar

    � 源代码完全开放,便于开发人员更清楚的把握实现细节,便于提高开发人员的技术水平,有利于开发 出 更具差异性的应用。 � 采用了对有限内存、电池和 CPU 优化过的虚拟机 Dalvik , Android 的运行速度比想象的要...

    AmChart中文API

    view plaincopy to clipboardprint? deconcept util getRequestParameter(_2b) // 取得url参数value。_2b是URL的key。 SWFObjectUtil getPlayerVersion() // 取得版本号对象。major.minor.rev。 cleanupSWFs()...

    Android中使用include标签和merge标签重复使用布局

    为了高效复用完整布局,你可以使用和标签嵌入另一个布局到当前布局。所以当你通过写一个自定义视图创建独立UI组件,你可以放到一个布局文件里,这样更容易复用。 复用布局因为其允许你创建可复用的复杂布局而显得...

    asp.net知识库

    在C#里把ArrayList转换为Array 或 把Array转换为ArrayList C# 2.0 在.NET 2.0中,让你的组件也可以绑定 .NET20 一种简单的窗口控件UI状态控制方法 翻译MSDN文章 —— 泛型FAQ:最佳实践 Visual C# 3.0 新特性概览 C#...

    Google Android SDK开发范例大全(PDF高清完整版3)(4-3)

    Google Android SDK开发范例大全(完整版)共4个分卷 目录 第1章 了解.深入....1.1 红透半边天的Android 1.2 本书目的及涵盖范例范围 1.3 如何阅读本书 ...10.7 掷杯筊——把手机放在空中甩事件处理...

    Google Android SDK开发范例大全(PDF完整版4)(4-4)

    Google Android SDK开发范例大全(完整版)共4个分卷 目录 第1章 了解.深入....1.1 红透半边天的Android 1.2 本书目的及涵盖范例范围 1.3 如何阅读本书 ...10.7 掷杯筊——把手机放在空中甩事件处理...

    Google Android SDK开发范例大全(PDF高清完整版1)(4-1)

    Google Android SDK开发范例大全(完整版)共4个分卷 目录 第1章 了解.深入....1.1 红透半边天的Android 1.2 本书目的及涵盖范例范围 1.3 如何阅读本书 ...10.7 掷杯筊——把手机放在空中甩事件处理...

    swing界面设计之JTree

    创建 Spring app-context.xml bean 定义文件 19 运行应用程序 20 定义 bean 属性 21 创建 to-do 列表:创建一个可重用组件并在表中显示数据 23 创建一个可重用的面板 23 将 bean 组合在一起 24 添加一个表并重用这个...

Global site tag (gtag.js) - Google Analytics