這次重灌系統之後(沒有灌win8,因為有些案子還是win32的案子,64位元的交給內部的win server 2012 64 bit VM)
所有GUI中有關的動畫元素都會變慢,連firefox的頁籤出現消失也一樣
這問題,就算是重灌了driver還是一樣
OK,答案是出在機碼上面
請到
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced
加上一個機碼「DesktopLivePreviewHoverTime」
資料型態是DoubleWord,值看你怎麼給(我是給Decimal 100)
設定完之後重開機就可以看到效果了
2013年9月30日 星期一
2013年9月14日 星期六
android: 在ScrollView->relativelayout中的背景圖無法延伸涵蓋整個大螢幕!?
layout:
=================================
<ScrollView xmlns:....
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scaleType="fitXY"
android:background="@drawable/welcome_bg"
android:gravity="fill_vertical|fill_horizontal">
這時只差一個屬性就可以了:
=================================
<ScrollView xmlns:....
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fillViewport="true">
...
....其他不必改
=================================
<ScrollView xmlns:....
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scaleType="fitXY"
android:background="@drawable/welcome_bg"
android:gravity="fill_vertical|fill_horizontal">
....
....
...
</RelativeLayout>
</ScrowView>
=================================
在手機上沒這問題,在大平版上就會出現穿迷你裙的窘態這時只差一個屬性就可以了:
=================================
<ScrollView xmlns:....
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fillViewport="true">
...
....其他不必改
.....
================================2013年9月12日 星期四
android : 回上一頁之外還要求其再執行create函數
有時在查詢結果頁後,帶到明細去修改再回去時,你會發現查詢結果頁還是之前暫存的狀態
(因為只是執行resume...那類的activity函數),如何解決這問題?
除了在原先的明細修改中用了 this.finish(); 回上一頁之外,
還是要用到intent 的串頁方式
參考如下:
=================================================
class QueryResultList extends Activity{
void gotoDetail(){
intent it....
startActivity(it);
}
}
class DetailItemEditor extends Activity{
...
...
....
void back(){
//回上一頁
Intent itBack2List=new Intent();
//把以下的串接放在intent queue的最上面,別把目前的activity放上去,
//不然在QueryResultList 頁的「回上頁」又會跑到目前的activity了.
itBack2List.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
itBack2List.setClass(查詢條件頁.ctx4Back ,
QueryResultList.class);
((Activity)me).finish();
startActivity(itBack2List);
}
}
=======================================
這樣,在DetailItemEditor 執行back時,就會重新執行create動作了
加油囉!!
(因為只是執行resume...那類的activity函數),如何解決這問題?
除了在原先的明細修改中用了 this.finish(); 回上一頁之外,
還是要用到intent 的串頁方式
參考如下:
=================================================
class QueryResultList extends Activity{
void gotoDetail(){
intent it....
startActivity(it);
}
}
class DetailItemEditor extends Activity{
...
...
....
void back(){
//回上一頁
Intent itBack2List=new Intent();
//把以下的串接放在intent queue的最上面,別把目前的activity放上去,
//不然在QueryResultList 頁的「回上頁」又會跑到目前的activity了.
itBack2List.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
itBack2List.setClass(查詢條件頁.ctx4Back ,
QueryResultList.class);
((Activity)me).finish();
startActivity(itBack2List);
}
=======================================
這樣,在DetailItemEditor 執行back時,就會重新執行create動作了
加油囉!!
2013年9月4日 星期三
Android : repeat (hold) button
原文出處:
http://stackoverflow.com/questions/7938516/continuously-increase-integer-value-as-the-button-is-pressed
為了怕被移除,先抄個備份吧:
============================================
private boolean mAutoIncrement = false;
private boolean mAutoDecrement = false;
public int mValue;
private Handler repeatUpdateHandler = new Handler();
EditText txtQty;
class RptUpdater implements Runnable {
public void run() {
if( mAutoIncrement ){
increment();
repeatUpdateHandler.postDelayed( new RptUpdater(), 100 );
} else if( mAutoDecrement ){
decrement();
repeatUpdateHandler.postDelayed( new RptUpdater(), 100 );
}
}
}
public void decrement(){
if(mValue==0)return;
mValue--;
txtQty.setText( ""+mValue );
}
public void increment(){
mValue++;
txtQty.setText( ""+mValue );
}
@Override protected void onCreate(Bundle savedInstanceState) {
...
...
....
http://stackoverflow.com/questions/7938516/continuously-increase-integer-value-as-the-button-is-pressed
為了怕被移除,先抄個備份吧:
============================================
private boolean mAutoIncrement = false;
private boolean mAutoDecrement = false;
public int mValue;
private Handler repeatUpdateHandler = new Handler();
EditText txtQty;
class RptUpdater implements Runnable {
public void run() {
if( mAutoIncrement ){
increment();
repeatUpdateHandler.postDelayed( new RptUpdater(), 100 );
} else if( mAutoDecrement ){
decrement();
repeatUpdateHandler.postDelayed( new RptUpdater(), 100 );
}
}
}
public void decrement(){
if(mValue==0)return;
mValue--;
txtQty.setText( ""+mValue );
}
public void increment(){
mValue++;
txtQty.setText( ""+mValue );
}
@Override protected void onCreate(Bundle savedInstanceState) {
...
...
....
txtQty=(EditText)findViewById(id.txtProdQtyInDialog);
mValue=prod2Proc.orderQty;
txtQty.setText(""+mValue);
Button btnQtyAdd=(Button)findViewById(id.btnQtyPlus);
Button btnQtyMinus=(Button)findViewById(id.btnQtyMinus);
btnQtyAdd.setOnClickListener(
new OnClickListener(){
@Override
public void onClick(View arg0) {
increment();
}
}
);
btnQtyAdd.setOnLongClickListener(
new View.OnLongClickListener(){
public boolean onLongClick(View arg0) {
mAutoIncrement = true;
repeatUpdateHandler.post( new RptUpdater() );
return false;
}
}
);
btnQtyAdd.setOnTouchListener( new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if( (event.getAction()==MotionEvent.ACTION_UP || event.getAction()==MotionEvent.ACTION_CANCEL)
&& mAutoIncrement ){
mAutoIncrement = false;
}
return false;
}
});
btnQtyMinus.setOnClickListener(
new OnClickListener(){
@Override
public void onClick(View arg0) {
decrement();
}
}
);
btnQtyMinus.setOnLongClickListener(
new View.OnLongClickListener(){
public boolean onLongClick(View arg0) {
mAutoDecrement = true;
repeatUpdateHandler.post( new RptUpdater() );
return false;
}
}
);
btnQtyMinus.setOnTouchListener( new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if( (event.getAction()==MotionEvent.ACTION_UP || event.getAction()==MotionEvent.ACTION_CANCEL)
&& mAutoDecrement ){
mAutoDecrement = false;
}
return false;
}
});
...
...
...
==============================================================
以上,加油
2013年9月1日 星期日
Properties.System.Media.Duration.Value在 server 2012會成為null !?
在製做多媒體後台時,一定會使用到一些媒體相關的函數
最常在問的就是該媒體播放時間多久(以供廣告成本推估參考)
c#在這方面是有範例
參考這個連結
總之就是下載WindowsAPICodePack,呼叫shell
--------------------------------------------------------------
最常在問的就是該媒體播放時間多久(以供廣告成本推估參考)
c#在這方面是有範例
參考這個連結
總之就是下載WindowsAPICodePack,呼叫shell
--------------------------------------------------------------
ShellFile so = ShellFile.FromFilePath(file);
double nanoseconds = 0;
Double
.TryParse(so.Properties.System.Media.Duration.Value.ToString(), nanoseconds );
注意這裡取得的 nanoseconds 的單位是 100 nanoseconds,所以要換算成秒的話,可以將變數 nanoseconds 乘以 0.0001 再除以 1000。
--------------------------------------------------------------
--------------------------------------------------------------
很簡單吧,那我幹嘛寫這篇?
以上是在win7 ultimate ,vs2012跑的,很正常,也很稱職
問題來了,如果是在windows server 2012 的vs2012呢?
對不起,Properties.System.Media.Duration.Value.ToString()會出現null
最基本的原因是server 2012預設是不灌media player的,而上述的函數靠的就是呼叫shell去叫media player功能.
所以在server 2012要執行這程式時,請安裝media player
怎麼裝?參考這連結
裝完就沒事嗎?代志不是這樣就收工去領便當了
請把之前下載的WindowsAPICodePack的「source\WindowsAPICodePack」下的「WindowsAPICodePack」方案(solution)下的core、shell等專案(project)的建置目標都改為64位元平台,build一下,再把你之前要呼叫Properties.System.Media.Duration.Value的專案參考到你build出來的dll(Microsoft.WindowsAPICodePack.Shell.dll & Microsoft.WindowsAPICodePack.dll)
以上,加油了
訂閱:
文章 (Atom)