什么是Balsamiq Mockups

Balsamiq Mockups出自加利福尼亚州的Balsamiq工作室,创始人Peldi在2008年6月推出了这款手绘风格的产品原型设计工具,并广受好评。2年多来,Balsamiq工作作为一个微型独立软件开发商,专注于Mockups的开发设计,仅3周便实现了盈利,18个月内销售额达到200万美元,用户端数量超过10万个,这与Balsamiq Mockups的市场用户细分的成功以及产品特性是分不开的。

Balsamiq Mockups的用途和价值

Web产品设计中,Balsamiq Mockups是产品设计师绘制线框图或产品原型界面的利器。在产品设计的需求阶段,低保真的线框图或者草图设计介于产品流程设计与高保真DEMO设计之间,在Balsamiq Mockups出现之前,流程图可以使用Visio,高保真DEMO可以使用Axure,但我们并没有好用的草图设计工具;在产品设计管理中,我们通常在产品的业务流程和数据流转已经相当明确时才开始进一步考虑产品的结构层和框架层,虽然此时纸、笔、白板都是非常简单方便的交流工具,但是他们的最大劣势就是——很难将有价值的原型保存下来。Balsamiq Mockups的出现完美的解决了这个问题。

Balsamiq Mockups的优点和特色

可存:告别那一堆堆的纸质线框图吧…
易用:UI控件支持自动拖拽,并且可以实现自动对齐;
美观:手绘风格,简约清爽;
丰富:从按钮到输入框,从导航条到页面、表格,甚至包括了最潮的Iphone元素;
方便:对元素的修改除了工具栏外,还可以使用隐藏编辑框,支持快捷键;
兼容:可使用XML语言保存元素,也可以导出PNG图片,可以插入到任何项目;
跨平台:Windows、Mac OS、Linux下都可以使用,还有能集成在Confluence,JIRA,和XWiki中的版本,对了,如果你没时间下载桌面版,还可以直接使用网页版的Balsamiq Mockups…

Balsamiq Mockups的风险和劣势

应用范围:就像之前提到的,Balsamiq Mockups最好用于商用web产品设计中的低保真线框图或者草图设计,相对于纸和笔,它不够灵活;相对于Axure,它不够精确;

使用语言:暂时没有英文版的Balsamiq Mockups,虽然相对于用惯国外软件的产品设计师/前端交互设计师来说,这并不是什么大问题,但毕竟这提到了使用门槛,童鞋们还是要学好英语;(关于中文汉化版Balsamiq Mockups下面会提到)

价格不菲:79美元的价格并不适合喜欢的朋友尝鲜;而对于国内公司而言,在产品设计领域的理念和意识,远达不到花钱去买一个细分的专业软件的程度。即便不使用Balsamiq Mockups,地球照样转。(关于Balsamiq Mockups的免费方法下面会提到)

使用Balsamiq Mockups的职业和互联网公司

使用Balsamiq Mockups的人包括产品经理、产品设计师、用户体验设计师、交互设计师、网站前端设计师等等,随便谁都可以。这并不重要,问题是很多大公司都在使用,来看看腾讯CDC对Balsamiq Mockups的分析,或者搜狐产品经理对Balsamiq Mockups的推荐,甚至现在网易招聘产品设计师都要求会Balsamiq Mockups了……

下载和安装Balsamiq Mockups

首先提供在线安装Balsamiq Mockups的方法:
点击进入Balsamiq Mockups官方下载安装页面 <<

点击图标直接安装即可,安装内容包括Adobe AIR环境以及Mockups主体桌面程序:

如果你的电脑安装时出现问题,可以尝试分步下载安装Balsamiq Mockups:

确保你的电脑安装了Adobe AIR,下载后安装到默认文件夹

>> 点击进入 Adobe AIR 的最新版本安装页 <<

安装完Adobe AIR后直接下载Balsamiq Mockups桌面程序,无论是Windows还是Mac都可以正常使用,下载后安装到你需要的文件夹即可

>> 直接下载 Balsamiq 官方网站的桌面端程序<<

最后,当你无法安装Balsamiq Mockups或者没时间安装时,Balsamiq还为你提供了在线Web版本的Mockups

Balsamiq Mockups如何输入中文

选择菜单栏 View >> 将 Use System Fonts 勾上,就能完美支持中文输入。

腾讯微博邀请泛滥了,需要的请自助

6月2日:具体怎么操作就不用我说了吧,请自助。

Dalvik JIT

[This post is by Dan Bornstein, virtual-machine wrangler. — Tim Bray]

As the tech lead for the Dalvik team within the Android project, I spend my time working on the virtual machine (VM) and core class libraries that sit beneath the Android application framework. This layer is mostly invisible to end users, but done right, it helps make Android devices run smoothly and improves developer productivity.

The 2.2 release is particularly pleasing to me, as it is the first release since before 1.0 in which we have been able to deliver significantly new VM technology. And unlike much of what my team and I do, it is something that can be experienced directly by end users.

“Dalvik” isn’t exactly a household word (at least in my country), and most people wouldn’t know a virtual machine if it hit them in the face, but when you tell them you were able to make their existing device work better — run faster, use less battery — they will actually take notice!

What Makes This Possible?

We added a Just In Time (JIT) compiler to the Dalvik VM. The JIT is a software component which takes application code, analyzes it, and actively translates it into a form that runs faster, doing so while the application continues to run. If you want to learn more about the design of the Dalvik JIT, please watch the excellent talk from Google I/O 2010 given by my colleagues Bill Buzbee and Ben Cheng, which should be posted to YouTube very soon.

To be clear, the differences aren’t always dramatic, nor do they apply uniformly to all applications. Code that is written to run the CPU all-out can now do more in the same amount of time (running faster), and code that is written to be rate-limited can get its work done using less time and less of the CPU (using less battery). On the performance front in particular, we have seen realistic improvements of 2x to 5x for CPU-bound code, compared to the previous version of the Dalvik VM. This is equivalent to about 4x to 10x faster than a more traditional interpreter implementation.

The team is proud of our new JIT in general, but we are especially proud of two aspects of it:

Many previous JIT implementations react slowly, delivering performance improvements only after a long warm up period. In the extreme, it can be minutes or even hours before the code is fully up to speed. On the other hand, the Dalvik JIT reacts quickly, so that mere moments after you hit the “Start” button on your favorite game, you are already benefiting from the work of the JIT.

We are also very pleased with how little memory the JIT uses. The code for the JIT itself is well under 100k, and each process that the JIT runs in will typically only use another 100k or so of RAM. On the current generation of Android phones, device users won’t even notice this additional memory usage; on my own phone, I can still have literally dozens of applications warmed up in memory and ready to go.

The Dalvik team isn’t resting on its laurels, either. We are hoping to see the Dalvik JIT deployed on many devices in the coming months. Looking forward, the team has an endless list of ideas for making the VM and library code better, which we are diligently working on.

How to have a default database

If you want to include a database with initial data in your apk, you have to insert the database file into the projects assets folder, then programmatically check if the database, and if it does not exists copy the one from the assets.

You will need a function to check if the database exists, fox example:

  1. private static final String DATABASE_NAME = "testdatabase";
  2. private static final String DB_PATH = "/data/data/"+mContext.getPackageName()+"/databases/";
  3.  
  4. private boolean isDataBaseExist() {
  5.         File dbFile = new File(DB_PATH+DATABASE_NAME);
  6.         return dbFile.exists();
  7. }

If the check shows that the the database does not exist, a function like this will copy it:

  1. private void copyDataBase() throws IOException {
  2.         // Open your local db as the input stream
  3.         InputStream myInput = mContext.getAssets().open("databases/"+DATABASE_NAME);
  4.         // Path to the just created empty db
  5.         String outFileName = DB_PATH + DATABASE_NAME;

read more

How to display a custom dialog in your Android application

How to display a custom dialog in your Android application

Yesterday Jozsi showed you, how to make an alert dialog, today I’m going to show you, how to make a custom dialog/popup window.
Sometimes, it’s better to make your own dialog, because this way, you can display whatewer you want., the way you want it.
First, make your own layout, with the needed elements. Here, I’m going to use two buttons, a textview inside a scrollview, and an imageview…

read more

How to display an AlertDialog in your Android application

Here is an example of an applacation, that illustrates how you can create a simple AlertDialog. The dialog can display maximum three buttons.



read more

Wireframe Sketcher & Android

From a project management perspective it is a good practice to have UI Mockups designed before the real implementation starts. With the UI Mockups having ready, you can discuss with the customer if that is going to satisfy the real needs, and you can also discuss inside your development team, if the UI implementation is feasible or not. If you can settle those things before the implementation, you can save huge amount of refactoring, that usually starts with statements like “This takes too much space on screen, can we have it on a separate screen?”, which may also have a large impact on the application architecture. This lesson is also valid for the world of Android development, where the Wireframe Sketcher with its Android stencil set is a perfect tool for fast and informative UI Mockup drawing.

read more

Connecting to MySQL database


The most spread method to connect to a remote MySQL database from an android device, is to put some kind of service into the middle. Since MySQL is usually used together with PHP, the easiest and most obvious way to write a PHP script to manage the database and run this script using HTTP protocol from the android system. mysql logo

We can code the data in JSON format, between Android and PHP with the easy to use built in JSON functions in both languages.

I present some sample code, which selects data from a database depending on a given condition and creates a log message on the android side with the received data.

Lets suppose that we have a MySQL database named PeopleData, and a table int created, with the following SQL:

  1. CREATE TABLE `people` (
  2. `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,

read more

How to play video and audio on Android

There is more than one way, to play media files on an Android phone, let me show you two of them.

picture

Audio:
MediaPlayer is the easier way, if you just want to play an audio file in the background, somewhere in an appliaction. There are no ui controls here, but of course you can use MediaPlayer.stop(), play(), seekTo() ,etc. Just bind the needed functions to a button, gesture, or event. As you can see, it also throws a lot of exceptions, which you need to catch.

  1.  public void audioPlayer(String path, String fileName){
  2.     //set up MediaPlayer    
  3.     MediaPlayer mp = new MediaPlayer();
  4.  
  5.     try {
  6.         mp.setDataSource(path+"/"+fileName);
  7.     } catch (IllegalArgumentException e) {
  8.         // TODO Auto-generated catch block
  9.         e.printStackTrace();
  10.     } catch (IllegalStateException e) {

read more

How to avoid OutOfMemory (OOM) Exception using Bitmaps (Solved)

hello_world_8.png

Step 1.
First thing I want you to think about is that do You really need to use Bitmaps?
If the answer is No, go to step 2. :) Otherwise, think again.
Ok, Let me explain it. I needed Bitmaps to get the width of the images, to create an ImageAdapter for my Gallery. As far as I know, there’s no other way to do that. So I used Bitmaps, and even if I recycled them, once in a while it stopped with the message: DDMS: OutOfMemory .. Phone: Force Close..
Not to speak about how laggy your app will be if you are using Bitmaps..
I’ve spent 2 weeks to find a solution for this problem, but I couldn’t find any usable of them. Then I thought, I try not using Bitmaps anymore. So I have to find another way to get the width of images. Unfortunately, it’s just a workaround, but it works so who cares, right?
I can determine widths with a PHP script, store it in my existing database. After I did that, everything was working properly.

read more

Get Adobe Flash playerPlugin by wpburn.com wordpress themes