Android wearエミュレータ(Round)表示がおかしい件

Mac OS X Yosemite?(前から?)AndroidWearのRound形式でエミュレータ作ると残念なことになります。

スクリーンショット 2014-10-31 7.41.53

いやいや。こういうの期待してないです。

期待している表示はこっちのはずです。
スクリーンショット 2014-10-31 7.42.19

解消方法ですがエミュレータ作成時に、デフォルトチェックされているUse Host GPUのチェックを外しましょう。
スクリーンショット 2014-10-31 7.45.40

YosemiteにしたらAndroid emulatorのx86が起動しない

missing HAXMと言われ起動しなくなりました。

https://software.intel.com/en-us/android/articles/intel-hardware-accelerated-execution-manager

こちらから最新のHAXMをインストールすることで解消します

Android 5.0のRippleEffectを4.4以下で同じような動きで作ってみた

使う場合はいろいろなものを適正読み替えてくださいー。



public class RippleLinearLayout extends LinearLayoutCompat {

private static final int DURATION = 2000;
private static final int RIPPLE_ALPHA = 150;
private static final int TOUCH_ALPHA = 50;
private static final int ACTIVATE_ALPHA = 150;

@Setter
private float mDownX;
@Setter
private float mDownY;

private float mRadius;

private Paint mPaint;
private boolean mIsActivatedAnimate = false;
private int mColor = Color.BLACK;
private int mActivateAlpha = ACTIVATE_ALPHA;
private int mDuration = DURATION;
private int mRippleAlpha = RIPPLE_ALPHA;

private boolean mPressed = false;
private boolean mActivated = false;
private AnimatorSet mAnimator;


private void init(Context context, AttributeSet attrs) {
mPaint = new Paint();
mPaint.setAlpha(mRippleAlpha);

mColor = getResources().getColor(R.color.ColorGray);

if (attrs != null) {
final TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.RippleView);
mRippleAlpha = a.getInteger(R.styleable.RippleView_rippleAlpha, RIPPLE_ALPHA);
mIsActivatedAnimate = a.getBoolean(R.styleable.RippleView_isActivateAnimate,false);
mDuration = a.getInteger(R.styleable.RippleView_rippleDuration, DURATION);
a.recycle();
}

}

/**
* コンストラクタ
*
* @param context コンテキスト
*/
public RippleLinearLayout(Context context) {
this(context, null);
setBackgroundResource(R.color.Transparent);
setOnTouchListener(new ontouchListener());
init(context, null);
}

/**
* コンストラクタ2
*
* @param context コンテキスト
* @param attrs アトリビュート
*/
public RippleLinearLayout(Context context, AttributeSet attrs) {
super(context, attrs);
if (!isInEditMode()) {
setBackgroundResource(R.color.Transparent);
setOnTouchListener(new ontouchListener());
init(context, attrs);
}
}

private class ontouchListener implements OnTouchListener {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
mDownX = event.getX();
mDownY = event.getY();
case MotionEvent.ACTION_UP:
break;
}
return false;
}
}

/**
* コンストラクタ3
*
* @param context コンテキスト
* @param attrs アトリビュート
*/
public RippleLinearLayout(Context context, AttributeSet attrs, int Defstyle) {
super(context, attrs, Defstyle);
setBackgroundResource(R.color.Transparent);
setOnTouchListener(new ontouchListener());
}

public void setRadius(final float radius) {
mRadius = radius;
if (mRadius > 0) {
RadialGradient radialGradient = new RadialGradient(
mDownX,
mDownY,
mRadius * 3,
mColor,
mColor,
Shader.TileMode.MIRROR
);
mPaint.setAlpha(mRippleAlpha);
mPaint.setShader(radialGradient);
}
invalidate();
}

@Override
public void setPressed(boolean pressed) {

if (pressed != mPressed) {
mPressed = pressed;
if (mPressed) {
mAnimator = new AnimatorSet();
ObjectAnimator animator1 = ObjectAnimator.ofFloat(RippleLinearLayout.this, “radius”, getWidth() / 10.0f, getWidth() * 3.0f);
animator1.setInterpolator(new AccelerateDecelerateInterpolator());
animator1.setDuration(mDuration);
mAnimator.playTogether(animator1);
mAnimator.start();
setBackgroundColor(Color.argb(TOUCH_ALPHA, Color.red(mColor), Color.green(mColor), Color.blue(mColor)));
} else {
if (mAnimator != null)
mAnimator.cancel();
setRadius(0);
// if(!mIsActivatedAnimate && !isActivated())
setBackgroundColor(getResources().getColor(R.color.Transparent));
}
}
if (!pressed) {

}

super.setPressed(pressed);
}

@Override
public void setActivated(boolean activated) {
super.setActivated(activated);

if (mActivated != activated) {
mActivated = activated;
if (activated) {
if (mIsActivatedAnimate)
setBackgroundColor(Color.argb(mActivateAlpha, Color.red(mColor), Color.green(mColor), Color.blue(mColor)));
} else {
setBackgroundColor(getResources().getColor(R.color.Transparent));
}
}
}

@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);

canvas.drawCircle(mDownX, mDownY, mRadius, mPaint);

}


}

Quick電話帳 10.2を公開しました

主にアイコン・レイアウトの変更等でマテリアルデザインの要素を取り入れています。

Quick電話帳 Ver10.0を公開しました

下記の機能が更新されています。

ウィジェットの画面が新しくなりました
電話用ショートカットが作成できるようになりました
(これに伴い起動時にダイアラー表示オプションは廃止しました)
カラー選択画面がより使いやすくなりました
アイコンカラーを変更しました
いくつかの不具合を修正しました

Quick電話帳がAndroid Wearに対応しました

β版でしかリリースしていませんがご紹介。

・登録
 Phoneから登録したい連絡先を選択してPush!
 Wearの方へ連絡先が登録されます。

・発信
 Wearに登録された電話番号がカードビューで表示されるので、それをタップして発信します。

え?結局電話を使わないと話できないじゃん!っていう事ですよね。

そうなんです!!

じゃぁどんな人たちが使うのかな?って話なんですが、

車でハンズフリーで話す人や、イヤホン(ヘッドセット機能付き)していて、電話を発信したい人が
使うんじゃないかなと思います。

まぁ想像なんですけどね。

便利そうだと思う人はちょっと使ってみてください。

あ。2件以上連絡先を登録しようとすると有料になります!!

Android WearでPhoneとWearを通信させるときに注意する事

メモ程度に。

 Android WearとPhone側との通信の為には
MessageAPIで通信する
  http://developer.android.com/reference/com/google/android/gms/wearable/MessageApi.html

  DataAPIで通信する
   http://developer.android.com/reference/com/google/android/gms/wearable/DataApi.html

だと思うのですが、ここでテストで作ったパッケージからうまく行かなかった点を書いておきます。

 全く通信が出来ていないように思える。
  Wearアプリのパッケージ名とPhoneアプリのパッケージ名は同一にしましょう。(署名一緒でも良い?)
  これ忘れてたら通信が全く出来ません。

 通信は出来ているようなのだが、onDataChangedイベントが発火されない
  DataAPIは通常DataApi.DataListenerのonDataChangedイベントで通知を受け取ります。
 
 でもなぜかこない。。。
  DataAPIは内容をキャッシュしており、変更があった場合に通知されます。
  ですので内容を変えないとイベントが発火されないのです。
 
結構はまったのでもし同じような人がいて参考になれば幸い

Quick電話帳 Ver9.0を公開しました

数日前から少しずつ公開はしていましたが本日すべてのユーザへ公開しました。

ユーザーインターフェイスを大きく変更しました。

Android Wearの端末が日本でも購入できるようです

早速 G watchを購入しましたが発送予定日が7/4との事で今ならそれほど待たずに手に入れられそうです。

GooglePlay

Youtube Play Ver2.2.0を公開しました

先月からの更新でYoutube Data API v3に対応して以下のことができるようになっています

検索フィルタが大量に増えました
ログインしたあとに後でみるやお気に入りの動画が選択できるようになりました
再生リストの動画が再生できるようになりました。
再生リストへの追加削除ができるようになりました。

また次のバージョンでは再生リスト自体の追加削除を追加します。

本アプリは動画の再生をYoutubeの埋め込み式で
再生しておりますので、少し使い勝手はほかのYoutube系のアプリに劣りますが
Youtubeでは動画を抽出して再生したりダウンロードしたりすることを規約で
明示的に禁止されているため、このような動作となっております。
今後も規約は遵守しながらアプリを更新していくので皆様も
よろしければ規約違反のアプリではなく本アプリをご利用ください

1 / 4112345...102030...最後 »