セールのお知らせ – Quick電話帳

Quick電話帳のAndroid Wearライセンスが現在セールで半額です!

もしよろしければおためしください〜

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

グループ内に存在する電話帳の件数を表示できるオプションを追加しました
Android Wearでデフォルト電話番号へアクセスしやすくしました
Android Wearのアイコンサイズを調整しました
50音順で「ろ」が検索に引っかからない不具合を修正しました
その他レイアウトの調整を行いました

Quick電話帳Ver12.1公開しました

デザイン面での細かな調整を行いました。

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

変更内容は下記のとおりです。

WearAppでより多くの連絡先情報にアクセスできるようになりました。
Material Designへの対応を実施しました。
一部のレイアウトを調整しています。

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件以上連絡先を登録しようとすると有料になります!!

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