Android實(shí)現(xiàn)透明指示層

以下僅為自己工作記錄,方便今后查閱

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)公司!專(zhuān)注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、微信小程序定制開(kāi)發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶(hù)創(chuàng)新互聯(lián)還提供了任城免費(fèi)建站歡迎大家使用!

第一步:從原理上,了解這個(gè)功能,我們使用RelativeLayout 布局,然后在主頁(yè)面內(nèi)容之后,直接加入指示層如下代碼。

<RelativeLayout android:orientation="vertical"android:background="#ffe4e4e4" android:layout_width="fill_parent"android:layout_height="fill_parent"

  xmlns:android="http://schemas.android.com/apk/res/android">

  <LinearLayout android:orientation="vertical"android:background="#ffe4e4e4" android:layout_width="fill_parent"android:layout_height="fill_parent">

    <include layout="@layout/hotel_details_head" />

    

    <ListView android:id="@id/hotel_detail_rooms"android:fadingEdgeLength="5.0dip" android:layout_width="fill_parent"android:layout_height="wrap_content" android:listSelector="#00000000"android:cacheColorHint="#00000000" android:divider="#00ffffff"android:dividerHeight="1.0dip" />

    

   

    </LinearLayout>

    

    <ImageView   

    android:src="@drawable/tip1"  

    android:layout_height="fill_parent"   

    android:layout_width="fill_parent"  

    android:id="@+id/helpTipbackground"  

    

    android:scaleType="centerInside"

    android:keepScreenOn="true"  

    android:visibility="gone"

  />

    <ImageView   

    android:src="@drawable/thisred"  

    android:layout_height="wrap_content"   

    android:layout_width="wrap_content"  

    android:id="@+id/helpTip"  

    android:scaleType="center"

    android:visibility="gone"

  />

</RelativeLayout>

解釋?zhuān)簂inearlayout是主要顯示的內(nèi)容,而下面的兩個(gè)p_w_picpathview是用來(lái)指示的圖層。這里我使用指示層和解釋層分開(kāi)的方式,因?yàn)槲野l(fā)現(xiàn)android不同尺寸的屏幕如果只用一層太不好弄啦,也可以合并到一層根據(jù)個(gè)人需求自行決定,如果是一層那就不需要兩個(gè)p_w_picpathview了。我們可以先將它們隱藏( android:visibility="gone"),等到主頁(yè)面正常顯示出來(lái)在將指示層顯示出來(lái)。

第二步:添加activity代碼,實(shí)現(xiàn)點(diǎn)擊圖層變化解釋層的圖標(biāo)和指示層的位置。

private ImageView helpTipIV;//手指

private ImageView helpTipBackIV;//手指背景

private int backpicture=0;

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_hotel_detail);

helpTipIV=(ImageView)this.findViewById(R.id.helpTip);

helpTipIV.setOnClickListener(this);

int[]xy = new int[2];

hotel_detail_save_iconIV.getLocationOnScreen(xy);

int x=xy[0];

int y=xy[1];

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(300,350);

params.setMargins(x-90, y+20, 0, 0);

helpTipIV.setLayoutParams(params);

helpTipBackIV=(ImageView)this.findViewById(R.id.helpTipbackground);

 

helpTipBackIV.setOnClickListener(this);

hotel_details_locationTV= (LinearLayout)hotelroomheader.findViewById(R.id.hotel_details_location);

}

@Override

public void onClick(View view) {

// TODO Auto-generated method stub

   int i=view.getId();

            switch(view.getId())

{

case R.id.helpTipbackground:{

if(backpicture==0)

{

 

helpTipBackIV.setImageResource(R.drawable.tip2);

int[]xy = new int[2];

hotel_details_locationTV.getLocationOnScreen(xy);

int x=xy[0];

int y=xy[1];

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(300,350);

params.setMargins(x, y+20, 0, 0);

helpTipIV.setLayoutParams(params);

backpicture++;

}else

{

helpTipBackIV.setVisibility(View.GONE);

helpTipIV.setVisibility(View.GONE);

}

helpTipBackIV.setImageResource(R.drawable.tip2);

break;

}

}

}

解釋?zhuān)涸诔跏蓟缑娉晒?,先給手指層定義第一個(gè)指示的位置,然后給背景層添加點(diǎn)擊事件,這里的onclick()方法是定義在父類(lèi)中的,也可以直接為p_w_picpathview控件添加點(diǎn)擊事件。這里要強(qiáng)調(diào)一下,原來(lái)我用的給控件定位的方法是setLeft()、setTop()、setRight()、setBottom()。這個(gè)方式如果對(duì)應(yīng)一個(gè)圖層的時(shí)候沒(méi)有問(wèn)題,但是對(duì)應(yīng)兩層的時(shí)候,如果其中一層調(diào)用了setImageResource()方法,另一側(cè)會(huì)莫名其妙的變回到初始位置,由于我也是菜鳥(niǎo)不是很了解其中具體的原因,大概可能就是因?yàn)閟etImageResource()方法會(huì)重新初始化下另一個(gè)p_w_picpathview吧,總之用RelativeLayout.LayoutParams 是比較穩(wěn)妥的方法。

這樣運(yùn)行之后,界面一開(kāi)始沒(méi)有指示層,直到顯示出需要的界面后,指示層才出現(xiàn),指示層會(huì)在需要解釋的功能按鈕旁邊起到指示的作用,而解釋層則會(huì)覆蓋全部界面,當(dāng)點(diǎn)擊覆蓋全部界面的解釋層的時(shí)候,指示層改變位置,解釋層更換下一張解釋圖片,OK大功告成。

網(wǎng)頁(yè)名稱(chēng):Android實(shí)現(xiàn)透明指示層
網(wǎng)頁(yè)鏈接:http://muchs.cn/article42/gdeghc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、外貿(mào)網(wǎng)站建設(shè)App設(shè)計(jì)、面包屑導(dǎo)航、品牌網(wǎng)站建設(shè)網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)