当前位置:  编程技术>移动开发
本页文章导读:
    ▪jquery 取id以jq_开端,2,4结尾的对像        jquery 取id以jq_开头,2,4结尾的对像 $("div[id^='jq_'][id$='2']").add("div[id^='jq_'][id$='4']"); ......
    ▪ 仿众人网右边可推出的效果(带拖动)        仿人人网右边可推出的效果(带拖动) 添加了拖动功能,按住小图标,拖动超过一半的时候打开,没到一半的时候关闭。只添加了OnGestureListener接口和OnTouchListener。具体代码看下面: packag.........
    ▪ sencha touch2学习札记(三)-form表单容器及其子组件       sencha touch2学习笔记(三)----form表单容器及其子组件     原文链接:http://chennaigong.iteye.com/blog/1546309   sencha touch2封装了很多的UI组件,今天标记下学过的组件---formPanel。var formPanel=Ext.create(   它.........

[1]jquery 取id以jq_开端,2,4结尾的对像
    来源: 互联网  发布时间: 2014-02-18
jquery 取id以jq_开头,2,4结尾的对像
$("div[id^='jq_'][id$='2']").add("div[id^='jq_'][id$='4']");

    
[2] 仿众人网右边可推出的效果(带拖动)
    来源: 互联网  发布时间: 2014-02-18
仿人人网右边可推出的效果(带拖动)
添加了拖动功能,按住小图标,拖动超过一半的时候打开,没到一半的时候关闭。只添加了OnGestureListener接口和OnTouchListener。
具体代码看下面:
package com.dl.test;

import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.ViewTreeObserver;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout.LayoutParams;

public class App extends Activity implements OnPanelStatusChangedListener,OnTouchListener,GestureDetector.OnGestureListener{
	private boolean hasMeasured=false;
	private LinearLayout layout_left;
	private LinearLayout layout_right;
	private ImageView iv;
	
	private int layout_left_width,layout_right_width=0;
	/**每次自动展开/收缩的范围*/  
	private int MAX_WIDTH=0;
	/**每次自动展开/收缩的速度*/  
    private final static int SPEED=20;
    
    private GestureDetector mGestureDetector;
	private boolean isScrolling=false;
	private float mScrollX;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
      		
        layout_left=(LinearLayout)findViewById(R.id.layout_left);
        layout_right=(LinearLayout)findViewById(R.id.layout_right);
        iv=(ImageView)findViewById(R.id.iv);
        
        iv.setOnTouchListener(this);
        //定义手势识别
  		mGestureDetector = new GestureDetector(this,this);
  		mGestureDetector.setIsLongpressEnabled(false);
  		
        calculatorWidth();
        
    }
    
    
    @Override
	protected void onResume() {
		// TODO Auto-generated method stub
		super.onResume();
		
	}

	@Override
	public void onAttachedToWindow() {
		// TODO Auto-generated method stub
		super.onAttachedToWindow();
	}

	private void calculatorWidth(){
		 ViewTreeObserver observer = layout_right.getViewTreeObserver();
		//为了取得控件的宽
//       observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
//           @Override
//           public void onGlobalLayout() {
//		        if (hasMeasured == false){
//		        	layout_right_width = layout_right.getMeasuredWidth();//105
//		            layout_left_width=layout_left.getMeasuredWidth();//480
//		            MAX_WIDTH=layout_left_width-layout_right_width;//375
//		            hasMeasured = true;
//		        }
//           }
//       });
       //为了取得控件的宽
       observer.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener(){
           public boolean onPreDraw(){
               if (hasMeasured == false){
               	layout_right_width = layout_right.getMeasuredWidth();
                   layout_left_width=layout_left.getMeasuredWidth();
                   MAX_WIDTH=layout_left_width-layout_right_width;
//                   Log.i("tag", "MAX_WIDTH=="+MAX_WIDTH);
                   hasMeasured = true;

//设置可拉动容器的宽为全屏(即不可拉动容器)的宽
                   View layout_max_width=findViewById(R.id.layout_max_width);
                   LinearLayout.LayoutParams lp=(LinearLayout.LayoutParams)layout_max_width.getLayoutParams();
                   lp.width=layout_left_width;
                   layout_max_width.setLayoutParams(lp);
               }
               return true;
           }
       });
	}
	class AsynMove extends AsyncTask<Integer, Integer, Void> {  
    	  
        @Override  
        protected Void doInBackground(Integer... params) {  
            int times;  
            if (MAX_WIDTH % Math.abs(params[0]) == 0)// 整除  
                times = MAX_WIDTH / Math.abs(params[0]);  
            else  
                times = MAX_WIDTH / Math.abs(params[0]) + 1;// 有余数  
  
            for (int i = 0; i < times; i++) {  
                publishProgress(params);  
                try {  
                    Thread.sleep(Math.abs(params[0]));  
                } catch (InterruptedException e) {  
                    // TODO Auto-generated catch block  
                    e.printStackTrace();  
                }  
            }  
            return null;  
        }  
  
        @Override  
        protected void onProgressUpdate(Integer... params) {
            LayoutParams lp = (LayoutParams)layout_right.getLayoutParams();
            if (params[0] < 0)  
                lp.leftMargin = Math.max(lp.leftMargin + params[0], 0);
            else  
                lp.leftMargin = Math.min(lp.leftMargin + params[0], MAX_WIDTH);
  
            if(lp.leftMargin<=0){//展开之后  
                onPanelOpened();//调用OPEN回调函数  
            }
            else if(lp.leftMargin>=MAX_WIDTH){//收缩之后  
                onPanelClosed();//调用CLOSE回调函数  
            }
            layout_right.setLayoutParams(lp);  
        }  
    }

	@Override
	public void onPanelOpened() {
		// TODO Auto-generated method stub
//		Log.i("tag", "=========onPanelOpened========");
	}

	@Override
	public void onPanelClosed() {
		// TODO Auto-generated method stub
//		Log.i("tag", "=========onPanelClosed========");
	}

	@Override
	public boolean onDown(MotionEvent e) {
		// TODO Auto-generated method stub
		mScrollX=0;
		isScrolling=false;
		return true;//需要返回ture才能触发onSingleTapUp
	}

	@Override
	public void onShowPress(MotionEvent e) {
		// TODO Auto-generated method stub
	}

	@Override
	public boolean onSingleTapUp(MotionEvent e) {
		// TODO Auto-generated method stub
		LayoutParams lp = (android.widget.RelativeLayout.LayoutParams)layout_right.getLayoutParams();
		
		if (lp.leftMargin >=MAX_WIDTH)// CLOSE的状态  
            new AsynMove().execute(new Integer[] { -SPEED });// 负数展开  
        else if (lp.leftMargin >= 0)// OPEN的状态  
            new AsynMove().execute(new Integer[] { SPEED });// 正数收缩
		return true;
	}

	@Override
	public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
			float distanceY) {
		// TODO Auto-generated method stub
		isScrolling=true;
		mScrollX+=distanceX;//distanceX:向左为正,右为负
		LayoutParams lp = (LayoutParams)layout_right.getLayoutParams();
		lp.leftMargin=lp.leftMargin-(int)mScrollX;
		if(lp.leftMargin<=0){//展开之后  
			isScrolling=false;//拖过头了不需要再执行AsynMove了
			lp.leftMargin=0;
			onPanelOpened();//调用OPEN回调函数  
		}
		if(lp.leftMargin>=MAX_WIDTH){//收缩之后  
			isScrolling=false;
			lp.leftMargin=MAX_WIDTH;
			onPanelClosed();//调用CLOSE回调函数  
		}
		layout_right.setLayoutParams(lp);
		
		return false;
	}

	@Override
	public void onLongPress(MotionEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
			float velocityY) {
		// TODO Auto-generated method stub
		return false;
	}
	@Override
	public boolean onTouch(View v, MotionEvent event) {
		// TODO Auto-generated method stub
		//拖到一半放开手指时的运动
		if(event.getAction()==MotionEvent.ACTION_UP && isScrolling==true){
			LayoutParams lp=(LayoutParams) layout_right.getLayoutParams();
			if (lp.leftMargin >= (MAX_WIDTH>>1)) {//往左没超过一半
				new AsynMove().execute(new Integer[] { SPEED });
			} 
			else{
				new AsynMove().execute(new Integer[] { -SPEED });
			}
		}
		return mGestureDetector.onTouchEvent(event); 
	}  
      
    
}

其他都和这里的一样。
1 楼 weisi2375 2012-06-11  
下来看看。 呵呵
2 楼 qi19901212 2012-06-20  
没图片啊。望楼主添加

    
[3] sencha touch2学习札记(三)-form表单容器及其子组件
    来源: 互联网  发布时间: 2014-02-18
sencha touch2学习笔记(三)----form表单容器及其子组件

 

 

原文链接:http://chennaigong.iteye.com/blog/1546309

 

sencha touch2封装了很多的UI组件,今天标记下学过的组件---formPanel。var formPanel=Ext.create(

 

它的包名为Ext.form.Panel。所以创建的时候代码如下:

 

 

	"Ext.form.Panel",
		{
			fullscreen:true,
			items:[
			{}
                       ]
                 })
items里可嵌套入很多组件,这里我嵌入了很基本的一些组件。代码如下:

Ext.application(
{
	name:"sencha",
	launch:function()
	{
		var spinner = Ext.create('Ext.field.Spinner', {
		    label: '步骤加1',
		    minValue: 0,
		    maxValue: 10,
		    increment: 2,
		    cycle: true
		});
		var formPanel=Ext.create(
		"Ext.form.Panel",
		{
			fullscreen:true,
			items:[
			{
				xtype:"fieldset",
				items:[
				{
					xtype:"textfield",
					name:"name",
					label:"姓名"
				},
				{
					xtype:"emailfield",
					name:"email",
					label:"邮箱"
				},
				{
					xtype:"passwordfield",
					name:"password",
					label:"密码"
				},
				{
                    xtype: 'numberfield',
                    label: '数字',
                    minValue: 18,
                    maxValue: 150,
                    name: 'age'
                },
                {
		            xtype: 'radiofield',
		            name : 'color',
		            value: 'red',
		            label: '红色',
		            checked: true
		        },
		        {
		            xtype: 'radiofield',
		            name : 'color',
		            value: 'green',
		            label: '绿色'
		        },
		        {
		            xtype: 'radiofield',
		            name : 'color',
		            value: 'blue',
		            label: '蓝色'
		        },
		        {
                    xtype: 'selectfield',
                    label: '选择框',
                    options: [
                        {text: '条件1',  value: 'first'},
                        {text: '条件2', value: 'second'},
                        {text: '条件3',  value: 'third'}
                    ]
                },
                {
		            xtype: 'sliderfield',
		            label: '拖动框',
		            value: 50,
		            minValue: 0,
		            maxValue: 100
		        },spinner,
		        {
                    xtype: 'textareafield',
                    label: '区域文本',
                    maxRows: 4,
                    name: 'bio'
                },
                {
                    xtype: 'urlfield',
                    label: '网站路径',
                    name: 'url'
                }
				]
			}
			
			
			]
		}
		)
		formPanel.add(
		{
			xtype:"toolbar",
			dock:"bottom",
			layout:
			{
				pack:"center"
			},
			items:[
			{
				xtype:"button",
				text:"填写数据",
				handler:function()
				{
					formPanel.setValues(
					{
						name:"陈乃共",
						email:"123@11.com",
						password:"123"
					}
					)
				}
			},
			{
				xtype:"button",
				text:"获取数据",
				handler:function()
				{
					Ext.Msg.alert("hah",JSON.stringify(formPanel.getValues(),null,2));
				}
			},
			{
				xtype:"button",
				text:"清空数据",
				handler:function()
				{
					formPanel.reset();
				}
			}
			]
		}
		)
		Ext.Viewport.add(formPanel);
		
		
	}
}
)
 呵呵,创建组件的写法都很简单的。具体另外要加入的属性可查看官方提供的api文档。

    
最新技术文章:
▪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