当前位置:  编程技术>移动开发
本页文章导读:
    ▪动态的向格局中添加布局控件实现ListView效果列表项效果        动态的向布局中添加布局控件实现ListView效果列表项效果 因为接触Android时间不久,公司项目中要用到ListView嵌套EditView,但是本人水平有限,无法解决两种控件之间的各种问题,无奈之下,.........
    ▪ 真分页查询时点击下一页要将查询条件再度传给Controller        真分页查询时点击下一页要将查询条件再次传给Controller 1)多条件查询(多个条件在一个对象中) 真分页查询就是每点击下一页时,程序就要再次查询数据库,但查询的起点是从上一次查询.........
    ▪ View 相干       View 相关   转载文字http://hunankeda110.iteye.com/blog/890829    surfaceView 与View 的区别 如果你的游戏不吃CPU,用View就比较好,符合标准Android操作方式,由系统决定刷新surface的时机。但如果很不幸的.........

[1]动态的向格局中添加布局控件实现ListView效果列表项效果
    来源: 互联网  发布时间: 2014-02-18
动态的向布局中添加布局控件实现ListView效果列表项效果
因为接触Android时间不久,公司项目中要用到ListView嵌套EditView,但是本人水平有限,无法解决两种控件之间的各种问题,无奈之下,希望另辟蹊径,可以实现类似效果。
翻阅了一段时间的资料后,发现动态的向LinearLayout中添加iten布局文件, 也可以实现类似效果,而且控制起来更灵活,特将代码标记一下,方便大家交流。代码如下:
首先是两个布局文件main.xml和testitem.xml

main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
	android:layout_width="fill_parent"
	android:layout_height="wrap_content"
	>
	<LinearLayout
	    android:orientation="vertical"
	    android:layout_width="fill_parent"
	    android:layout_height="fill_parent"
	    android:id="@+id/testline1"
	    >

	</LinearLayout>
</RelativeLayout>


testitem.xml,此布局文件为主布局文件的item
<?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="wrap_content"
	android:orientation="horizontal"
	>
 	<TextView
 	    android:id="@+id/text1"
 	    android:layout_width="wrap_content"
 	    android:layout_height="wrap_content"
 	    android:textColor="#FFFFFF"
 	    android:textSize="16sp"
 	    />
 	<EditText 
 	    android:id="@+id/edit1"
 	    android:layout_width="wrap_content"
 	    android:layout_height="35dip"
 	    android:textColor="#000000"
 	    android:textSize="16sp"
 	    android:hint="1"
 	    />
 	<Button 
 	    android:id="@+id/but1"
 	    android:layout_width="wrap_content"
 	    android:layout_height="35dip"
 	    android:textColor="#000000"
 	    android:textSize="16sp"
 	    />
 	    
</LinearLayout>


Acitvity主要代码文件:OneTestActivity.java
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;

public class OneTestActivity extends Activity {
	private LinearLayout mainline;//主布局
	private View itemview;//要添加的列表项
	private Button but1;
	private EditText edit1;
	private TextView text1;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		//获取主布局
		mainline = (LinearLayout)findViewById(R.id.testline1);
		//这里利用循环将所需要的布局加进去,可以在此循环中给控件赋值
		for(int i=0;i<5;i++){
			//实例化item布局
			itemview = View.inflate(this, R.layout.testitem,null);
			//给item布局添加ID,此ID为int类型任意值
			itemview.setId(i);
			mainline.addView(itemview);
			//此时获取的控件必须为列表项itemview中的控件
			but1 = (Button)itemview.findViewById(R.id.but1);
			but1.setText("按钮:"+i);
			edit1 = (EditText)itemview.findViewById(R.id.edit1);
			edit1.setText("编辑框:"+i);
			text1 = (TextView)itemview.findViewById(R.id.text1);
			text1.setText("文本:"+i);
		}
	}
	
}

在for循环中可以对每个Item进行操作,这样就实现了ListView的类似效果,因为是刚试验出来的,可能有些东西还未考虑完全,如果后续发现,会慢慢补充。

代码附件在下面。

    
[2] 真分页查询时点击下一页要将查询条件再度传给Controller
    来源: 互联网  发布时间: 2014-02-18
真分页查询时点击下一页要将查询条件再次传给Controller

1)多条件查询(多个条件在一个对象中)

真分页查询就是每点击下一页时,程序就要再次查询数据库,但查询的起点是从上一次查询的下一条开始。在第一次查询时,条件肯定是可以传过去的,在点下一页的时候:

<@p.pager pager = ordersListPage  baseUrl = "/order/pageOrderList.htm?orderId=${orderId}&orderType=${orderType}&startTime=${startTime}&endTime=${endTime}&phone=${phone}" parameterMap = parameterMap />

 

URL中将所要查询的条件都要传给Controller,在Controller代码如下:

 @RequestMapping("/pageOrderList")
    public String pageQuery(VgsBackstageOrderQueryParam pageQueryParam, ModelMap model) {
        String orderType = pageQueryParam.getOrderType();
        Logger log = LoggerFactory.getLogger(this.getClass());
        log.info("the info is" + pageQueryParam.getPageNumber());
        log.info("the info is" + pageQueryParam.getOrderId());

        QueryResult<BackstageDTO> queryResult = backstageOrderService
                .pageQueryOrderList(pageQueryParam);
        if (null == queryResult.getDatas() || queryResult.getDatas().size() == 0) {
            model.addAttribute("noResult", true);
        }

        model.addAttribute("orderList", queryResult.getDatas());
        model.put("ordersListPage", queryResult);
        model.addAttribute("orderId", pageQueryParam.getOrderId())
                .addAttribute("orderType", orderType)
                .addAttribute("phone", pageQueryParam.getPhone())
                .addAttribute("startTime", pageQueryParam.getStartTime())
                .addAttribute("endTime", pageQueryParam.getEndTime());

        return "backstage/orderList.ftl";

    }

 

1)多条件查询(没有将多个条件定义在一个对象中)

在页面中:

<@p.pager pager = param  baseUrl = "/BCS/findCustomerByParam_${customerName}_${customerSex}_${customerCompany}_${customerTel}.htm" parameterMap = parameterMap /> 

在Controller中:

@RequestMapping("/findCustomerByParam_{customerName}_{customerSex}_{customerCompany}_{customerTel}")
 // 从页面传来客户的多个条件
 public String findCustomerByParam(
   @PathVariable("customerName") String customerName,
   @PathVariable("customerSex") String customerSex,
   @PathVariable("customerCompany") String customerCompany,
   @PathVariable("customerTel") String customerTel, ModelMap model,
   PageQueryParam param) {

. . . . . . 

}

 

用@PathVariableURL占位符来设置页面传过来的条件,注意@RequestMapping中的写法。


    
[3] View 相干
    来源: 互联网  发布时间: 2014-02-18
View 相关

 

转载文字http://hunankeda110.iteye.com/blog/890829 

 

surfaceView 与View 的区别

如果你的游戏不吃CPU,用View就比较好,符合标准Android操作方式,由系统决定刷新surface的时机。
但如果很不幸的,你做不到不让你的程序吃CPU,你就只好使用SurfaceView来强制刷新surface了,不然系统的UI进程很可能抢不过你那些吃CPU的线程。

当然其实不止这两种方法来刷新Surface的,这两种只是纯java应用比较常见的方法。

SurfaceView和View最本质的区别在于,surfaceView是在一个新起的单独线程中可以重新绘制画面而View必须在UI的主线程中更新画面。
那么在UI的主线程中更新画面 可能会引发问题,比如你更新画面的时间过长,那么你的主UI线程会被你正在画的函数阻塞。那么将无法响应按键,触屏等消息。

当使用surfaceView 由于是在新的线程中更新画面所以不会阻塞你的UI主线程。但这也带来了另外一个问题,就是事件同步。比如你触屏了一下,你需要surfaceView中thread处理,一般就需要有一个event queue的设计来保存touch event,这会稍稍复杂一点,因为涉及到线程同步。

所以基于以上,根据游戏特点,一般分成两类。

1 被动更新画面的。比如棋类,这种用view就好了。因为画面的更新是依赖于 onTouch 来更新,可以直接使用 invalidate。 因为这种情况下,这一次Touch和下一次的Touch需要的时间比较长些,不会产生影响。

2 主动更新。比如一个人在一直跑动。这就需要一个单独的thread不停的重绘人的状态,避免阻塞main UI thread。所以显然view不合适,需要surfaceView来控制。

 

 

View  自定义 :

使用自定义View的两种基本方法

1 java代码:  setContentView(new HelloView(this)); 缺乏灵活

2   xml 布局 :<com.test.HelloView

                 属性

  • android:layout_width="fill_parent"  
  •         android:layout_height="wrap_content"   
  •         my:textColor="#"   
  •         my:textSize="22dp"  
  •                  />

         2.1 <?xml version="1.0" encoding="utf-8"?>

    <resources>

    <declare-styleable name="MyView">

    <attr name="textColor" format="color"/>

    <attr name="textSize" format="dimension"/>

    </declare-styleable>

    </resources>

     

       2.2 构造函数

     

     

  •  public MyView(Context context, AttributeSet attrs){  
  •         super(context, attrs);  
  •         mPaint = new Paint();  
  •         //TypedArray是一个用来存放由context.obtainStyledAttributes获得的属性的数组  
  •         //在使用完成后,一定要调用recycle方法  
  •         //属性的名称是styleable中的名称+“_”+属性名称  
  •         TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.MyView);  
  •         int textColor = array.getColor(R.styleable.MyView_textColor, 0XFF00FF00); //提供默认值,放置未指定  
  •         float textSize = array.getDimension(R.styleable.MyView_textSize, 36);  
  •         mPaint.setColor(textColor);  
  •         mPaint.setTextSize(textSize);  
  •           
  •         array.recycle(); //一定要调用,否则这次的设定会对下次的使用造成影响  
  •     }  
  •  

     


        
    最新技术文章:
    ▪Android开发之登录验证实例教程
    ▪Android开发之注册登录方法示例
    ▪Android获取手机SIM卡运营商信息的方法
    ▪Android实现将已发送的短信写入短信数据库的...
    ▪Android发送短信功能代码
    ▪Android根据电话号码获得联系人头像实例代码
    ▪Android中GPS定位的用法实例
    ▪Android实现退出时关闭所有Activity的方法
    ▪Android实现文件的分割和组装
    ▪Android录音应用实例教程
    ▪Android双击返回键退出程序的实现方法
    ▪Android实现侦听电池状态显示、电量及充电动...
    ▪Android获取当前已连接的wifi信号强度的方法
    ▪Android实现动态显示或隐藏密码输入框的内容
    ▪根据USER-AGENT判断手机类型并跳转到相应的app...
    ▪Android Touch事件分发过程详解
    ▪Android中实现为TextView添加多个可点击的文本
    ▪Android程序设计之AIDL实例详解
    ▪Android显式启动与隐式启动Activity的区别介绍
    ▪Android按钮单击事件的四种常用写法总结
    ▪Android消息处理机制Looper和Handler详解
    ▪Android实现Back功能代码片段总结
    ▪Android实用的代码片段 常用代码总结
    ▪Android实现弹出键盘的方法
    ▪Android中通过view方式获取当前Activity的屏幕截...
    ▪Android提高之自定义Menu(TabMenu)实现方法
    ▪Android提高之多方向抽屉实现方法
    ▪Android提高之MediaPlayer播放网络音频的实现方法...
    ▪Android提高之MediaPlayer播放网络视频的实现方法...
    ▪Android提高之手游转电视游戏的模拟操控
     


    站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3