当前位置:  编程技术>移动开发
本页文章导读:
    ▪排序算法-归并排序        排序算法---归并排序 #include <stdio.h> void merge(int a[], int tmp[],int pleft, int pright, int rightend) { int leftend=pright-1; int num=rightend-pleft+1; int pos=pleft; while(pleft<=leftend &&am.........
    ▪ 技术人创业建站容易指南(Version 0.03)        技术人创业建站简略指南(Version 0.03) 0. 信用卡确保有一张具备境外支付功能信用卡。这一点我想不是难事,就算是在校的学生,申请信用卡的门 槛也小了很多。现在各个银行发信用卡都是求.........
    ▪ 应用ViewFlipper和Gesture实现手势切换       使用ViewFlipper和Gesture实现手势切换         ViewFlipper继承FrameLayout,完全可以把它当成一种FrameLayout,只是多了一种功能,很方便的实现在不同的层中实现切换,还可以设置一些动画。废.........

[1]排序算法-归并排序
    来源: 互联网  发布时间: 2014-02-18
排序算法---归并排序

#include <stdio.h>
void merge(int a[], int tmp[],int pleft, int pright, int rightend)
{
        int leftend=pright-1;
        int num=rightend-pleft+1;
        int pos=pleft;
        while(pleft<=leftend && pright<=rightend)
        {
                if(a[pleft]<=a[pright])
                        tmp[pos++]=a[pleft++];
                else
                        tmp[pos++]=a[pright++];
        }
        while(pleft<=leftend)
                tmp[pos++]=a[pleft++];
        while(pright<=rightend)
                tmp[pos++]=a[pright++];
        int i;
        for(i=0;i<num;i++,rightend--)
                a[rightend]=tmp[rightend];
}
void msort(int a[], int tmp[], int left, int right)
{
        int mid=(left+right)/2;
        if(left<right)
        {
                msort(a,tmp,left,mid);
                msort(a,tmp,mid+1,right);
                merge(a,tmp,left,mid+1,right);
        }
}
void merge_sort(int a[], int n)
{
        int tmp=malloc(n*sizeof(int));
        if (tmp!=NULL)
        {
                msort(a,tmp,0,n-1);
                free(tmp);
        }
        else
                printf("error!\n");
}
 

    
[2] 技术人创业建站容易指南(Version 0.03)
    来源: 互联网  发布时间: 2014-02-18
技术人创业建站简略指南(Version 0.03)
0. 信用卡

确保有一张具备境外支付功能信用卡。这一点我想不是难事,就算是在校的学生,申请信用卡的门 槛也小了很多。现在各个银行发信用卡都是求着用户的,申请的时候问清是否具备外币支付能力就 好了。有了信用卡之后,你可以较为方便的申请 Paypal 、App Store 帐户、Google Checkout... 有了信用卡之后,你可以大大方方的收美元了 -- 如果你是面向非中国用户的话。

1. 购买域名

不要在国内的域名提供商那里购买域名。为了一时方便以后你会付出更多的代价,你可以看一下这 里的血泪史。购买域名,我建议在 Godaddy 上购买就可以,顺便说一下,GoDaddy 也支持支付宝。如何买到好的域名?我没办法告诉你(如果你要从别人手里购买域名的话,可以看一下4.cn).域名备案怎么办?如果你的内容不是特别敏感的话,不备案可能问题也不大,低调一点,别自己往 墙上撞。

2. 主机服务

有了域名之后,那么购买主机就要提上日程。建议用 Linode 的 VPS 服务,价格不算贵,关键是容易上手,相对比较稳定,Linode 在东京的 IDC 访问速度居然...和国内某些 IDC 差不多。有些做技术的朋友,可能自己手头有个主机什么的,尽量不要托管在 IDC 了,机器硬件坏了或是被拔了网线,会让你很闹心。如果你的Web应用已经写的差不多了,购买主机之后不妨进行部署,在线测试。如果应用正式上线,那么不妨买一个备份服务,每个月5美元而已。有了境外的 VPS 的一个好处是,你可以通过 VPS 「fanqiang」,锻炼一下腿脚。怎么做,搜索一下就知道了。如果要简单的优化一下 VPS ,

备选: Slicehost

3. 域名解析

为什么要单独提 DNS 解析?GoDaddy 和 Linode 都提供 DNS 解析能力,不过,域名在哪里注册的和域名在哪里解析是两回事。重要的是,DNS 修改之后的有效验证是个不小的问题,还有一个是影响因素 DNS 解析速度,所以,有必要启用智能 DNS 解析服务,DNSPod 做的相当不错。用了之后你就知道,而且,没有副作用

4. 静态文件

服务器在境外,经常遇到的一个性能瓶颈静态文件(尤其是图片)的访问速度上不来,而恰好你的应用要存储较多的静态文件的话,不妨研究一下 UpYun 的服务。如果你是个开发者,你会体会到一定的妙处,去看看又拍云的 API,你会喜欢的。重要的是,价格也可控制。

阅读: 又拍云实战

备选: CloudFlare(如果你的服务是面向国外用户的话)

5. 运维监控

即使是最简单的站点也有必要关注可访问性,监控机器运行状态。推荐监控宝的免费服务,足以满足小型个人站点对于监控的要求。Google Analytics 和 Google Webmasters 有必要启用。百度的统计服务最近一段时间也越做越好。

6. 邮件方案

如果是做邮件托管的话,也就是你的站点本身的邮件帐户,Google Apps 是不二之选。如果需要发邮件给你站点的注册用户,或者做小规模的 DM , 在 Linode 上启用 EXIM 就差不多了。

备选: 网易免费企业邮局/腾讯企业邮箱

7. 字体问题

如果你的项目需要较多的设计工作,不可避免的要用到一些商业字体,如果想避免收到律师信或是勒索信的话,建议使用造字工房的字体,性价比非常高。

N. 接下来呢?

下一步该做什么?或许有必要成为 Github 的付费用户,开发、部署、上线、推广...等你到了一定规模,咱们再来第二季。

    
[3] 应用ViewFlipper和Gesture实现手势切换
    来源: 互联网  发布时间: 2014-02-18
使用ViewFlipper和Gesture实现手势切换
        ViewFlipper继承FrameLayout,完全可以把它当成一种FrameLayout,只是多了一种功能,很方便的实现在不同的层中实现切换,还可以设置一些动画。废话不说了,直接上代码

    main.xml,我在ViewFlipper中设置了一个Button,但是必须取消Clickable才能让ViewFlipper捕捉到onTouch事件,原因可参考文章:http://orgcent.com/android-touch-event-mechanism/

<?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="fill_parent"
    android:orientation="vertical" >
    
	<Button android:id="@+id/button" android:text="Click Me"
	    android:layout_width="fill_parent" android:layout_height="wrap_content" />


<!--在ViewFlipper中定义3个控件, TextView, TextView和Button-->

    <ViewFlipper android:id="@+id/flipper" android:longClickable="true"
        android:layout_width="fill_parent" android:layout_height="0px" android:layout_weight="1">
        
        <TextView android:text="00000000000"
            android:layout_width="fill_parent" android:layout_height="fill_parent"
            android:background="@android:color/background_dark" />
        
        <TextView android:text="11111111111"
            android:layout_width="fill_parent" android:layout_height="fill_parent"
            android:background="@android:color/background_light" />
        
        <Button android:text="Click Me" android:clickable="false"
	    	android:layout_width="fill_parent" android:layout_height="fill_parent" />
    </ViewFlipper>

    <TextView android:id="@+id/footer"  android:background="#0000FF"
        android:layout_width="fill_parent" android:layout_height="100dp"/>
</LinearLayout>


    切换是用的的4个动画,直接用的是网上的,感谢原作者。 http://blog.csdn.net/yzhyutian/article/details/6236504

    1.push_left_in.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
	<translate android:fromXDelta="100%p" android:toXDelta="0"
		android:duration="500" />
	<alpha android:fromAlpha="0.1" android:toAlpha="1.0"
		android:duration="500" />
</set>

    2.push_left_out.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
	<translate android:fromXDelta="0" android:toXDelta="-100%p"
		android:duration="500" />
	<alpha android:fromAlpha="1.0" android:toAlpha="0.1"
		android:duration="500" />
</set>


    3.push_right_in.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
	<translate android:fromXDelta="-100%p" android:toXDelta="0"
		android:duration="500" />
	<alpha android:fromAlpha="0.1" android:toAlpha="1.0"
		android:duration="500" />
</set>


    4.push_right_out.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
	<translate android:fromXDelta="0" android:toXDelta="100%p"
		android:duration="500" />
	<alpha android:fromAlpha="1.0" android:toAlpha="0.1"
		android:duration="500" />
</set>


    ViewFlipperActivity.java,需要实现两个接口OnTouchListener, OnGestureListener,首先通过OnTouchListener识别出Touch事件,并将事件交给GestureDetector,然后OnGestureListener就能判断出是哪一种手势了。
package com.ipjmc.viewflipper;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.GestureDetector;
import android.view.GestureDetector.OnGestureListener;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.view.ViewGroup.LayoutParams;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.TextView;
import android.widget.ViewFlipper;

public class ViewFlipperActivity extends Activity implements OnTouchListener, OnGestureListener {
    /** Called when the activity is first created. */
	
	public static final String TAG = "ViewFlipper";
	Button mButton;
	ViewFlipper mFlipper;
	TextView mFooter;
	GestureDetector mDetector;
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

		Log.i(TAG, "onCreate");
        mFlipper = (ViewFlipper) findViewById(R.id.flipper);
        mFlipper.setOnTouchListener(this); //注册OnTouch监听器
        
        //本来需要设置LongClickable,否则无法捕捉到touch事件,因为在xml中已经设置了,这里就不需要了。
        //mFlipper.setLayoutParams(true);
        
        mButton = (Button) findViewById(R.id.button);
        mButton.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				mFlipper.showNext();
			}
		});
        
		//mFooter只是用来做一些事件捕获的测试用的,无视好了
        mFooter = (TextView) findViewById(R.id.footer);
        mFooter.setOnTouchListener(this);
        
		//用OnGestureListener初始化一个Detector,用于识别手势,OnGestureListener的每一个方法代表识别出的每一个手势
        mDetector = new GestureDetector(this); 
    }

	@Override
	public boolean onDown(MotionEvent e) {
		// TODO Auto-generated method stub
		return false;
	}

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

	@Override
	public boolean onSingleTapUp(MotionEvent e) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
			float distanceY) {
		// TODO Auto-generated method stub
		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) {
		Log.i(TAG, "Fling Happened!");  
        if (e1.getX() - e2.getX() > 120) {  
            mFlipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_in));  
            mFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_out));  
            mFlipper.showNext();  
            return true;  
        } else if (e1.getX() - e2.getX() < -120) {  
            mFlipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.push_right_in));  
            mFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.push_right_out));  
            mFlipper.showPrevious();  
            return true;  
        }  
		return false;
	}

	/*
	 * 在OnTouchListener.onTouch(),将事件交给GestureDetector.onTouchEvent()处理,由GestureDetector识别是哪一种手势
	 * @see android.view.View.OnTouchListener#onTouch(android.view.View, android.view.MotionEvent)
	 */
	@Override
	public boolean onTouch(View v, MotionEvent event) {
		// TODO Auto-generated method stub
		if (v.getId() == R.id.flipper) {
			return mDetector.onTouchEvent(event); //将事件交给GestureDetector.onTouchEvent()
		}
		return false;
	}
	
	/** 
	 *Called when a touch screen event was not handled by any of the views under it. This is most useful to process touch events that happen outside of your window bounds, where there is no view to receive it.
	 *
	 *官方文档说当一个Touch事件,没有被任何子View处理时,这个方法会被调用。
	 *
	 *把它放到这里当然没有用了,只是为了防止和OnTouchListener.onTouch(View v, MotionEvent event)混淆
	 */
	@Override
	public boolean onTouchEvent(MotionEvent event) {
		// TODO Auto-generated method stub
		Log.i(TAG, "onTouchEvent()"); 	//触摸footer时,会打印日志
		return super.onTouchEvent(event);
	}
}


    参考文章:http://blog.csdn.net/yzhyutian/article/details/6236504

    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
网络技术 iis7站长之家
▪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