App半透明指引(第一次進去app的新功能或者版本更新之後使用)
方法一.利用WindowManager(缺點:返回鍵onkeyDown()和dispatchKeyEvent()監聽不到):
// private ImageView img; // private WindowManager windowManager; // windowManager = getWindowManager(); // // // 動態初始化圖層 // img = new ImageView(this); // img.setLayoutParams(new LayoutParams( // android.view.ViewGroup.LayoutParams.MATCH_PARENT, // android.view.ViewGroup.LayoutParams.MATCH_PARENT)); // img.setScaleType(ScaleType.FIT_XY); // img.setImageResource(R.drawable.aa); // // // 設定LayoutParams引數 // LayoutParams params = new WindowManager.LayoutParams(); // // 設定顯示的型別,TYPE_PHONE指的是來電話的時候會被覆蓋,其他時候會在最前端,顯示位置在stateBar下面,其他更多的值請查閱文件 // params.type = WindowManager.LayoutParams.TYPE_PHONE; // // 設定顯示格式 // params.format = PixelFormat.RGBA_8888; // // 設定對齊方式 // params.gravity = Gravity.LEFT | Gravity.TOP; // // 設定寬高 // params.width = MobileApplication.dm.widthPixels; // params.height = MobileApplication.dm.heightPixels; // // // 新增到當前的視窗上 // windowManager.addView(img, params); // // // 點選圖層之後,將圖層移除 // img.setOnClickListener(new OnClickListener() { // // @Override // public void onClick(View arg0) { // windowManager.removeView(img); // } // });
方法二(缺點:返回鍵onkeyDown()和dispatchKeyEvent()可以監聽到)--使用單個:
android:id="@+id/posting_id"
private LinearLayout posting_id; posting_id=(LinearLayout) findViewById(R.id.posting_id); private LinearLayout posting_id; private FrameLayout frameLayout; private ImageView guideImage; // private boolean isRemove=false; ViewParent viewParent=posting_id.getParent(); if(viewParent instanceof FrameLayout){ frameLayout = (FrameLayout)viewParent; guideImage = new ImageView(this); FrameLayout.LayoutParams params = new FrameLayout.LayoutParams( ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT); guideImage.setLayoutParams(params); guideImage.setScaleType(ScaleType.FIT_XY); guideImage.setImageResource(R.drawable.aa); frameLayout.addView(guideImage);//新增引導圖片 guideImage.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { frameLayout.removeView(guideImage); } }); } }
方法三PopupWindow (缺點:整個activity全部載入完成之後,PopupWindow才可以覆蓋上,頁面要延遲一些時間,才可以使用PopupWindow):
------------------------------------------------------------------------------------// private PopupWindow mPopWin; // private LinearLayout layouts; // layouts = (LinearLayout) LayoutInflater.from(PostingActivity.this).inflate(R.layout.posting_fade, null); // mPopWin = new PopupWindow(layouts, MobileApplication.dm.widthPixels, MobileApplication.dm.heightPixels, true); // mPopWin.setBackgroundDrawable(new BitmapDrawable()); // mPopWin.showAsDropDown(posting_home_txt_select, 5, 1); // mPopWin.update(); // mPopWin.setOutsideTouchable(true);
/**
* 獲取當前版本
*/
public void getCurVersion(){
try {
myversion = getPackageManager().getPackageInfo(getPackageName(), 0).versionName;
my_version.setText("版本"+myversion);
} catch (NameNotFoundException e) {
e.printStackTrace();
}
}
------------------------------------------------------------------------------------dispatchKeyEven()t防止二次執行:
防止二次執行:
// @Override
// public boolean dispatchKeyEvent(KeyEvent event) {
// System.out.println("9--------2:"+"0");
// if (event.getKeyCode() == KeyEvent.KEYCODE_BACK && event.getAction() != KeyEvent.ACTION_UP) {
// System.out.println("9--------2:"+"1");
// if(isRemove==false){
// isRemove=true;
// System.out.println("9--------2:"+"2");
// frameLayout.removeView(guideImage);
// }else{
// System.out.println("9--------2:"+"3");
// finish();
//
// }
// return true;
// }
// return super.dispatchKeyEvent(event);
// }
-------------------------------
動畫:
// Animation anim = AnimationUtils.loadAnimation(PostingActivity.this,R.anim.fade_out);
// Animation anim = AnimationUtils.loadAnimation(PostingActivity.this,R.anim.fade_in);
// ((View) viewParent).startAnimation(anim);
-------------------------------
獲取高度:
// public static int getScreenHeight(Context context) {
// return ((WindowManager) context
// .getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay()
// .getHeight();
// }
-------------------------------
返回判斷:
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK && event.getAction() != KeyEvent.ACTION_UP) {
if(isRemove==false){
if(guideImage!=null){
frameLayout.removeView(guideImage);
isRemove=true;
}
}else{
if ((System.currentTimeMillis() - mExitTime) > 2000) { // 如果兩次按鍵時間間隔大於2000毫秒,則不退出
Toast.makeText(this, "再按一次退出程式", Toast.LENGTH_SHORT).show();
mExitTime = System.currentTimeMillis(); // 更新mExitTime
} else { // 否則退出程式
EMChatManager.getInstance().logout(new EMCallBack() {
@Override
public void onSuccess() {
finish();
}
@Override
public void onProgress(int progress, String status) {
}
@Override
public void onError(int code, String message) {
}
});
}
}
return true;
}
-------------------------------
以上有個問題就是,如果到指定控制元件,這個控制元件要全透明,其他的地方是半透明,而這個位置不好確定,還要連續的指引出來:
使用序列Sqquence,可以參考部落格如下,還有可執行的小案例:
具體部落格:http://blog.csdn.net/ysh06201418/article/details/49615899
相關推薦
App半透明指引(第一次進去app的新功能或者版本更新之後使用)
方法一.利用WindowManager(缺點:返回鍵onkeyDown()和dispatchKeyEvent()監聽不到): // private ImageView img; // private WindowManager windowManager; //
Android之ViewPager實現引導頁(第一次開啟App進入引導頁,第二次直接進入APP主頁面)...
有的App當你第一次開啟的是和常常會有引導頁來描述一些App資訊(功能,特點),當然也要做驗證,驗證第二次進入不進入引導頁,直接進入App,此部落格藉助ViewPager來實現引導頁, ViewPager類提供了多介面切換的新效果,是谷歌在3.0之後加入的新特性,所以需要引用
ubuntu 只有客人會話登錄(第一次深刻感受文件權限的威力)
也看 宿主機 系統 docker 自己 主機 不能 。。 天突 為了測試docker的掛載權限,把宿主機的/etc/passwd文件掛載到了虛機當中,進入虛機想看下能不能直接對我宿主機上的文件進行操作,把/etc/passwd刪掉了最後十行。。。結果宿主機上的/etc/pa
No module named 'MySQLdb'(第一次django下建立資料庫遷移,報錯)
執行環境:ubuntu14.04 python3.5.2 django1.8.17 第一次django下建立資料庫遷移 執行命令為: python manage.py makemigrations blog 報錯資訊: django.core.exc
軟工實踐學習(第一次)
hibernate 技術 lips html+css 兼容問題 內置 項目 pan tom 最近在上軟工實踐課程,課程需要我們用JAVA以及一系列框架(hibernate,spring等),服務器,數據庫,網頁制作等技術,做出一套前後端相連的客戶信息服務系統。 首先我們
Java學習筆記(第一次課)
stdio.h println 標準 ant 方法參數 ann 控制 大小寫 protect 1.簡單的Java語言模板 package inclass1_1; import java.io.*;//導入包(相當於c語言的#include<stdio.h>)
企業訂餐系統(第一次周總結)
實戰 拖延 產品設計 cno 前端學習 data- github上 odi 指點 第一次周總結 實習雖說從上周已開始,但由於定組員、分工、項目選擇等問題,上周的學習進度有點拖延。且因為分工暫時未定上周對需要了解的技術也都只是初步的了解,未進行系統的學習。上周日在劉老師和
爬小說(第一次編寫爬蟲)
prop txt apt quest log res port amp 下載 1 import requests 2 import re 3 html = ‘http://www.jingcaiyuedu.com/book/317834.html‘ 4 respo
軟件工程第一次作業(第一次思考這些問題)
經歷 mage 語言 png cnblogs 選擇 info 工程師 -m 無論你從什麽時候開始,重要的是開始後就不要停止。無論你從什麽時候結束,重要的是結束之後就不要悔恨。 你有多自律,就有多自由。 --- ?? 時間在過著的時候不覺得有多快,當你回頭看的時候過了快三年
weekend及反位數(第一次c++作業)
gpo 分享圖片 http inf com 第一次 png clas ima 總結:將endl打成了end1weekend及反位數(第一次c++作業)
ubuntu 只有客人會話登錄(第一次深刻感受文件權限的威力 )
功能 docke 是你 發現 物理 使用 結果 ubuntu 客人會話 為了測試docker的掛載權限,把宿主機的/etc/passwd文件掛載到了虛機當中,進入虛機想看下能不能直接對我宿主機上的文件進行操作,把/etc/passwd刪掉了最後十行。。。結果宿主機上的/et
c指針作業(第一次)
是什麽 array main 根據 使用 預算 高效率 一起 長度 1. 數據類型的本質是什麽? (從編譯器的角度考慮) 數據類型可理解為創建變量的模具:是固定內存大小的別名 數據類型的作用:編譯器預算對象(變量)分配的內存空間大小 註意:數據類型只是模具,編譯器並沒有分
iOS 之 判斷是否是第一次開啟app
/** App判斷第一次啟動的方法 */ NSString *key = @"isFirst"; BOOL isFirst = [[NSUserDefaults standardUserDefaults] boolForKey:key]; if (!isFir
javascript 表格增刪改查 排序不會(第一次寫部落格,求交流哈)
學習JS快1個月了,博主本人上的是培訓的,快考試了,補習下學過的 發下今晚寫的吧。。。 有大神看看我的這種程度,排序事件怎麼弄~~ <!DOCTYPE html><html lang="zh"><head> <
Android實現過渡動畫、引導頁 Android判斷是否第一次啟動App
最近參加比賽聯絡模擬題其中有一道題是: 結合上學期期末實訓整理的資料,加上網上博主的博文參考。再次整理一遍,以供以後參考。 這篇是基於Android自身的控制元件View做出的效果。 文章最後附上利用RXJAVA技術做成的引導頁。 首先是過渡動畫,因為它不論App是否第一次啟動都會顯
掃雷(第一次不能炸死及展開)
C語言小程式————掃雷 學習了一段時間的C語言,寫一個掃雷小遊戲練習一下! 大概思路是這樣的:1.列印地圖,2.埋雷,3,排雷,4.判斷遊戲結果。 首先列印地圖:在這裡用一個二維陣列來表示我們的地圖,在這裡我們建立兩個二維陣列,一個11 * 11用於埋雷和排雷,只有在遊戲結束後才對玩家
王思雨(第一次作業)
一.分支結構 7-1 計算存款利息 (10 分) 本題目要求計算存款利息,計算公式為interest=money×(1+rate)year−money,其中interest為存款到期時的利息(稅前),money是存款金額,year是存期,rate是年利率。 輸入格式:
尋找大富翁(25 分)絕對幫你AC型(第一次寫部落格)真·原創!
尋找大富翁(25 分) 胡潤研究院的調查顯示,截至2017年底,中國個人資產超過1億元的高淨值人群達15萬人。假設給出N個人的個人資產值,請快速找出資產排前M位的大富翁。 輸入格式: 輸入首先給出兩個正整數N(≤10^6 )和M(≤10),其中N為總人數,M為需要找出的大富翁
2018.10.5 Trie封裝(第一次寫Trie樹)
** 2018.10.5 ** 今天比賽打炸,想了一個不太正確的做法,然後hash不會寫,試著去寫Trie數,還作死地試著寫成資料結構,結構寫了一個上午 程式碼如下:(這是沒有封裝的) #include <iostream> #include <
aandroid 關於如何識別第一次進入app
SharedPreferences sp = getSharedPreferences("firstIn",MODE_PRIVATE); SharedPreferences.Editor editor