该图怎么画?(详细如何量房画讲解视频)

Android中View(视图)绘制不同状态背景图片原理深入分析以及StateListDrawable使用详解
今天继续给大家分享下View的相关知识,重点有一下两点:
1、View的几种不同状态属性
&2、如何根据不同状态去切换我们的背景图片。
开篇介绍:android背景选择器selector用法汇总
对Android开发有经验的同学,对&节点的使用一定很熟悉,该节点的作用就是定义一组状态资源图片,使其能够
在不同的状态下更换某个View的背景图片。例如,如下的hello_selection.xml文件定义:
&?xml&version="1.0"&encoding="utf-8"&?&&&&&&
&selector&xmlns:android="/apk/res/android"&&&&
&&&!--&触摸时并且当前窗口处于交互状态&--&&&&&
&&&item&android:state_pressed="true"&android:state_window_focused="true"&android:drawable=&"@drawable/pic1"&/&&&
&&&!--&&触摸时并且没有获得焦点状态&--&&&&&
&&&item&android:state_pressed="true"&android:state_focused="false"&android:drawable="@drawable/pic2"&/&&&&&
&&&!--选中时的图片背景--&&&&&
&&&item&android:state_selected="true"&android:drawable="@drawable/pic3"&/&&&&&&
&&&!--获得焦点时的图片背景--&&&&&
&&&item&android:state_focused="true"&android:drawable="@drawable/pic4"&/&&&&&
&&&!--&窗口没有处于交互时的背景图片&--&&&&&
&&&item&android:drawable="@drawable/pic5"&/&&&&
&/selector&&&
更多关于&&selector&节点的使用请参考该博客&&
&其实,前面说的xml文件,最终会被Android框架解析成StateListDrawable类对象。
知识点一:StateListDrawable类介绍
类功能说明:该类定义了不同状态值下与之对应的图片资源,即我们可以利用该类保存多种状态值,多种图片资源。
& 常用方法为:
& & &public
void&addState&(int[]
stateSet,&Drawable&drawable)
&功能:给特定的状态集合设置drawable图片资源
&使用方式:参考前面的hello_selection.xml文件,我们利用代码去构建一个相同的StateListDrawable类对象,如下:
//初始化一个空对象
StateListDrawable&stalistDrawable&=&new&StateListDrawable();&&
//获取对应的属性值&Android框架自带的属性&attr
int&pressed&=&android.R.attr.state_&&
int&window_focused&=&android.R.attr.state_window_&&
int&focused&=&android.R.attr.state_&&
int&selected&=&android.R.attr.state_&&
stalistDrawable.addState(new&int&[]{pressed&,&window_focused},&getResources().getDrawable(R.drawable.pic1));&&
stalistDrawable.addState(new&int&[]{pressed&,&-focused},&getResources().getDrawable(R.drawable.pic2);&&
stalistDrawable.addState(new&int&[]{selected&},&getResources().getDrawable(R.drawable.pic3);&&
stalistDrawable.addState(new&int&[]{focused&},&getResources().getDrawable(R.drawable.pic4);&&
//没有任何状态时显示的图片,我们给它设置我空集合
stalistDrawable.addState(new&int&[]{},&getResources().getDrawable(R.drawable.pic5);&&
上面的“-”负号表示对应的属性值为false
&当我们为某个View使用其作为背景色时,会根据状态进行背景图的转换。
& & public
boolean&isStateful&()
&功能:表明该状态改变了,对应的drawable图片是否会改变。
&注:在StateListDrawable类中,该方法返回为true,显然状态改变后,我们的图片会跟着改变。
知识点二:View的五种状态值
&一般来说,Android框架为View定义了四种不同的状态,这些状态值的改变会引发View相关操作,例如:更换背景图片、是否
&触发点击事件等;视
& & 视图几种不同状态含义见下图:
&其中selected和focused的区别有如下几点:
1,我们通过查看setSelected()方法,来获取相关信息。
SDK中对setSelected()方法----对于与selected状态有如下说明:
void&setSelected&(boolean
& & &Changes the
selection state of this view. Aview can be selected or not.
Note that selection is not the same
& & focus. Views are
typically selected in the context of an AdapterView like ListView
or GridVthe selected view
& & the view that is
highlighted.
Parameters&selected&&
true if the view must be selected, false
& &由以上可知:selected不同于focus状态,通常在AdapterView类群下例如ListView或者GridView会使某个View处于
& &selected状态,并且获得该状态的View处于高亮状态。
2、一个窗口只能有一个视图获得焦点(focus),而一个窗口可以有多个视图处于”selected”状态中。
总结:focused状态一般是由按键操作引起的;
& pressed状态是由触摸消息引起的;
selected则完全是由应用程序主动调用setSelected()进行控制。
例如:当我们触摸某个控件时,会导致pressed状态改变;获得焦点时,会导致focus状态变化。于是,我们可以通过这种
&更新后状态值去更新我们对应的Drawable对象了。
问题:如何根据状态值的改变去绘制/显示对应的背景图?
&当View任何状态值发生改变时,都会调用refreshDrawableList()方法去更新对应的背景Drawable对象。
& & &其整体调用流程如下:
View.java类中
//路径:\frameworks\base\core\java\android\view\View.java
&&&&//主要功能是根据当前的状态值去更换对应的背景Drawable对象
&&&&public&void&refreshDrawableState()&{&&
&&&&&&&&mPrivateFlags&|=&DRAWABLE_STATE_DIRTY;&&
&&&&&&&&//所有功能在这个函数里去完成
&&&&&&&&drawableStateChanged();&&
&&&&&&&&...&&
&&&&//&获得当前的状态属性---&整型集合&;&调用Drawable类的setState方法去获取资源。
&&&&protected&void&drawableStateChanged()&{&&
&&&&&&&&//该视图对应的Drawable对象,通常对应于StateListDrawable类对象
&&&&&&&&Drawable&d&=&mBGD&&&&&
&&&&&&&&if&(d&!=&null&&&&d.isStateful())&{&&//通常都是成立的
&&&&&&&&&&&&//getDrawableState()方法主要功能:会根据当前View的状态属性值,将其转换为一个整型集合
&&&&&&&&&&&&//setState()方法主要功能:根据当前的获取到的状态,更新对应状态下的Drawable对象。
&&&&&&&&&&&&d.setState(getDrawableState());&&
&&&&&&&&}&&
&&&&public&final&int[]&getDrawableState()&{&&
&&&&&&&&if&((mDrawableState&!=&null)&&&&((mPrivateFlags&&&DRAWABLE_STATE_DIRTY)&==&0))&{&&
&&&&&&&&&&&&return&mDrawableS&&
&&&&&&&&}&else&{&&
&&&&&&&&&&&&//根据当前View的状态属性值,将其转换为一个整型集合,并返回
&&&&&&&&&&&&mDrawableState&=&onCreateDrawableState(0);&&
&&&&&&&&&&&&mPrivateFlags&&=&~DRAWABLE_STATE_DIRTY;&&
&&&&&&&&&&&&return&mDrawableS&&
&&&&&&&&}&&
&通过这段代码我们可以明白View内部是如何获取更细后的状态值以及动态获取对应的背景Drawable对象----setState()方法
去完成的。这儿我简单的分析下Drawable类里的setState()方法的功能,把流程给走一下:
、&setState()函数原型 ,
&函数位于:frameworks\base\graphics\java\android\graphics\drawable\StateListDrawable.java
//如果状态态值发生了改变,就回调onStateChange()方法。
public&boolean&setState(final&int[]&stateSet)&{&&
&&&&if&(!Arrays.equals(mStateSet,&stateSet))&{&&
&&&&&&&&mStateSet&=&stateS&&
&&&&&&&&return&onStateChange(stateSet);&&
&&&&return&false;&&
&该函数的主要功能:判断状态值是否发生了变化,如果发生了变化,就调用onStateChange()方法进一步处理。
2&、onStateChange()函数原型:
& & 该函数位于
frameworks\base\graphics\java\android\graphics\drawable\StateListDrawable.java
//状态值发生了改变,我们需要找出第一个吻合的当前状态的Drawable对象
protected&boolean&onStateChange(int[]&stateSet)&{&&
&&&&//要找出第一个吻合的当前状态的Drawable对象所在的索引位置,&具体匹配算法请自己深入源码看看
&&&&int&idx&=&mStateListState.indexOfStateSet(stateSet);&&
&&&&//获取对应索引位置的Drawable对象
&&&&if&(selectDrawable(idx))&{&&
&&&&&&&&return&true;&&
&该函数的主要功能:根据新的状态值,从StateListDrawable实例对象中,找到第一个完全吻合该新状态值的索引下标处;
&继而,调用selectDrawable()方法去获取索引下标的当前Drawable对象。
&具体查找算法在&mStateListState.indexOfStateSet(stateSet)
里实现了。基本思路是:查找第一个能完全吻合该新状态值
&的索引下标,如果找到了,则立即返回。 具体实现过程,只好看看源码咯。
3&、selectDrawable()函数原型:
& & 该函数位于
frameworks\base\graphics\java\android\graphics\drawable\StateListDrawable.java
public&boolean&selectDrawable(int&idx)&&
&&&&if&(idx&&=&0&&&&idx&&&mDrawableContainerState.mNumChildren)&{&&
&&&&&&&&//获取对应索引位置的Drawable对象
&&&&&&&&Drawable&d&=&mDrawableContainerState.mDrawables[idx];&&
&&&&&&&&...&&
&&&&&&&&mCurrDrawable&=&d;&//mCurrDrawable即使当前Drawable对象
&&&&&&&&mCurIndex&=&&&
&&&&&&&&...&&
&&&&}&else&{&&
&&&&&&&...&&
&&&&//请求该View刷新自己,这个方法我们稍后讲解。
&&&&invalidateSelf();&&
&&&&return&true;&&
&该函数的主要功能是选择当前索引下标处的Drawable对象,并保存在mCurrDrawable中。
知识点三:关于Drawable.Callback接口
该接口定义了如下三个函数:
//该函数位于&frameworks\base\graphics\java\android\graphics\drawable\Drawable.java&类中
public&static&interface&Callback&{&&
&&&&//如果Drawable对象的状态发生了变化,会请求View重新绘制,
&&&&//因此我们对应于该View的背景Drawable对象能够”绘制出来”.
&&&&public&void&invalidateDrawable(Drawable&who);&&
&&&&//该函数目前还不懂
&&&&public&void&scheduleDrawable(Drawable&who,&Runnable&what,&long&when);&&
&&&&&//该函数目前还不懂
&&&&public&void&unscheduleDrawable(Drawable&who,&Runnable&what);&&
其中比较重要的函数为:
& &&public
voidinvalidateDrawable(Drawable
函数功能:如果Drawable对象的状态发生了变化,会请求View重新绘制,因此我们对应于该View的背景Drawable对象
&能够重新”绘制“出来。
& Android框架View类继承了该接口,同时实现了这三个函数的默认处理方式,其中invalidateDrawable()方法如下:
public&class&View&implements&Drawable.Callback,&KeyEvent.Callback,&AccessibilityEventSource&&&
&&&&//Invalidates&the&specified&Drawable.
&&&&//默认实现,重新绘制该视图本身
&&&&public&void&invalidateDrawable(Drawable&drawable)&{&&
&&&&&&&&if&(verifyDrawable(drawable))&{&//是否是同一个Drawable对象,通常为真
&&&&&&&&&&&&final&Rect&dirty&=&drawable.getBounds();&&
&&&&&&&&&&&&final&int&scrollX&=&mScrollX;&&
&&&&&&&&&&&&final&int&scrollY&=&mScrollY;&&
&&&&&&&&&&&&//重新请求绘制该View,即重新调用该View的draw()方法&&...
&&&&&&&&&&&&invalidate(dirty.left&+&scrollX,&dirty.top&+&scrollY,&&
&&&&&&&&&&&&&&&&&&&&dirty.right&+&scrollX,&dirty.bottom&+&scrollY);&&
&&&&&&&&}&&
因此,我们的Drawable类对象必须将View设置为回调对象,否则,即使改变了状态,也不会显示对应的背景图。如下:
&&&&&&&&&&&&Drawable
& & &// 图片资源
&&&&&&&&&&&&d.setCallback(View
v) ; &// 视图v的背景资源为 d 对象
知识点四:View绘制背景图片过程
& & 在前面的博客中《》,我们知道了一个视图的背景绘制过程时在
View类里的draw()方法里完成的,我们这儿在回顾下draw()的流程,同时重点讲解下绘制背景的操作。
//方法所在路径:frameworks\base\core\java\android\view\View.java
//draw()绘制过程
private&void&draw(Canvas&canvas){&&&&
//该方法会做如下事情&&
&&//1&、绘制该View的背景&&
&&&&//其中背景图片绘制过程如下:
&&&&//是否透明,&视图通常是透明的&,&为true
&&&&&if&(!dirtyOpaque)&{&&
&&&&&&&//开始绘制视图的背景
&&&&&&&final&Drawable&background&=&mBGD&&
&&&&&&&if&(background&!=&null)&{&&
&&&&&&&&&&&final&int&scrollX&=&mScrollX;&&//获取偏移值
&&&&&&&&&&&final&int&scrollY&=&mScrollY;&&
&&&&&&&&&&&//视图的布局坐标是否发生了改变,&即是否重新layout了。
&&&&&&&&&&&if&(mBackgroundSizeChanged)&{&&
&&&&&&&&&&&&&//如果是,我们的Drawable对象需要重新设置大小了,即填充该View。
&&&&&&&&&&&&&&&background.setBounds(0,&0,&&mRight&-&mLeft,&mBottom&-&mTop);&&
&&&&&&&&&&&&&&&mBackgroundSizeChanged&=&false;&&
&&&&&&&&&&&}&&
&&&&&&&&&&&//View没有发生偏移
&&&&&&&&&&&if&((scrollX&|&scrollY)&==&0)&{&&
&&&&&&&&&&&&&&&background.draw(canvas);&//OK,&该方法会绘制当前StateListDrawable的当前背景Drawable
&&&&&&&&&&&}&else&{&&
&&&&&&&&&&&&&//View发生偏移,由于背景图片值显示在布局坐标中,即背景图片不会发生偏移,只有视图内容onDraw()会发生偏移
&&&&&&&&&&&&&//我们调整canvas对象的绘制区域,绘制完成后对canvas对象属性调整回来
&&&&&&&&&&&&&&&canvas.translate(scrollX,&scrollY);&&
&&&&&&&&&&&&&&&background.draw(canvas);&//OK,&该方法会绘制当前StateListDrawable的当前背景Drawable
&&&&&&&&&&&&&&&canvas.translate(-scrollX,&-scrollY);&&
&&&&&&&&&&&}&&
&&&&&&&}&&
&//2、为绘制渐变框做一些准备操作&&
&//3、调用onDraw()方法绘制视图本身&&
&//4、调用dispatchDraw()方法绘制每个子视图,dispatchDraw()已经在Android框架中实现了,在ViewGroup方法中。&&
&//5、绘制渐变框&&&&
That's all !
我们用到的知识点也就这么多吧。&如果大家有丝丝不明白的话,可以去看下源代码,具体去分析下这些流程到底
& 是怎么走下来的。
&&我们从宏观的角度分析了View绘制不同状态背景的原理,View框架就是这么做的。为了易于理解性,
下面我们通过一个小Demo来演示前面种种流程。
&Demo 说明:
我们参照View框架中绘制不同背景图的实现原理,自定义一个View类,通过给它设定StateListDrawable对象,使其能够在
&不同状态时能动态"绘制"背景图片。基本流程方法和View.java类实现过程一模一样。
截图如下:
初始背景图
触摸后显示的背景图(pressed)
一、主文件MainActivity.java如下:
public&class&MainActivity&extends&Activity&&
&&&&@Override&&
&&&&public&void&onCreate(Bundle&savedInstanceState)&&
&&&&&&&&super.onCreate(savedInstanceState);&&&&&&
&&&&&&&&LinearLayout&ll&&=&&new&LinearLayout(MainActivity.this);&&
&&&&&&&&CustomView&customView&=&new&CustomView(MainActivity.this);&&&
&&&&&&&&//简单设置为&width&200px&-&height&100px吧&
&&&&&&&&ViewGroup.LayoutParams&lp&=&new&ViewGroup.LayoutParams(200&,&100);&&
&&&&&&&&customView.setLayoutParams(lp);&&
&&&&&&&&//需要将该View设置为可点击/触摸状态,否则触摸该View没有效果。
&&&&&&&&customView.setClickable(true);&&
&&&&&&&&&&
&&&&&&&&ll.addView(customView);&&
&&&&&&&&setContentView(ll);&&&
功能很简单,为Activity设置了视图 。
二、&自定义View如下,
CustomView.java :
//自定义View
public&class&CustomView&extends&View&&&&&
&&&&private&static&String&TAG&=&"TackTextView";&&
&&&&private&Context&mContext&=&null;&&
&&&&private&Drawable&mBackground&=&null;&&
&&&&private&boolean&mBGSizeChanged&=&true;;&&&//视图View布局(layout)大小是否发生变化
&&&&public&CustomView(Context&context)&&
&&&&&&&&super(context);&&
&&&&&&&&mContext&=&&&&&&&&&&
&&&&&&&&initStateListDrawable();&//&初始化图片资源
&&&&//&初始化图片资源
&&&&private&void&initStateListDrawable()&&
&&&&&&&&//有两种方式获取我们的StateListDrawable对象:
&&&&&&&&//&获取方式一、手动构建一个StateListDrawable对象
&&&&&&&&StateListDrawable&statelistDrawable&=&new&StateListDrawable();&&
&&&&&&&&&&
&&&&&&&&int&pressed&=&android.R.attr.state_&&
&&&&&&&&int&windowfocused&=&android.R.attr.state_window_&&
&&&&&&&&int&enabled&=&android.R.attr.state_&&
&&&&&&&&int&stateFoucesd&=&android.R.attr.state_&&
&&&&&&&&//匹配状态时,是一种优先包含的关系。
&&&&&&&&//&"-"号表示该状态值为false&.即不匹配
&&&&&&&&statelistDrawable.addState(new&int[]&{&pressed,&windowfocused&},&&&
&&&&&&&&&&&&&&&&mContext.getResources().getDrawable(R.drawable.btn_power_on_pressed));&&
&&&&&&&&statelistDrawable.addState(new&int[]{&-pressed,&windowfocused&},&&&
&&&&&&&&&&&&&&&&mContext.getResources().getDrawable(R.drawable.btn_power_on_nor));&&&&&&
&&&&&&&&&&&&&&&&&
&&&&&&&&mBackground&=&statelistD&&
&&&&&&&&&&
&&&&&&&&//必须设置回调,当改变状态时,会回掉该View进行invalidate()刷新操作.
&&&&&&&&mBackground.setCallback(this);&&&&&&&&&
&&&&&&&&//取消默认的背景图片,因为我们设置了自己的背景图片了,否则可能造成背景图片重叠。
&&&&&&&&this.setBackgroundDrawable(null);&&
&&&&&&&&&&
&&&&&&&&//&获取方式二、、使用XML获取StateListDrawable对象
&&&&&&&&//&mBackground&=&mContext.getResources().getDrawable(R.drawable.tv_background);
&&&&protected&void&drawableStateChanged()&&
&&&&&&&&Log.i(TAG,&"drawableStateChanged");&&
&&&&&&&&Drawable&d&=&mB&&
&&&&&&&&if&(d&!=&null&&&&d.isStateful())&&
&&&&&&&&{&&
&&&&&&&&&&&&d.setState(getDrawableState());&&
&&&&&&&&&&&&Log.i(TAG,&"drawableStateChanged&&and&is&111");&&
&&&&&&&&}&&
&&&&&&&Log.i(TAG,&"drawableStateChanged&&and&is&222");&&
&&&&&&&super.drawableStateChanged();&&
&&&&//验证图片是否相等&,&在invalidateDrawable()会调用此方法,我们需要重写该方法。
&&&&protected&boolean&verifyDrawable(Drawable&who)&&
&&&&&&&&return&who&==&mBackground&||&super.verifyDrawable(who);&&
&&&&//draw()过程,绘制背景图片...
&&&&public&void&draw(Canvas&canvas)&&
&&&&&&&&Log.i(TAG,&"&draw&-----");&&
&&&&&&&&if&(mBackground&!=&null)&&
&&&&&&&&{&&
&&&&&&&&&&&&if(mBGSizeChanged)&&
&&&&&&&&&&&&{&&
&&&&&&&&&&&&&&&&//设置边界范围
&&&&&&&&&&&&&&&&mBackground.setBounds(0,&0,&getRight()&-&getLeft(),&getBottom()&-&getTop());&&
&&&&&&&&&&&&&&&&mBGSizeChanged&=&false&;&&
&&&&&&&&&&&&}&&
&&&&&&&&&&&&if&((getScrollX()&|&getScrollY())&==&0)&&//是否偏移
&&&&&&&&&&&&{&&
&&&&&&&&&&&&&&&&mBackground.draw(canvas);&//绘制当前状态对应的图片
&&&&&&&&&&&&}&&
&&&&&&&&&&&&else&&
&&&&&&&&&&&&{&&
&&&&&&&&&&&&&&&&canvas.translate(getScrollX(),&getScrollY());&&
&&&&&&&&&&&&&&&&mBackground.draw(canvas);&//绘制当前状态对应的图片
&&&&&&&&&&&&&&&&canvas.translate(-getScrollX(),&-getScrollY());&&
&&&&&&&&&&&&}&&
&&&&&&&&}&&
&&&&&&&&super.draw(canvas);&&
&&&&public&void&onDraw(Canvas&canvas)&{&&&&&&
&&&&&&&&...&&
&将该View设置的背景图片转换为节点xml,形式如下:
&selector&xmlns:android="/apk/res/android"&&&
&&&item&android:state_pressed="true"&&&
&&&&&&&&android:state_window_focused="true"&&&
&&&&&&&&android:drawable="@drawable/btn_power_on_pressed"&&/item&&&
&&&item&android:state_pressed="false"&&&
&&&&&&&&android:state_window_focused="true"&&&&
&&&&&&&&android:drawable="@drawable/btn_power_on_nor"&&/item&&&&&&&
&/selector&&&
基本上所有功能都在这儿显示出来了, 和我们前面说的一模一样吧。
& 当然了,如果你想偷懒,大可用系统定义好的一套工具 ,
即直接使用setBackgroundXXX()或者在设置对应的属性,但是,
&万变不离其宗,掌握了绘制原理,可以潇洒走江湖了。
示例Demo下载地址:&
& PS: 如果您觉得本文对您有用,请不忘顶一下 。 - - .
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。…0&&parseInt(document.getElementById('custompage').value)页&&1&&parseInt(document.getElementById('custompage').value)楼&&
回复:80 &查看:41894 &
奇骏重大交通事故详解示意图!(应车友要求所画详细示意图)
财产: 592 爱卡币
来自: 湖南省|衡阳市
共获得爱卡币
奇骏重大交通事故详解示意图!(应车友要求所画详细示意图)
应诸位车友要求,重大交通事故详解示意图!
AB箭头交汇点为事故发生地点。
天气为雨雪天气。
奇骏与货车的撞击点为奇骏前脸左侧50CM与货车尾部50CM处撞击时速度为我方奇骏48KM/小时,货车30KM/小时
即相对速度为78KM/小时,相当为奇骏以78KM/小时撞向静止物体
撞击时发生的损毁为撕裂性撞击损毁。
如果往左打死方向,面对30CM高的花坛墙体,心里当时判断是翻车。
往左打死方向,期翼避开货车。结果相撞,侧翻。
事发后车主当即被送往医院,于三小时后复苏,不久即陷入昏睡。
经检查无任何外部明显重大伤,轻微瘀伤,玻璃碎片划伤几处,中度脑震荡。
事发时事故交涉由家人完成,货车当时被拖到交警队,奇骏据家人解释为避免雨水对车辆损害被拖到室内保管,也就是汽修厂车间。并签了一个委托书。家人心急车主伤情心急所签。
事故发生后,保险公司定损,对更换车壳有异议,无良的保险公司啊,这样的车壳你们说该不该换。
结果和保险公司扯皮了很久,再经物价局权威部门定价,最后送交交警队结案。
修车时因为家人所签委托书,以及与保险公司交涉时全为汽修厂代为交涉,扯皮后签下质量维修保证书,对车辆维修后质量安全问题负全责,最终在汽修厂维修。
(在此也奉劝各位一句,行车安全多注意,经济条件允许的情况下,下一台车的选择先决条件是安全性,其次再是越野通过性。欧美的汽车设计注定了在发生重大事故时比日系车要更为经撞,生还几率稍高,但是这次事故的发生让我很疑惑,车辆损毁非常严重,相信欧美系车损毁要稍轻,但是人无大碍,最后几经权衡,高档车永远比中低档车型有着更高的安全性,价格决定质量,在就是市场经济。下一辆车的选择一定是中高档的欧美车,中低档的选择中欧美车并不具有明显优势,但是肯定要比日系车强一点)
奇骏重大事故示意图
760) {this.resized= this.width=760; this.alt='Click here to open new window';}" onmouseover="if(this.width>760) {this.resized= this.width=760; this.style.cursor='hand'; this.alt='Click here to open new window';}" onclick="window.open('.cn/bbs/photo/.htm')" longdesc=".cn/bbs/photo/.htm" title="点击进入图库"
onmousewheel="return imgzoom(this);" alt="" />
事发后出院所拍
760) {this.resized= this.width=760; this.alt='Click here to open new window';}" onmouseover="if(this.width>760) {this.resized= this.width=760; this.style.cursor='hand'; this.alt='Click here to open new window';}" onclick="window.open('.cn/bbs/photo/.htm')" longdesc=".cn/bbs/photo/.htm" title="点击进入图库"
onmousewheel="return imgzoom(this);" alt="" />
事发前一天当晚
760) {this.resized= this.width=760; this.alt='Click here to open new window';}" onmouseover="if(this.width>760) {this.resized= this.width=760; this.style.cursor='hand'; this.alt='Click here to open new window';}" onclick="window.open('.cn/bbs/photo/.htm')" longdesc=".cn/bbs/photo/.htm" title="点击进入图库"
onmousewheel="return imgzoom(this);" alt="" />
事发前一天白天路过某学校停车买烟
760) {this.resized= this.width=760; this.alt='Click here to open new window';}" onmouseover="if(this.width>760) {this.resized= this.width=760; this.style.cursor='hand'; this.alt='Click here to open new window';}" onclick="window.open('.cn/bbs/photo/.htm')" longdesc=".cn/bbs/photo/.htm" title="点击进入图库"
onmousewheel="return imgzoom(this);" alt="" />
事发前几个星期在车内趁堵车时偷拍人家军用版
760) {this.resized= this.width=760; this.alt='Click here to open new window';}" onmouseover="if(this.width>760) {this.resized= this.width=760; this.style.cursor='hand'; this.alt='Click here to open new window';}" onclick="window.open('.cn/bbs/photo/.htm')" longdesc=".cn/bbs/photo/.htm" title="点击进入图库"
onmousewheel="return imgzoom(this);" alt="" />
[ 本帖最后由 ccgbcgsos 于
18:45 编辑 ]
[每日热点]:
财产: 592 爱卡币
来自: 湖南省|衡阳市
共获得爱卡币
这辆车修的我是真的很累,如果不是无法送交维修,我何必如此。
为了自己以后的行车安全,只能有时间就去汽修厂盯着了。
[每日热点]:
财产: 11221 爱卡币
来自: 西藏省|那曲市
共获得爱卡币
写得不错,只是最后一句话值得商榷,被动安全性不能以不同国家车系而论,诚然大车的安全性相对小车高,豪华车的安全性能比普通车型更好,但可以说遇到同样事故,撞击时相对时速78公里车辆撕裂而驾驶只是轻伤,换了任何国籍任何价格的车辆这都是最好的结果!遇到这种事故,七分靠车,三份靠运气。
无论以后LZ换什么车,应该吸取教的是谨慎驾驶提前预判,路口确认安全后才能加速通过,这比任何被动安全措施更加重要。
[每日热点]:
财产: 11221 爱卡币
来自: 西藏省|那曲市
共获得爱卡币
如果有兴趣可以看看这篇文章:《哪部汽车最危险?IIHS发布汽车死亡率报告》
1、基本上车越小死亡率越高。统计报告指出:微型车的百万辆平均死亡率最高,紧凑型跑车的百万辆平均死亡率第二,小型车位列第三。
2、从车型分类来看,MPV车型的死亡率最低,SUV死亡率也比较低,排在MPV之后的第2位,平均百万辆死亡率仅为28。IIHS将SUV车型安全性的提高归功于ESC电子稳定系统,他们称ESC的大量应用使得SUV的翻车风险大大降低,从而降低了死亡率。
3、死亡率最高的日产占了3个车型,350Z、Titan皮卡、Titan加长皮卡车型,另外两款车型是雪佛兰,分别是Aveo(国内的对应车型为老款乐风和乐骋)和Cobalt轿车;而7款车统计结果为零死亡率:奥迪A6,,丰田Sienna,福特Edge、日产Armada,陆虎揽胜运动版和陆虎发现3,日产同样占了一席之地。
请记住最后一句话:“造成高死亡率高的原因肯定不仅仅因为车型本身的安全不到位,驾驶不当必定也是重要的诱因。同样,那些统计学上零死亡率的车型也并非绝对的安全堡垒,优秀的驾驶技能和良好的驾驶习惯才是避免事故伤亡的最终利器。”
[每日热点]:
财产: 1079 爱卡币
来自: 广东省|佛山市
车安不安全和什么车系没有直接关系,同一个品牌的车,即有很安全的,也有很不安全的。其实在合资品牌的中低档车来说,日系车还是相对要安全一些的。
[每日热点]:
财产: 17969 爱卡币
来自: 北京市|北京市
共获得爱卡币
奇骏吸收巨大冲击力不惜自毁保主人一命
最终却难逃被嫌弃的命运
恭喜LZ逃过一劫
自由的代价是时刻警惕。
[每日热点]:
奇骏纵队水军高级将领
财产: 41479 爱卡币
来自: 北京市|北京市
阿弥陀佛~~~~
760) {this.resized= this.width=760;this.height=760*205/270; this.alt='Click here to open new window';}" border="0" alt="" />760) {this.resized= this.width=760;this.height=760*40/76; this.alt='Click here to open new window';}" border="0" alt="" />
[每日热点]:
财产: 60247 爱卡币
来自: 广东省|深圳市
[每日热点]:
宁可当港澳同胞,也...
财产: 153869 爱卡币
来自: 山东省|烟台市
宁可当港澳同胞,也不要战争!
[每日热点]:
财产: 68485 爱卡币
来自: 广西省|来宾市
[每日热点]:
回复成功,收到1个大米!
1…0&&parseInt(document.getElementById('custompage_down').value)页楼
相关论坛:}

我要回帖

更多关于 中国象棋技巧详细讲解 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信