[工作紀錄][AOSP-framework-Setting] 修改整個Setting.apk的style後 部份 Setting內的彈出視窗 沒有被修改到

2016年8月14日 星期日

前言:
由於Setting整個theme被修改為暗色系關係
彈出視窗卻沒有全部被修改到
如下圖 所以需要尋找原因並改正

閒言閒語:
目前看到的
大約兩種彈出視窗
1. AlertDialog
2. ListPreference


AlertDialog
ListPreference





[工作紀錄][AOSP-framework-SystemService] custom system service form andorid 5 to andorid 6

2016年8月3日 星期三

直接重點


沒寄錯的話 andorid 5 和 andorid 6 相比
LINUX/android/external/sepolicy/service_contexts
LINUX/android/frameworks/base/core/java/android/app/SystemServiceRegistry.java
這兩個有更動

[工作紀錄][AOSP-framework-SystemUI] keyguard 頁面下 下拉動畫的BUG

2016年7月24日 星期日

[工作紀錄][AOSP-framework-SystemUI] keyguard 頁面下,下拉無notification上彈且顯示 notification詳細資料的bug


BUG:
Aindroid 5.0~6.0 再有設定PING碼或其他鎖屏方式的情況下
再鎖屏頁面下往下拉 notify會上移並顯示notify詳細內容(可自行決定)
但手上裝置沒有


[轉貼]NDCG評量指標,滿清楚的解說文章

2014年7月23日 星期三

衡量指標編輯

衡量搜索引擎質量指標(DCG -- Discounted Cumulative Gain)
DCG的英文全稱是Discounted cumulative gain,它是一個衡量搜索引擎算法的指標。
搜索引擎一般採用PI(per item)的方式進行評測,簡單地說就是逐條對搜索結果進行分等級的打分。假設我們現在在Google上搜索一個詞,然後得到5個結果。我們對這些結果進行3個等級的區分:Good(好)、Fair(一般)、Bad(差),然後賦予他們分值分別為3、2、1,假定通過逐條打分後,得到這5個結果的分值分別為3、2 、1 、3、 2。
接下來我們來看看是怎麼計算DCG的
使用DCG這個統計方法有兩個前提:
1.在搜索結果頁面,越相關的結果排在越前面越好
2.在PI標註時,等級高的結果比等級低的結果好,即Good要比Fair好、Fair要比Bad好。
DCG這個概念是從Cumulative Gain這個概念發展起來的

[轉貼][C#]一段如何調用Button.Click事件的故事

2014年3月15日 星期六

[C#]一段如何調用Button.Click事件的故事


轉貼自 http://www.dotblogs.com.tw/chou/archive/2009/06/04/8666.aspx

一、前言
由於小朱與BillChung的啟發,想寫一個故事,讓大家瞭解如何調用 Button.Click 事件,而故事的好壞,由看戲的客官去評判,假如說的不好,請不要罵太兇,因為我只是個寫程式菜鳥,並不是說書的

[轉貼] C#中兩個Form窗口之間的傳值(父->子)(子->父)

2014年3月14日 星期五

C#中兩個Form窗口之間的傳值(父->子)(子->父)
[轉貼自]
http://blog.sina.com.cn/s/blog_62d120530100hyh7.html
http://blog.csdn.net/zdyueguanyun/article/details/8640052

首先定義兩個Form,一個為Form1,一個為Form2,其中Form1作為父窗口,Form2作為子窗口
1、父窗口傳值給子窗口
Form1中代碼:       
[csharp] view plaincopy
  1. public Form1()  
  2.         {  
  3.             InitializeComponent();  
  4.         }  
  5.   
  6.         private void button1_Click(object sender, EventArgs e)  
  7.         {  
  8.             Form2 lForm = new Form2();//實例化一個Form2窗口  
  9.             lForm.String1 = "傳值給子窗口Form2成功";//設置Form2中string1的值  
  10.             lForm.SetValue();//設置Form2中Label1的  
  11.             lForm.ShowDialog();  
  12.         }  

Form2中代碼:
[csharp] view plaincopy
  1. private string string1;  
  2.         public string String1  
  3.         {  
  4.             set  
  5.             {  
  6.                 string1 = value;  
  7.             }  
  8.         }  
  9.   
  10.         public void SetValue()  
  11.         {  
  12.             this.label1.Text = string1;  
  13.         }  
  14.   
  15.         public Form2()  
  16.         {  
  17.             InitializeComponent();  
  18.         }  
2、子窗口返回值給父窗口
Form1中代碼:
[csharp] view plaincopy
  1. public Form1()  
  2.         {  
  3.             InitializeComponent();  
  4.         }  
  5.   
  6.         private string strValue;  
  7.         public string StrValue  
  8.         {  
  9.             set  
  10.             {  
  11.                 strValue = value;  
  12.             }  
  13.         }  
  14.   
  15.         private void btnShowForm2_Click(object sender, EventArgs e)  
  16.         {  
  17.             Form2 lForm = new Form2();  
  18.             lForm.Owner = this;//重要的一步,主要是使Form2的Owner指針指向Form1  
  19.             lForm.ShowDialog();  
  20.             MessageBox.Show(strValue);//顯示返回的值  
  21.         }  
From2中代碼:
[csharp] view plaincopy
  1. public Form2()  
  2.         {  
  3.             InitializeComponent();  
  4.         }  
  5.   
  6.         private void btnClose_Click(object sender, EventArgs e)  
  7.         {  
  8.             Form1 lForm1 = (Form1)this.Owner;//把Form2的父窗口指針賦給lForm1  
  9.             lForm1.StrValue = "子窗口Form2返回數值成功";//使用父窗口指針賦值  
  10.             this.Close();  
  11.         }  

[轉貼][要仔細看] Suspend Process in C#

2014年3月8日 星期六

http://stackoverflow.com/questions/71257/suspend-process-in-c-sharp

 [Flags]
    public enum ThreadAccess : int
    {
      TERMINATE = (0x0001),
      SUSPEND_RESUME = (0x0002),
      GET_CONTEXT = (0x0008),
      SET_CONTEXT = (0x0010),
      SET_INFORMATION = (0x0020),
      QUERY_INFORMATION = (0x0040),
      SET_THREAD_TOKEN = (0x0080),
      IMPERSONATE = (0x0100),
      DIRECT_IMPERSONATION = (0x0200)
    }

    [DllImport("kernel32.dll")]
    static extern IntPtr OpenThread(ThreadAccess dwDesiredAccess, bool bInheritHandle, uint dwThreadId);
    [DllImport("kernel32.dll")]
    static extern uint SuspendThread(IntPtr hThread);
    [DllImport("kernel32.dll")]
    static extern int ResumeThread(IntPtr hThread);



    private void SuspendProcess(int PID)
    {
      Process proc = Process.GetProcessById(PID);

      if (proc.ProcessName == string.Empty)
        return;

      foreach (ProcessThread pT in proc.Threads)
      {
        IntPtr pOpenThread = OpenThread(ThreadAccess.SUSPEND_RESUME, false, (uint)pT.Id);

        if (pOpenThread == IntPtr.Zero)
        {
          break;
        }

        SuspendThread(pOpenThread);
      }
    }

    public void ResumeProcess(int PID)
    {
      Process proc = Process.GetProcessById(PID);

      if (proc.ProcessName == string.Empty)
        return;

      foreach (ProcessThread pT in proc.Threads)
      {
        IntPtr pOpenThread = OpenThread(ThreadAccess.SUSPEND_RESUME, false, (uint)pT.Id);

        if (pOpenThread == IntPtr.Zero)
        {
          break;
        }

        ResumeThread(pOpenThread);
      }
    }