Skip to main content

Home/ Android Dev/ Group items tagged style

Rss Feed Group items tagged

Vincent Tsao

《程序员》精彩推荐:Android程序创意过滤与失败经验谈 - 0 views

  • 思路转换的失败
  • 针对的用户群体动辄就是全球目标用户,在商业判断和分析上,最基础的一个考量就是用户群体和业务模式的总量的收益是否足够大,对用户群体的研究和商业判断分析完全根据市场分析报告和数据来做判断。因此,不可避免地在程序创意思路上会沿用以前的工作思路和分析方法。 在考虑Android上的创意的同时,不自觉地就考虑和分析了如下几个方面的问题: 1. 是否为用户所必需? 2. 技术上是否领先? 3. 程序的粘性是否足够? 4. 用户群体是否足够大? 因此,沿用这个思路,不可避免地就会往大的应用和大的服务上去思考和做出判断。
  • 经过反复地反省和对比,初步得出了这样的失败教训: 1. 对于个人开发者和小型团队来说,不适合做过于基础的程序。操作的模式和理念上的创新与用户的接受度有相当的距离。这样的事情只有大公司才有财力和可能进行推广。比如说手机生产商,他们可以通过预置的方式进行推广。而对个人开发者来说,得先证明你的想法是成功的,不能假设一个会成功的需求和应用,然后卖给设备厂商。 2. 个人开发者和小型团队不适合做大的程序,尤其是开发时间不要超过2个月。4个人,3个月的时间,对于一个小团队来说 ,是相当宝贵的。这不仅仅是时间和金钱的问题,更多的是信心问题。 3. 用户能否真正接受你的想法,是一个关键性的问题。设想和推导都很完美,唯独缺了用户是否真正喜欢和接受这一条,又没有方法进行快速地验证和试错,基本上不能成功。
  • ...6 more annotations...
  • 因此,在开发者头脑风暴产生一个创意之后,要做的几个最主要的过滤在于: 1. 开发时间是否太长? 2. 开发的技术难度是否会过高,而导致不能实现或者质量不可靠? 3. 有怎样的办法来判断用户是否会喜欢? 有了这几个过滤条件,相信能够减少失败的几率,或者说能够Fail Fast(尽快失败),从而减少损失。
  • 技术门槛的失败
  • 这也让我们多了一个失败的教训: 1. 技术门槛不高,不能保证你一直保持优势。对你来说简单的程序,对竞争对手来说,程序同样的简单。因此,你能做,别人也能做。在这一点上,其实竞争同样激烈。 2. 封账号的代价相当之大,基本上等于你的努力悉数尽毁。Don’t do evil。 因此,在这个案例中,增加了一个新的创意过滤条件: 程序的创意是否过于简单?如果过于简单,那么创意能够始终保持成功的机会不会太高
  • 依赖第三方资源的失败
  • 这个时候,FML的官网发现了这个机会。他们觉得这是一个很好的想法,应该自己在Market上发布自己的官方程序。于是,他们干了这样的事情来清除竞争对手。他们直接向Google举报,说其它程序没有得到他们的授权。一次举报,竞争对手全部清干净了,于是他们的官方程序上线了。 这一次,得到了一个更加深刻的教训: 1. 不要过于依赖第三方资源。依赖第三方资源或者网站的名气,的确可能帮助你的程序受到很多关注,代价也同样存在,一旦人家开始动手举报,你连还手的机会都没有。 2. 不要选错第三方资源。很多的服务提供商是不开放的,尽管他们没有明确说明。同时还有很多服务提供商是充分开放的,比如Twitter就是一个非常开放的例子。选错了第三方资源,结果一样会失败。 因此,这里又多了一个创意过滤的条件: 是否依赖于第三方资源? 如果是,请尽快绕道离开,因为很难靠这个想法走太远。
  • 1. Don’t do evil。美国人做事的方式非常直接,同时会默认你是善意的。对于Google来说,尤其如此。因此,在我尝试过的程序中,你可以任意发布你的程序到Google Market。但是,如果涉及到版权纠纷,不管是网站的所有者、原程序的开发者还是其它任何一种类型的版权纠纷,一旦举报到Google,轻者下架单个程序,重者封禁整个账号,并且下架所有程序。也就是说,一旦受到处罚,你就别想翻身了。因此,Don’t do evil。 2. Google的审查底线。尽管Google不做审查,但除了和版权争议相关的程序之外,哪怕是你自己的程序,依然有如下的禁区是不能碰的: a. 不要使用任何Google相关的名义。程序名、开发者名都不能涉及到Google或者看起来类似Google的名称,否则Google不会予以通过。 b. 不要违反任何Google的开发者协议。需要仔细阅读Google的开发者协议,在不同时候Google的开发者协议会经常更新。因此,只要违反了任何Google开发者协议,当Google处罚到你的时候,基本上没有申辩机会。因此,务必要小心。
Vincent Tsao

解决办法之Error generating final archive: Debug certificate expired on « 岩屋(Flash/... - 1 views

  • Eclipse 编译 Android工程时,提示该错误 :Error generating final archive: Debug certificate expired on xxxxxx(日期) 解决办法: linux:Window--》Preferences--》Android--》Build中Default debug keystore显示了地址“/home/jinli/.android/debug.keystore”,删除此路径下的debug.keystore及 ddms.cfgWindow XP:进入:C:Documents and SettingsAdministrator.android 删除:debug.keystore及 ddms.cfg
Vincent Tsao

sqlite3 in adb not in 2.2? - Android Developers | Google Groups - 0 views

  • Then I went ahead and installed 2.2 and now when > I type sqlite3 in the shell it says sqlite3 not found....  Any ideas? Well, it's in the 2.2 emulator image, for what that's worth. -- Mark Murphy (a Commons Guy)
  •  
    Android 2.2 的真机中不再有sqlite调试工具了? WTF! ! !
  •  
    求助于China android dev开发小组,有了解决办法: step 1: 从其他真机或者模拟器的 /system/xbin目录下copy一份 sqlite3 step 2: 进入shell执行chmod a+x sqlite3 或者 chmod 777 sqlite3 大功告成
Vincent Tsao

Is it possible to update a widget from an Activity? - Android Developers | Google Groups - 0 views

  • An AppWidgetProvider is a BroadcastReceiver. That gives you two possibilities right off the bat: 1. Have it also handle whatever other Intents you were planning on setting up with a separate BroadcastReceiver, or 2. Send an Intent from whatever component you want to the AppWidgetProvider. In other words, don't worry about trying to talk directly to the app widget (which I suspect is impossible) -- just talk to your code that already talks to the app widget.
    • Vincent Tsao
       
      good explanation
  • I update my widget from within my app, when I delete/add entries to a list. To do this, I have a method (updateWidget) and a static String (UPDATE_ACTION). My updateWidget() method sends a broadcast which is received by the widget class and then calls onUpdate() with the appropriate params: private void updateWidget() {                 Intent i = new Intent(this, TVWidget.class);                 i.setAction(TVWidget.UPDATE_ACTION);                 sendBroadcast(i);         } In TVWidget class: @Override         public void onReceive(Context context, Intent intent) {                 String action = intent.getAction();                 if (action != null && action.equals(UPDATE_ACTION)) {                         final AppWidgetManager manager = AppWidgetManager.getInstance (context);                         onUpdate(context, manager,                                         manager.getAppWidgetIds(new ComponentName(                                                         context, TVWidget.class)                                         )                         );                 }                 else {                         super.onReceive(context, intent);                 }         } This seems to work fine.
Vincent Tsao

谷歌:Android手机日出货量6.5万 接近iPhone_Google Android_cnBeta.COM - 0 views

  • 施密特说:“按照目前发展趋势,Android手机有望在全球手机市场扮演第一或第二的角色。”除 向手机厂商提供Android软件外,谷歌还发布了自有品牌智能手机Nexus One。 施密特表示:“我们的合作伙伴每天Android手机出货量约为6.5万部。如果你经常访问博客网站,就会发现一些有关Android手机出 货量的估计数字远远低于实际情况。”
  • 美国市场研究公司NPD近日发布的统计数据显示,今年第一季度期间,Android手机在美国市场 的销量已超过iPhone,占据该季度美国智能手机总销量的28%,iPhone相应份额为21%,而加拿大智能手机制造商RIM的黑莓 (BlackBerry)手机相应市场份额仍居第一,为36%。
  • 施密特周四表示:“我们的手机市场战略与其他厂商不同。我 们向各大手机厂商免费提供Android软件,这是具有变革意义的举动。我们希望建立起一个开放环境,这一点与其他手机厂商的市场策略正好相反。” 谷歌联合创始人拉里·佩奇(Larry Page)周四也出席了谷歌股东年度大会。他当天表示,采用Android软件的智能手机型号数量增加后,将有利于谷歌搜索总量的增长,并使谷歌其他业务 也受益,“智能手机产品逐步成熟后,我们将能够制定出相应盈利方案。” 施密特称,自 己同意佩奇的看法,“虽然我们已向各大手机厂商免费提供Android软件,但与Android手机平台相关的应用程序和服务具有巨大增长潜力。今后 5~10年内,手机应用程序和服务将成为业务范围极为广泛的产业,其市场价值不容小视。”
  •  
    Good News for Android
Vincent Tsao

Possible to change between "full screen" and "with status bar"? - Android Developers | ... - 0 views

  • // go full screen WindowManager.LayoutParams attrs = mActivity.getWindow().getAttributes (); attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN; mActivity.getWindow().setAttributes(attrs); // go non-full screen WindowManager.LayoutParams attrs = mActivity.getWindow().getAttributes (); attrs.flags &= (~WindowManager.LayoutParams.FLAG_FULLSCREEN); mActivity.getWindow().setAttributes(attrs);
    • Vincent Tsao
       
      these code can be simplified as below: //go full screen getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); //go non-full screen getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
  •  
    How to toggle fullscreen / non-fullscreen
Vincent Tsao

java - remove notification bar shadow in android app - Stack Overflow - 0 views

  • <!-- Variation on the Light theme that turns off the title --><style name="Theme.IOSched" parent="android:style/Theme.Light">    <item name="android:windowNoTitle">true</item>    <item name="android:windowContentOverlay">@null</item></style>
  • The android:windowContentOverlay is your shadow, and setting it to @null in your theme will eliminate it. You can see this in action in the Google I|O 2010 conference app, which uses many of the same UI conventions as does the new Twitter app. However, right now, the Twitter app has not yet been open-sourced, which is why I point you to the I|O app. The code fragment above is from that app's styles.xml resource.
Vincent Tsao

Mark Murphy | AndroidGuys - 0 views

  • Mark Murphy is the founder of CommonsWare and is the author of _The Busy Coder's Guide to Android Development_, _The Busy Coder's Guide to *Advanced* Android Development_, and _Android Programming Tutorials_.
  •  
    Articles from Mark Murphy
Vincent Tsao

Applying Styles and Themes | Android Developers - 0 views

  •  
    using style/theme to make our layout views neat and maintainable
Vincent Tsao

Window Backgrounds & UI Speed | Android Developers - 0 views

  • Removing the window's background can be achieved very easily by using a custom theme. To do so, first create a file called res/values/theme.xml containing the following:
  • <resources>    <style name="Theme.NoBackground" parent="android:Theme">        <item name="android:windowBackground">@null</item>    </style></resources>
  • You then need to apply the theme to your activity by adding the attribute android:theme="@style/Theme.NoBackground" to your <activity /> or <application /> tag. This trick comes in very handy for any app that uses a MapView, a WebView or any other full screen opaque view.
Vincent Tsao

ListView/ListActivity limit items until last item reached, like in Android Market - And... - 0 views

  • These applications use an OnScrollListener to detect when the last item is displayed. When this happens, they load more items and add them to the list adapter.
Vincent Tsao

Adding items to a ListView - Android Developers | Google Groups - 0 views

  • SizzlingSkizzorsProgrammer wrote: > After the listview is already initialized, is it possible to add items > to it during runtime? Just add the new items to the adapter, or the data source that backs up the adapter (if it's a CursorAdapter).
Vincent Tsao

How to update the GUI in Push/C2DM sample from advandroid book? - cw-android | Google G... - 0 views

  • > Now I just want to update the GUI from this method. > Can I somehow call a method in PushEndpointDemo.java? No, for two reasons: 1. Because C2DMReceiver is a manifest-registered BroadcastReceiver and therefore has no access to any activities 2. There might not be an activity, since you have no control over the timing of when the C2DM message is received (e.g., the user pressed BACK, the user pressed HOME) > Do I need a Broadcast Intent to do this? Possibly. -- If you want to update an activity or else ignore the message, have C2DMReceiver send out a private broadcast, picked up by a receiver registered via registerReceiver() in the activity -- If you want to update an activity or else raise a notification, have C2DMReceiver send out an ordered broadcast, as described here: http://commonsware.com/blog/2010/08/11/activity-notification-ordered-... -- If you want to update a database, call startActivity() on an IntentService, and have it do the database I/O, plus possibly broadcast an Intent to update an activity/raise a notification.
Vincent Tsao

Android应用加速增长:3月份新增9000+ - 读写网唯一官方中文站 - 搜狐IT独立群体博客 - 0 views

  • 来自AndroidLib.com的最新统计数 据显示,2010年3月,Android应用市场里的应用增加了9331个。通过历史对比,这些数字更加惊人。比如,去年12月,新增 Android应用为3807个,到1月份为止,新增应用为4458个,2月新增5532个。3月新增9331个。如果Android保持这种增长趋势, 其应用数量很有可能在今天达到5位数,从而对苹果形成有力竞争
Vincent Tsao

attempt to acquire a reference on a close SQLiteClosable - Android Developers | Google ... - 0 views

  • If you're managing the cursor yourself the cleanest way to go is probably this: Cursor cursor = getContentResolver().query(...); try {     // read from the cursor and do stuff } finally {     if (cursor != null) cursor.close(); }
  • Another option if you still want to use Activity.managedQuery() is to get your information and then: stopManaging(cursor); cursor.close(); Cheers, Justin Android Team @ Google
Vincent Tsao

用google adsense的小心了!!!! - China Android Dev | Google Groups - 0 views

  • google最后给的判决书: Hi, After further review from our abuse team we have confirmed that your account that was closed was modifying the ad behavior which is strictly prohibited as stated in the AdSense policies. These types of violations pose a significant risk to advertisers and for this reason we can no longer work with you through any partnering AdSense account or product offering. This will be the final communication about this issue. Please do not reply to this email as you will not receive a response. Thank you for your understanding. Google AdSense 我们自始至终都不知道原因。
  • 我Google了下 "modifying the ad behavior " 就是指你修改了 Google提供的 adsense js code 或者 sdk 唯一有可能的就是这里了 GoogleAdView adView = (GoogleAdView) activity.findViewById(R.id.ad<http://r.id.ad/> ); if (adView != null) { View vc = adView.getCurrentView(); if (vc instanceof WebView) { ((WebView) vc).destroy(); } View vn = adView.getNextView(); if (vn instanceof WebView) { ((WebView) vn).destroy(); } } 因为用了adsense之后 我们的程序老是crash 从stack trace看是因为Google adsense sdk 引起的. 资源没有释放. 然后去Adsense的那个mail list AFMA 问了 碰到2个都有同样问题的 然后有人给了个code 因为adsense sdk没有destroy ad view  所以要手动destroy下 我们就在每个有ads的activty的 onDestroy 加上这段 就好了 程序没有crash了 结果就被搞了 连负责我们android adsense sales都事先不知道 adsense team就直接把我们封了 还在beta 测试阶段的东西 还有bug  我们只是加了这个保证他资源正常释放不会影响到我们程序 结果就挂了 而且Google的态度巨NX无比 连个申述的途径都没有  只是给了个link类似事后调查
  • 我刚刚给我的sale发了一封信: Hi Sunil, It has been long that I haven't talked to you. I have a question, when I went to the application register page, I found the page layout was changed and some of my apps were gone. For example UK TV Guide, Australia TV Guide, etc. Also, the published status are all "false". I am confused because I am still seeing my ads are clicked in the daily report. Is there anything wrong? I am nervous because I just knew that an AdSense developer's account was disabled without any warning,  and the developers themselves don't know the reason. I don't want that happened on me so I really appreciate your comment. below is the letter in AFMA group. Looking forward to your reply. Thanks. Cheers, Luke 接下来我引用了superdroid的信。看看他怎么说吧。
  • ...1 more annotation...
  • 把这句抄下来了,大家以后小心了。 Ad Behavior AdSense code may not be altered, nor may the standard behavior, targeting or delivery of ads be manipulated in any way that is not explicitly permitted by Google. For instance, clicking Google ads may not result in a new browser window being launched. 我猜是不是可以找google总部投诉一下这个部门
Vincent Tsao

Getting the Manifest Version Code - Android Developers | Google Groups - 0 views

  • PackageInfo pInfo = null; try {         pInfo = getPackageManager().getPackageInfo("com.beanie.test", PackageManager.GET_META_DATA);         } catch (NameNotFoundException e) {                 e.printStackTrace(); } System.out.println(pInfo.versionCode);
1 - 20 of 25 Next ›
Showing 20 items per page