在使用UITableViewStylePlain形式的tableview时,很容易就修改了背景色,而在使用UITableViewStyleGrouped形式的tableview时,怎么都修改不了背景色。在网上看了一番。找到如下的解决方法。
tableview.backgroundView=[[UIView alloc] init];//改变表的背景视图
tableview.backgroundColor = [UIColor orangeColor];添加颜色
Steven Sinofsky是微软前Windows部门的总裁,去年,他离开微软成为了轰动一时的新闻。因为正是他掌管着微软最赚钱的产品:Windows。
Sinofsky创造了微软Office的神话,并且在微软由于Windows Vista系统的糟糕表现而陷入危机的时候,也是Sinofsky带领着微软走出了泥潭。除此之外,在上世纪90年代,他还曾经是盖茨的左膀右臂。
因此,Sinofsky提出的建议,还是非常值得考虑的。
Sinofsky最近在他的博客中向创业者讲述,在有人质疑你的新产品的时候,你该如何处理。
Sinofsky认为,人们通常会通过以下5个方面来质疑新产品,创业者应该学会处理这些质疑:
1.这个产品曾经出现过:
很少有绝对创新的产品。通常情况下,就算绝对创新的产品出现,它解决的也是那些其他产品已经解决的问题。在现实中,如果你考虑的范围够大,你几乎可以为所有新产品找到与它类似的老产品。就连Velcro®,Swiffer ®,Facebook和Instagram也不例外,这些产品都属于极具创新精神的产品,它们都是用了最新的技术,但是解决的也只是一些老产品已经解决过的问题。不同的是,它们能够为用户提供一种更好的解决这些问题的方式。你在经营自己的产品的时候,也应该拥有这样的精神。你需要关注的只是产品的价值,它能不能为用户提供一种更好的解决问题的方式。
2.只是一个新功能:
在科技产业,我们经常会遇到这样一种情况,就是当一个新产品出现的时候,人们总是会轻描淡写的将这个产品描述成“只是多了一种功能而已”。这句话其实没错,但是新功能正是新产品的灵魂。做为消费者,其实我们并不需要每一个新的产品或是服务都完全颠覆以前的产品的使用体验。而对于企业来说,我们也不能将宝贵的资源和资金用在完全创新上,尤其是当这种创新违背了企业的营收目标的情况下。创业者需要做的,就是在创新和营收之间寻找平衡点,在新产品中加入一些与众不同的功能,这样才能在创新的同时不违背企业经营的利益。
3.没人想要这样的产品:
企业开发新产品,最大的目标当然是获得最多的使用者,并从中获得利益。要想做到这一点,创业者需要坚持自己的判断,如果你让其他人左右了你的想法,只因为他们说了一句:“没有人想要这样的产品。”,你就选择退缩,那么即使你拥有再好的创意,它也只能是个创意。创业者自己需要承担融资的工作,也需要自己决定是否通过一个产品的创意,权利在你自己手中,你应该促使自己不断前进,不要被其他人的想法所左右。而如果你自己有了这样的顾虑,你就需要像个创业者一样去思考。你的顾虑有可能是个问题,也有可能是个机遇,你需要找到解决的办法。如果产品不成功,你永远都有机会后退,但是如果你的感觉还不是那么糟糕,就不要在产品还没出炉的时候就选择放弃。
4.错误的定价:
所有新产品的定价几乎都有问题,不是过高就是过低。如果你生产了一个新设备,那么这个设备在刚刚进入市场的时候定价一定很高。因为我们都知道,这个产业中所有产品的定价,都是由市场决定的。新的服务或是应用永远都要面临一个抉择,那就是营收模式。应该向用户收取费用,还是提供免费下载,而利用广告进行营收。产品定价过高或是过低是不可避免的,是永远会出现的。与其于单纯的对这些质疑采取置之不理的态度,或是采取重新定价,你不如详细的向人们阐述你为这个产品制定这个价格的理由。
5.与企业战略不符:
如果你在一个大型企业供职,当你在提出一个新的产品创意的时候,一定有人会对你说:“你的产品创业与公司的战略不符。”这样简单的一句话有可能会使得一个优秀的产品创意胎死腹中。你可能会选择气愤的两手一挥,你也可能会称自己的创意“曲高和寡”,你也可以斥责企业的官僚作风让人感到窒息。但是最重要的是,在听到这句话之后,你要仔细了解企业的这些所谓战略。因为企业的战略对于大型企业来说是他们的生存根本,他们依靠这些战略为消费者提供独一无二的服务。大型企业看重的并不是产品的数量,而是产品之间内在的关联性。在这种情况下,你或许应该调整你的创意,让你的产品创意能够符合企业的战略。
在上篇文章中给大家简单的搭建了百度地图开发的基本环境,今天给大家来介绍介绍如何在地图上面添加标注物
如对这篇文章有看不懂的地方,请转战到上一篇文章-->飞机直达
在正式开始之前先请大家注意,在转载博客的时候注意说明出处
今天给大家带来四个方面的结束,
第一个:就是介绍地图显示交通信息我们只需要添加一个代码就可以完成
mapView.setTraffic(true);
第二个:给地图显示卫星地图,同样也很简单,同样只需要一句代码
mapView.setSatellite(true);
第三个:给地图设置一个标注物
这里用到的是百度地图提供的 Overlay 对象 --> 移步百度地图官方API
首先写一个内部类继承自 Overlay 对象
//标注一个遮盖物 public class MyOverlay extends Overlay{ //声明一个地点 private GeoPoint geoPoint = new GeoPoint((int)(39.915*1E6),(int)(116.404*1E6)); //声明一个画笔工具 private Paint paint = new Paint(); @Override public void draw(Canvas arg0, MapView arg1, boolean arg2) { super.draw(arg0, arg1, arg2); Point point = mapView.getProjection().toPixels(geoPoint, null); arg0.drawText("这里是天安门", point.x,point.y,paint); } }然后在onCreate方法中对该类进行调用
//v2.00 //给地图对象设置标注物 //mapView.getOverlays().add(new MyOverlay()); //mapController.setZoom(12);
这样就可以很简单的使用标注物啦。
第四个:是如何给百度地图设置多个标注物同样的道理这里我们用到的是百度地图API里面提供的 ItemizedOverlay 对象
同样写一个内部类继承自 ItemizedOverlay 对象
//标注多个遮盖物 public class MyOverLayItem extends ItemizedOverlay<OverlayItem>{ private List<OverlayItem> overlayItem = new ArrayList<OverlayItem>(); //定义一组坐标 private double mLat1 = 39.90923;//经 private double mLot1 = 116.397428;//纬 private double mLat2 = 39.92923;//经 private double mLot2 = 116.377428;//纬 private double mLat3 = 39.94923;//经 private double mLot3 = 116.357428;//纬 private double mLat4 = 39.96923;//经 private double mLot4 = 116.337428;//纬 //用于在地图上标识坐标,用一个图片标注 public MyOverLayItem(Drawable drawable) { super(drawable); GeoPoint geoPoint1 = new GeoPoint((int)(mLat1*1E6),(int)(mLot1*1E6)); GeoPoint geoPoint2 = new GeoPoint((int)(mLat2*1E6),(int)(mLot2*1E6)); GeoPoint geoPoint3 = new GeoPoint((int)(mLat3*1E6),(int)(mLot3*1E6)); GeoPoint geoPoint4 = new GeoPoint((int)(mLat4*1E6),(int)(mLot4*1E6)); overlayItem.add(new OverlayItem(geoPoint1, "A", "这是第一个")); overlayItem.add(new OverlayItem(geoPoint2, "B", "这是第二个")); overlayItem.add(new OverlayItem(geoPoint3, "C", "这是第三个")); overlayItem.add(new OverlayItem(geoPoint4, "D", "这是第四个")); //刷新地图 populate(); } //返回指定的List集合中每一个坐标 @Override protected OverlayItem createItem(int arg0) { return overlayItem.get(arg0); } @Override public int size() { return overlayItem.size(); } //当标注物被点击的时候 @Override public boolean onTap(int i) { Toast.makeText(BaiDu_SuYiActivity.this, overlayItem.get(i).getSnippet(), 2).show(); return true; } }然后在onCreate方法中对该类进行调用
//v3.00 //给地图设置多个标注物 //显示标注的图标 Drawable drawable = getResources().getDrawable(R.drawable.iconmarka); mapView.getOverlays().add(new MyOverLayItem(drawable));
资源全部类代码
package com.shuaiyin.baidu; import java.util.ArrayList; import java.util.List; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Point; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.widget.Toast; import com.baidu.mapapi.BMapManager; import com.baidu.mapapi.GeoPoint; import com.baidu.mapapi.ItemizedOverlay; import com.baidu.mapapi.MKGeneralListener; import com.baidu.mapapi.MapActivity; import com.baidu.mapapi.MapController; import com.baidu.mapapi.MapView; import com.baidu.mapapi.Overlay; import com.baidu.mapapi.OverlayItem; /** * 让百度地图继承MapActivity * @author shuaiyin * */ public class BaiDu_SuYiActivity extends MapActivity { //添加百度地图的相关控件 private MapView mapView; //加载百度地图的引起 private BMapManager bMapManager; //定义百度地图的KEY private String key = "*我处理了*94B0429A4BEE30797E04D91B0211C4"; //在百度地图上添加相应的控件 private MapController mapController; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //首先实例化mapView mapView = (MapView) this.findViewById(R.id.bmapView); bMapManager = new BMapManager(BaiDu_SuYiActivity.this); //调用百度地图加载KEY bMapManager.init(key, new MKGeneralListener() { @Override public void onGetPermissionState(int arg0) { if(arg0 == 300){ Toast.makeText(BaiDu_SuYiActivity.this, "您输入的KEY有问题,请核实", 2).show(); } } @Override public void onGetNetworkState(int arg0) { } }); this.initMapActivity(bMapManager); //表示可以设置缩放功能 mapView.setBuiltInZoomControls(true); mapController = mapView.getController(); //V1.00 //在百度地图上标注一个中心点 //GeoPoint geoPoint = new GeoPoint((int)(39.915*1E6),(int)(116.404*1E6)); //给地图对象设置一个中心点 //mapController.setCenter(geoPoint); //设置地图的缩放级别 //mapController.setZoom(12); //显示交通地图 //mapView.setTraffic(true); //显示卫星地图 //mapView.setSatellite(true); //v2.00 //给地图对象设置标注物 //mapView.getOverlays().add(new MyOverlay()); //mapController.setZoom(12); //v3.00 //给地图设置多个标注物 //显示标注的图标 Drawable drawable = getResources().getDrawable(R.drawable.iconmarka); mapView.getOverlays().add(new MyOverLayItem(drawable)); } //标注一个遮盖物 public class MyOverlay extends Overlay{ //声明一个地点 private GeoPoint geoPoint = new GeoPoint((int)(39.915*1E6),(int)(116.404*1E6)); //声明一个画笔工具 private Paint paint = new Paint(); @Override public void draw(Canvas arg0, MapView arg1, boolean arg2) { super.draw(arg0, arg1, arg2); Point point = mapView.getProjection().toPixels(geoPoint, null); arg0.drawText("这里是天安门", point.x,point.y,paint); } } //标注多个遮盖物 public class MyOverLayItem extends ItemizedOverlay<OverlayItem>{ private List<OverlayItem> overlayItem = new ArrayList<OverlayItem>(); //定义一组坐标 private double mLat1 = 39.90923;//经 private double mLot1 = 116.397428;//纬 private double mLat2 = 39.92923;//经 private double mLot2 = 116.377428;//纬 private double mLat3 = 39.94923;//经 private double mLot3 = 116.357428;//纬 private double mLat4 = 39.96923;//经 private double mLot4 = 116.337428;//纬 //用于在地图上标识坐标,用一个图片标注 public MyOverLayItem(Drawable drawable) { super(drawable); GeoPoint geoPoint1 = new GeoPoint((int)(mLat1*1E6),(int)(mLot1*1E6)); GeoPoint geoPoint2 = new GeoPoint((int)(mLat2*1E6),(int)(mLot2*1E6)); GeoPoint geoPoint3 = new GeoPoint((int)(mLat3*1E6),(int)(mLot3*1E6)); GeoPoint geoPoint4 = new GeoPoint((int)(mLat4*1E6),(int)(mLot4*1E6)); overlayItem.add(new OverlayItem(geoPoint1, "A", "这是第一个")); overlayItem.add(new OverlayItem(geoPoint2, "B", "这是第二个")); overlayItem.add(new OverlayItem(geoPoint3, "C", "这是第三个")); overlayItem.add(new OverlayItem(geoPoint4, "D", "这是第四个")); //刷新地图 populate(); } //返回指定的List集合中每一个坐标 @Override protected OverlayItem createItem(int arg0) { return overlayItem.get(arg0); } @Override public int size() { return overlayItem.size(); } //当标注物被点击的时候 @Override public boolean onTap(int i) { Toast.makeText(BaiDu_SuYiActivity.this, overlayItem.get(i).getSnippet(), 2).show(); return true; } } @Override protected void onDestroy() { super.onDestroy(); if(bMapManager != null){ bMapManager.destroy(); bMapManager = null; } } @Override protected void onResume() { super.onResume(); if(bMapManager != null){ bMapManager.start(); } } @Override protected void onPause() { super.onPause(); if(bMapManager != null){ bMapManager.stop(); } } @Override protected boolean isRouteDisplayed() { return false; } }
最后看看上面四个东西的效果图
希望大家在看了我的博客后,能跟我一起进步,大家加油,好好学习,天天向上。