デバッグ用は-alias androiddebugkeyですが、
リリース用が分からずはまりました。
keytool -exportcert -alias キーストアに登録したエイリアス -keystore keystore
| openssl sha1 -binary
| openssl base64
だそうです。
これで生成されたハッシュキーをfacebookの管理画面に登録すればok
2012年3月23日金曜日
2012年3月21日水曜日
[Android]TextViewタッチで表裏を裏返す方法
TextViewをタッチしたときに表と裏を切り替えるときの方法です。
アニメーションを使って裏返したように見せます。
レイアウトはFrameLayout または、RelativeLayoutに
TextView textCard1; // 表
TextView textCard2; // 裏
の2つを配置します。
裏となるtextCard2は表示しない(View.INVISIBLE or View.GONE)ようにしておきます。
タッチしたときに以下のようにアニメーションを設定します。
int h = textCard1.getHeight();
int w = textCard1.getWidth();
anim = new ScaleAnimation(1, 0, 1, 1, w/2, h/2);
anim.setDuration(500);
anim2 = new ScaleAnimation(0, 1, 1, 1, w/2, h/2);
anim2.setDuration(500);
if(viewMode) {
anim.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
textCard2.setVisibility(View.VISIBLE);
textCard1.setVisibility(View.INVISIBLE);
view.startAnimation(anim2);
}
});
view.startAnimation(anim);
} else {
anim.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
textCard1.setVisibility(View.VISIBLE);
textCard2.setVisibility(View.INVISIBLE);
view.startAnimation(anim2);
}
});
view.startAnimation(anim);
}
viewMmode = !viewMode;
ここから説明。
ScaleAnimationを使用しています。
ScaleAnimation(fromX, toX, fromY, toY, pivotX, pivotY)
anim は表示中のView(表)を消すアニメです。
anim = new ScaleAnimation(1, 0, 1, 1, w/2, h/2);
fromXは開始時のScaleサイズ(X方向)
toXは終了時のScaleサイズ(X方向)
1が等倍で、0で表示されません。
表示されているものをだんだん表示しなくする設定にしています。
pivotX / pivotYは中心点をどこに置くかです。
今回はViewの中心にしています。
anim2は逆に表示されていないView(裏側)を表示するアニメです。
anim2 = new ScaleAnimation(0, 1, 1, 1, w/2, h/2);
fromX / toXのみ変更しています。
0からだんだん表示する設定。
今回は横方向しか設定していないので、
縦方向に裏返すようにする場合はY軸に値を設定すればよいです。
2012年3月14日水曜日
[Android]コード上からTextViewの色設定すると文字消えてしまう
TextViewの背景や文字色をsetTextColor()で変更したときのお話し。
[間違いコード]
TextView textView = new TextView(this);
textView.setTextColor(0x123456);
このコードだと文字が表示されなくなります。
理由は、アルファ値が指定されていないので、0x00123456となっているからです。
アルファ値(00)のときは透明になってしまうので、見えなくなっている状態ですね。
表示したい場合は、
textView.setTextColor(0xFF123456);
のようにアルファ値を指定しましょう。[Android]ISW11HTでWebViewのUserAgentが違う??
ISW11HTで標準ブラウザとWebView使ったときとで、UserAgentが異なっていました。
標準ブラウザ:
Mozilla/5.0 (Linux; U; Android 2.3.4; ja-jp; ISW11HT Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
Mozilla/5.0 (Linux; U; Android 2.3.4; ja-jp; PC36100 Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
赤色にしたところが違う。
PC36100は海外で販売されてるHTC EVO 4Gのことです。
日本製にカスタマイズしたときに、
WebView(WebKit)のUserAgent参照先が変わってないのかな。と想像。
国産端末はこういうことはないと思うけど、
ほかの海外端末ではこういうことってあるんだろうか?
ちょっとした罠だな。
2012年3月13日火曜日
[Android][ヘルプ]ImageViewのColorFilter後の画像の取得方法
ImgeViewにsetColorFilter()で画像にフィルターかけることができます。
ここ↓参照。
Android ColorFilter を使う
http://y-anz-m.blogspot.com/2011/04/androidcolorfilter.html
フィルターかけた後の画像を取得できないかと思ったのですが、
よく分からず・・・。
getDrawable()
や
getDrawableChache()
でBitmap取得できますが、フィルター前のものしか取得できず。
何かよい方法はないものか。
ここ↓参照。
Android ColorFilter を使う
http://y-anz-m.blogspot.com/2011/04/androidcolorfilter.html
フィルターかけた後の画像を取得できないかと思ったのですが、
よく分からず・・・。
getDrawable()
や
getDrawableChache()
でBitmap取得できますが、フィルター前のものしか取得できず。
何かよい方法はないものか。
2012年3月9日金曜日
[Android]HomeWidgetのクリックイベントが効かない!?
こんなウィジェットを作ってました。
・一定期間ごとに画像が切り替わる
・ウィジェットをタッチしたら、メインのアプリが起動する
画像の更新はサービス起動し、一定時間が経過したら、
ウィジェットに対してメッセージをブロードキャストします。
ウィジェットはメッセージを受信したら、画像を更新します。
ウィジェットを配置直後はタッチが効いていたのに、
しばらくするとタッチできない状態に。
なんで?
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
super.onUpdate(context, appWidgetManager, appWidgetIds);
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_image);
Intent intent = new Intent(context, SplashActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
// イベント設定
remoteViews.setOnClickPendingIntent(R.id.widgetClock, pendingIntent);
ComponentName widget = new ComponentName(context, WidgetImage.class);
appWidgetManager.updateAppWidget(widget, views);
}
// 画像更新 updateImage()
ComponentName thisWidget = new ComponentName(context, WidgetImage.class);
AppWidgetManager manager = AppWidgetManager.getInstance(context);
remoteViews.setImageViewBitmap(R.id.widgetImage, bitmap);
manager.updateAppWidget(thisWidget, remoteViews);
原因は画像の更新だけ行っていて、
クリックイベントを毎回設定していなかったから。
Viewを毎回生成し直すイメージなのか。
・一定期間ごとに画像が切り替わる
・ウィジェットをタッチしたら、メインのアプリが起動する
画像の更新はサービス起動し、一定時間が経過したら、
ウィジェットに対してメッセージをブロードキャストします。
ウィジェットはメッセージを受信したら、画像を更新します。
ウィジェットを配置直後はタッチが効いていたのに、
しばらくするとタッチできない状態に。
なんで?
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
super.onUpdate(context, appWidgetManager, appWidgetIds);
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_image);
Intent intent = new Intent(context, SplashActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
// イベント設定
remoteViews.setOnClickPendingIntent(R.id.widgetClock, pendingIntent);
ComponentName widget = new ComponentName(context, WidgetImage.class);
appWidgetManager.updateAppWidget(widget, views);
}
// 画像更新 updateImage()
ComponentName thisWidget = new ComponentName(context, WidgetImage.class);
AppWidgetManager manager = AppWidgetManager.getInstance(context);
remoteViews.setImageViewBitmap(R.id.widgetImage, bitmap);
manager.updateAppWidget(thisWidget, remoteViews);
原因は画像の更新だけ行っていて、
クリックイベントを毎回設定していなかったから。
Viewを毎回生成し直すイメージなのか。
[Android]ウィジェットの画像が更新されない
定期的にURLから取得した画像を表示するウィジェット作りました。
が、
更新される画像と更新されない画像があり、問題に・・・。
ソース抜粋
ComponentName thisWidget = new ComponentName(context, WidgetImage.class);
AppWidgetManager manager = AppWidgetManager.getInstance(context);
remoteViews.setBitmap(R.id.widgetImage, "setImageBitmap", mBitmap); // 画像をセットする
manager.updateAppWidget(thisWidget, remoteViews);
更新されない原因としては以下があるみたい。
・アルファがのっている画像だとダメ
・画像サイズが大きいとダメ
アルファがのっている画像はオプションで指定して対処
bitmap = BitmapFactory.decodeStream(is);
↓
Options opt = new Options();
opt.inPreferredConfig = Config.RGB_565;
bitmap = BitmapFactory.decodeStream(is,null,opt);
画像サイズが大きいとダメは画像を1/2にして対処
opt.inSampleSize = 2;
が、
更新される画像と更新されない画像があり、問題に・・・。
ソース抜粋
ComponentName thisWidget = new ComponentName(context, WidgetImage.class);
AppWidgetManager manager = AppWidgetManager.getInstance(context);
remoteViews.setBitmap(R.id.widgetImage, "setImageBitmap", mBitmap); // 画像をセットする
manager.updateAppWidget(thisWidget, remoteViews);
更新されない原因としては以下があるみたい。
・アルファがのっている画像だとダメ
・画像サイズが大きいとダメ
アルファがのっている画像はオプションで指定して対処
bitmap = BitmapFactory.decodeStream(is);
↓
Options opt = new Options();
opt.inPreferredConfig = Config.RGB_565;
bitmap = BitmapFactory.decodeStream(is,null,opt);
画像サイズが大きいとダメは画像を1/2にして対処
opt.inSampleSize = 2;
今回の画像はある程度決まったサイズ(480 x 800)だったので、解決できた気がします。
表示されるときと表示されないときの際は、
bitmap.getRowBytes()
で取得した値が960だとダメで、
480とかだと大丈夫なような感じでした。
根拠ないです。
HTC EVOだと特に対処しなくても更新されてるのに、
Gallaxy Tabだと更新されない。
この差がなんなのかが謎で、はまりました
登録:
投稿 (Atom)