当前位置:  编程技术>移动开发
本页文章导读:
    ▪QQ影音、暴风影音 即若暂停视频后,用QQ截图全是黑色 终极解决方案        QQ影音、暴风影音 即使暂停视频后,用QQ截图全是黑色 终极有时一边聊天一边看视频,需要和对方探讨视频里的动作,需要截屏。用这些播放器软件自带的截图未尝不可,但还要再发到qq聊.........
    ▪ ListView 兑现点击侧边A-Z快速查找[中英文排序混排]        ListView 实现点击侧边A-Z快速查找[中英文排序混排]相信大家一定见过这样的一个效果吧,也相信大家也在网上找到了许多的例子,但是大多的都是残缺不全的,没能真正的实现大家的一个效果.........
    ▪ Unity3D+免费工具开发2D游戏之一:工具跟插件介绍       Unity3D+免费工具开发2D游戏之一:工具和插件介绍原文地址:http://www.rocket5studios.com/tutorials/make-a-2d-game-in-unity3d-using-only-free-tools-part-1/ 原版翻译,转载请注明出处:http://blog.csdn.net/ariel7321/arti.........

[1]QQ影音、暴风影音 即若暂停视频后,用QQ截图全是黑色 终极解决方案
    来源: 互联网  发布时间: 2014-02-18
QQ影音、暴风影音 即使暂停视频后,用QQ截图全是黑色 终极

有时一边聊天一边看视频,需要和对方探讨视频里的动作,需要截屏。用这些播放器软件自带的截图未尝不可,但还要再发到qq聊天窗口里很麻烦,不如直接用qq截图。但发现截图下的全是黑乎乎的,近期的几个qq影音、暴风影音都有这个问题,早些时候暴风有这个问题,我就把他卸载了,安了qq影音。升级后发现qq影音也是这样。看来需要解决啊!方法如下:

依次点击:鼠标右键桌面——属性——设置——高级——疑难杂症——硬件加速调到无


    
[2] ListView 兑现点击侧边A-Z快速查找[中英文排序混排]
    来源: 互联网  发布时间: 2014-02-18
ListView 实现点击侧边A-Z快速查找[中英文排序混排]

相信大家一定见过这样的一个效果吧,也相信大家也在网上找到了许多的例子,但是大多的都是残缺不全的,没能真正的实现大家的一个效果吧,那么今天我就和大家分享我的这个完全的源代码,希望能对大家有所帮助吧,需要的人可以直接拿过去用,至于技术点嘛,其实没什么的,对于获取拼音的用到了一个pinyin4j-2.5.0.jar这个jar包,可以帮助我们实现效果。

还是直接上效果图,之后再上源码吧。

 

 

先看旁边的那个26个字母控件的实现:

自己画了出26个字母。

public class MySideBar extends View {

	OnTouchingLetterChangedListener onTouchingLetterChangedListener;
	// 26个字母
	public static String[] b = { "#", "A", "B", "C", "D", "E", "F", "G", "H",
			"I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U",
			"V", "W", "X", "Y", "Z" };
	int choose = -1;
	Paint paint = new Paint();

	public MySideBar(Context context, AttributeSet attrs, int defStyle) {
		super(context, attrs, defStyle);
	}

	public MySideBar(Context context, AttributeSet attrs) {
		super(context, attrs);
	}

	public MySideBar(Context context) {
		super(context);
	}

	/**
	 * 重写这个方法
	 */
	protected void onDraw(Canvas canvas) {
		super.onDraw(canvas);
		if (showBkg) {
			canvas.drawColor(Color.parseColor("#40000000"));
		}

		int height = getHeight();
		int width = getWidth();
		int singleHeight = height / b.length;
		for (int i = 0; i < b.length; i++) {
			paint.setColor(Color.BLACK);
			// paint.setColor(Color.WHITE);
			paint.setTypeface(Typeface.DEFAULT_BOLD);
			paint.setAntiAlias(true);
			paint.setTextSize(20);
			if (i == choose) {
				paint.setColor(Color.parseColor("#3399ff"));
				paint.setFakeBoldText(true);
			}
			float xPos = width / 2 - paint.measureText(b[i]) / 2;
			float yPos = singleHeight * i + singleHeight;
			canvas.drawText(b[i], xPos, yPos, paint);
			paint.reset();
		}

	}

	private boolean showBkg = false;

	@Override
	public boolean dispatchTouchEvent(MotionEvent event) {
		final int action = event.getAction();
		final float y = event.getY();
		final int oldChoose = choose;
		final OnTouchingLetterChangedListener listener = onTouchingLetterChangedListener;
		final int c = (int) (y / getHeight() * b.length);

		switch (action) {
		case MotionEvent.ACTION_DOWN:
			showBkg = true;
			if (oldChoose != c && listener != null) {
				if (c > 0 && c < b.length) {
					listener.onTouchingLetterChanged(b[c]);
					choose = c;
					invalidate();
				}
			}

			break;
		case MotionEvent.ACTION_MOVE:
			if (oldChoose != c && listener != null) {
				if (c > 0 && c < b.length) {
					listener.onTouchingLetterChanged(b[c]);
					choose = c;
					invalidate();
				}
			}
			break;
		case MotionEvent.ACTION_UP:
			showBkg = false;
			choose = -1;
			invalidate();
			break;
		}
		return true;
	}

	@Override
	public boolean onTouchEvent(MotionEvent event) {
		return super.onTouchEvent(event);
	}

	/**
	 * 向外公开的方法
	 * 
	 * @param onTouchingLetterChangedListener
	 */
	public void setOnTouchingLetterChangedListener(
			OnTouchingLetterChangedListener onTouchingLetterChangedListener) {
		this.onTouchingLetterChangedListener = onTouchingLetterChangedListener;
	}

	/**
	 * 接口
	 * 
	 * @author coder
	 * 
	 */
	public interface OnTouchingLetterChangedListener {
		public void onTouchingLetterChanged(String s);
	}

}


 

再看布局文件的实现,这里用到FrameLayout来实现

<?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" >

    <FrameLayout
        android:id="@+id/llParent"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >

        <ListView
            android:id="@+id/lvShow"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" />

        <TextView
            android:id="@+id/tvLetter"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:background="@drawable/show_head_toast_bg"
            android:gravity="center"
            android:maxWidth="70dip"
            android:minWidth="70dip"
            android:padding="10dip"
            android:textColor="#99FFFFFF"
            android:textSize="50sp" >
        </TextView>

        <com.jiahui.view.MySideBar
            android:id="@+id/myView"
            android:layout_width="30dip"
            android:layout_height="fill_parent"
            android:layout_gravity="right" >
        </com.jiahui.view.MySideBar>
    </FrameLayout>

</LinearLayout>


 

接下来再看Activity里的实现了,详细的请直接看代码吧,不懂的可以加Q

public class TestActivity extends Activity implements
		OnTouchingLetterChangedListener {

	private ListView lvShow;
	private List<UserInfo> userInfos;
	private TextView overlay;
	private MySideBar myView;
	private MyUserInfoAdapter adapter;

	private OverlayThread overlayThread = new OverlayThread();

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);

		setContentView(R.layout.main);
		lvShow = (ListView) findViewById(R.id.lvShow);
		myView = (MySideBar) findViewById(R.id.myView);

		overlay = (TextView) findViewById(R.id.tvLetter);

		lvShow.setTextFilterEnabled(true);
		overlay.setVisibility(View.INVISIBLE);

		getUserInfos();

		Log.i("coder", "userInfos.size" + userInfos.size());
		adapter = new MyUserInfoAdapter(this, userInfos);

		lvShow.setAdapter(adapter);

		myView.setOnTouchingLetterChangedListener(this);

	}

	private void getUserInfos() {

		UserInfo[] userinfoArray = new UserInfo[] {
				new UserInfo("唐僧", "18765432345", PinyinUtils.getAlpha("唐僧")),
				new UserInfo("猪师弟", "18765432345", PinyinUtils.getAlpha("猪师弟")),
				new UserInfo("阿呆", "18765432345", PinyinUtils.getAlpha("阿呆")),
				new UserInfo("8899", "18765432345",
						PinyinUtils.getAlpha("8899")),
				new UserInfo("孙悟空", "18765432345", PinyinUtils.getAlpha("孙悟空")),
				new UserInfo("阿三", "18765432345", PinyinUtils.getAlpha("阿三")),
				new UserInfo("张三", "18765432345", PinyinUtils.getAlpha("张三")),
				new UserInfo("张二B", "18876569008", PinyinUtils.getAlpha("张二B")),
				new UserInfo("阿三", "18765432345", PinyinUtils.getAlpha("阿三")),
				new UserInfo("张三", "18765432345", PinyinUtils.getAlpha("张三")),
				new UserInfo("张二B", "18876569008", PinyinUtils.getAlpha("张二B")),
				new UserInfo("阿三", "18765432345", PinyinUtils.getAlpha("阿三")),
				new UserInfo("张三", "18765432345", PinyinUtils.getAlpha("张三")),
				new UserInfo("张二B", "18876569008", PinyinUtils.getAlpha("张二B")),
				new UserInfo("阿三", "18765432345", PinyinUtils.getAlpha("阿三")),
				new UserInfo("张三", "18765432345", PinyinUtils.getAlpha("张三")),
				new UserInfo("张二B", "18876569008", PinyinUtils.getAlpha("张二B")),
				new UserInfo("李四", "18909876545", PinyinUtils.getAlpha("李四")),
				new UserInfo("王小二", "18909876545", PinyinUtils.getAlpha("王小二")),
				new UserInfo("张三丰", "18909876545", PinyinUtils.getAlpha("张三丰")),
				new UserInfo("郭靖", "18909876545", PinyinUtils.getAlpha("郭靖")),
				new UserInfo("张无忌", "18909876545", PinyinUtils.getAlpha("张无忌")),
				new UserInfo("黄小贤", "18909876545", PinyinUtils.getAlpha("黄小贤")) };

		Arrays.sort(userinfoArray, new PinyinComparator());

		userInfos = Arrays.asList(userinfoArray);

	}

	private Handler handler = new Handler() {
	};

	private class OverlayThread implements Runnable {

		public void run() {
			overlay.setVisibility(View.GONE);
		}

	}

	@Override
	public void onTouchingLetterChanged(String s) {
		Log.i("coder", "s:" + s);

		overlay.setText(s);
		overlay.setVisibility(View.VISIBLE);
		handler.removeCallbacks(overlayThread);
		handler.postDelayed(overlayThread, 1000);
		if (alphaIndexer(s) > 0) {
			int position = alphaIndexer(s);
			Log.i("coder", "position:" + position);
			lvShow.setSelection(position);

		}
	}

	public int alphaIndexer(String s) {
		int position = 0;
		for (int i = 0; i < userInfos.size(); i++) {

			if (userInfos.get(i).getPy().startsWith(s)) {
				position = i;
				break;
			}
		}
		Log.i("coder", "i" + position + userInfos.get(position));
		return position;
	}

}

好了这样的一效果就算完成了,也希望大家能分享更多的东西出来,大家一起成长一起学习!


如需转载引用请注明出处:http://blog.csdn.net/jiahui524

 


    
[3] Unity3D+免费工具开发2D游戏之一:工具跟插件介绍
    来源: 互联网  发布时间: 2014-02-18
Unity3D+免费工具开发2D游戏之一:工具和插件介绍

原文地址:http://www.rocket5studios.com/tutorials/make-a-2d-game-in-unity3d-using-only-free-tools-part-1/


原版翻译,转载请注明出处:http://blog.csdn.net/ariel7321/article/details/7765479


该系列讲座一共有五节:

第一节 工具和插件介绍

第二节 制作关卡1的界面

第三节 创建人物动画

第四节 创建计分界面

第五节 制作AI敌人

通过这些讲解,我们将重建一个非常经典的游戏Lode Runner。在本节中,我将介绍一些我们需要用到的免费工具和插件,以及如何在Unity中搭建好这些环境,下一节我们才制作游戏。其中的有些免费插件也有付费版本,付费的有更高级的功能。


工具介绍

Unity3D

Unity3D不但能做出非常出色的3D游戏,如果配合一些额外的插件和脚本的话同样可以做出令人满意的2D游戏的。本讲座中,我们将使用免费版本的Unity3D,可以将游戏发布到PC和网页上。但是如果用付费版本的Unity3D将本游戏移植到iPhone或Android手机上,那也是很容易的。

Orthello 2D framework

现在有不少专门给Unity3D做的精灵插件,其中最流行的就是Sprite Manager 2,我以前用过。但最近想找个替代的插件,我想试试Orthello。一些人说它不太好用,但是作为一个免费插件,它的功能是很棒的。

iTween

这是一个专门制作各种动画的插件,实际上是我开始一个新项目第一个会装的插件。

A*Pathfinding Project

A* Pathfinding可能是用的最广的在Unity3D上的寻路系统插件了,它有免费版本,非常好用。

TexturePacker

这是一个独立的应用软件,它可以很容易的帮你管理精灵图。


开始新的项目

1. 安装最新版本的Unity3D,然后创建一个新的项目:File--->New Project,然后点击Browse...按钮选一个项目存储路径,输入项目名称后保存,然后直接点击create按钮创建项目,这里不需要选择任何资源包。

2. 在项目视图里创建一个文件夹,命名为“Scenes”。然后将当前的场景保存在这个文件夹下, File -> Save Scene As,命名为“Level1”。


安装Orthello 2D

1. 打开Asset Store, Window -> Asset Store,搜索“orthello 2d”,然后就点击下载就好了。或者去orthello官网,下载最新版本,解压后然后双击orthello.unitypackage。

2. 当Import Package窗口出现时,确保所有选项都选了,然后点击Import。过几秒种就可以在项目视图里看到“Orthello”了。


初始化Orthello 2D

Orthello官网有很多相关信息,你需要去看看。下面我就简化了步骤,帮你开始用起来。

记住:在每个scene中,你都需要重复以下步骤,才能使Orthello在每个Scene中工作。

1. 在unity的项目视图里,进入 Orthello -> Objects,然后将OT prefab拖到Scene中或是Hierarchy中。

OT prefab充当一个父亲角色,我们之后要加入到scene中的动画和精灵容器都来自它。将OT prefab加入到scene中后,就会自动对摄像机做一些改变,使之可以恰当的为2D游戏服务。主要的变化就是将摄像机变为了正交投影相机,大小改为了332.


安装iTween

1. 打开Asset Store, Window -> Asset Store,搜索“iTween”,然后就点击下载就好了。

2. 当Import Package窗口出现时,确保所有选项都选了,然后点击Import。过几秒种就可以在项目视图里看到“iTween”了。


安装A*Pathfinding

当我在写这篇文章时,unity的asset store还没有免费版本的A*Pathfinding可以下载。

1. 到期官网下载,下载后的文件名为:PathfindingProject_Free.unitypackage

2. 双击此文件,会出现Import Package窗口,确保所有选项都选了,然后点击Import。过几秒种就可以在项目视图里看到“AstarPathfindingProject”了。


初始化A*Pathfinding

详细的初始化步骤请参见 A* Pathfinding Documentation的getting started,这里我简化了步骤。

1. 创建一个新的空游戏物体GameObject -> Create Empty。

2. 确保position中的x、y、z值都是0,然后命名为“A*”。

3. 给A*添加一个A*路径脚本 Component -> Pathfinding -> Pathfinder

4. 在Inspector中你会看到 “Do you want to enable Javascript support?”,因为后面的脚本我们都有C#,所以选择“No”。


结尾

如果按照我上面的步骤设置unity,最后就会看到如下图所示的设置:







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