と思われるでしょうが
6年物のCore2DuoのPCでがんばってる身としては、なるべく軽くて、枯れた環境でやっていたかったのです・・・
ADT 22.6.0(March 2014) Dependencies:
- Java 1.6 or higher is required.
- Eclipse Indigo (Version 3.7.2) or higher is required.
今日からEclipse Keplerでがんばりたいと思います
public static String getTwitterClass(Context context) { String twitterClass = null; PackageManager pm = context.getPackageManager(); String packagename = "com.twitter.android"; String class1 = "com.twitter.android.PostActivity"; String class2 = "com.twitter.applib.composer.TextFirstComposerActivity"; String class3 = "com.twitter.android.composer.TextFirstComposerActivity"; try { ActivityInfo[] activities = pm.getPackageInfo(packagename, PackageManager.GET_ACTIVITIES).activities; for(int i = 0; i < activities.length; i++) { if (activities[i].name.equals(class1)) { twitterClass = class1; break; } else if (activities[i].name.equals(class2)) { twitterClass = class2; break; } else if (activities[i].name.equals(class3)) { twitterClass = class3; break; } } } catch (PackageManager.NameNotFoundException e) { //Twitter is not install } return twitterClass ; }※Twitter バージョン5.8.0対応
public static void tweetFile1(Context context, String message) { Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("text/plain"); intent.putExtra(Intent.EXTRA_TEXT, message); ((Activity)context).startActivity(intent); }
public static void tweetFile2(Context context, String message) { String twitterClass = "com.twitter.android.composer.TextFirstComposerActivity"; try { Intent intent = new Intent(); intent.setAction(Intent.ACTION_SEND); intent.setType("text/plain"); intent.putExtra(Intent.EXTRA_TEXT, message); intent.setClassName("com.twitter.android", twitterClass); ((Activity)context).startActivity(intent); } catch (PackageManager.NameNotFoundException e) { //Toast("Not found com.twitter.android") } }
public static void tweetFile3(Context context, String message) { String url = "twitter://post?message=" + message; Intent intent = new Intent(Intent.ACTION_VIEW); intent.setType("text/plain"); intent.setData(Uri.parse(url)); ((Activity)context).startActivity(intent); }
public static void tweetFile4(Context context, String message) { String url = "http://twitter.com/share?text=" + message; Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); intent.setType("text/plain"); intent.setData(Uri.parse(url)); ((Activity)context).startActivity(intent); }
投稿方法 | 互換 クライ アント | 画像 投稿 | 備 考 |
---|---|---|---|
1.暗黙的Intent | ○ | ○ | Twitter関連アプリ以外もでる |
2.Package指定 | × | ○ | 公式Twitterクライアントのみでる |
3.URIスキーム指定 | △ | × | 互換クライアントはスキーム対応アプリのみ |
4.URL(HTTP)指定 | × | × | 公式クライアントがなくてもブラウザで投稿できる |
Paint paint = new Paint(); paint.setStyle(Style.STROKE); paint.setStrokeWidth(2f); paint.setColor(Color.BLACK); paint.setAntiAlias(true); paint.setPathEffect(new DashPathEffect(new float[]{ 2.0f, 2.0f }, 0)); canvas.drawLine(100, 100, 100, 200, paint);
int time; //残り時間 int rect; //ゲージの大きさのRect Bitmap gauge; //フルゲージ画像 Path clip = new Path(); clip.moveTo(rect.centerX(), rect.centerY()); clip.addArc(rect, 267 + ((60 - time) * 6), 360 - ((60 - time) * 6)); clip.lineTo(rect.centerX(), rect.centerY()); canvas.save(); canvas.clipPath(clip); gauge.draw(canvas); canvas.restore();このブログで以前、SurfaceViewで描画範囲を限定するでやった方法と同じですね
カテゴリ名 | 備考 | カテゴリ名 | 備考 |
---|---|---|---|
アクション | パズル | ||
アドベンチャー | ファミリー | ||
アーケード | ボード | ||
ウィジェット | 新カテゴリ | ライブ壁紙 | 新カテゴリ |
カジノ | レース | ||
カジュアル | ロールプレイング | ||
カード | 教育 | 新カテゴリ | |
シミュレーション | 言葉 | ||
ストラテジー | 雑学 | 旧トリビア | |
スポーツ | 音楽 |
Rect area = new Rect(100, 100, 400, 300); Random random =new Random(); int x = area.left + random.nextInt(area.width()); int y = area.top + random.nextInt(area.height());試しに1000個ほど生成して描画してみましょう
Rect area = new Rect(100, 100, 400, 300); canvas.drawRect(area, paint); Random random =new Random(); for (int i = 0; i < 1000; i++) { int x = area.left + random.nextInt(area.width()); int y = area.top + random.nextInt(area.height()); canvas.drawCircle(x, y, 3f, paint); }なんか
Random random =new Random(); Plot ring = new Plot(7500, 1882); for (int i = 0; i < 1000; i++) { //リングX座標+フリースローラインまでの距離(4.118m)+フリースローラインからスリーポイントラインの間(2.52m)の間のランダム値 Plot base = new Plot(ring.x + 4118 + ((2520 * random.nextInt(100)) / 100), ring.y); //削った10度+配置部分160°のランダム値 int angle = 10 + random.nextInt(160); //回転処理 Plot pos = Utl.rotate(angle, ring, base); //描画座標変換 pos = Court.getDPlot(pos); canvas.drawCircle(pos.x, pos.y, 3f, paint); }試しに1000個ほど生成して描画
public
void
shot(
double
speed,
double
vangle,
double
hangle)
//リングとの衝突判定関数 public static Plot hitRing(Plot prev, Plot move) { Plot ret = null; //大雑把な判定条件として落下方向への移動、移動のZ座標がリング高さをまたがっている if (move.z < prev.z && move.z - Ball.R <= RING_H && prev.z - (Ball.R / 2) > RING_H) { int r = (int)((((prev.z - Ball.R) - RING_H) * 100) / (prev.z - move.z)); //ボール下面がリング高さに来る位置取得 Plot pos = Utl.getPlotInLine(r, prev, move); //リング中央との距離取得 int d = Utl.getDistancePtoP(RING_CENTER, new Plot(pos.x, pos.y)); //リングに当たりそうな距離にあればさらに詳しく判定 if (d > (RING_R - Ball.R) && d <= RING_R + Ball.R) { float dagl = Utl.getRadians(Court.RING_CENTER, pos); int dx = (int)(Court.RING_CENTER.x + Court.RING_R * (Math.cos(dagl))); int dy = (int)(Court.RING_CENTER.y + Court.RING_R * (Math.sin(dagl))); int bw = Utl.getDistancePtoP(new Plot(dx, dy), new Plot(pos.x, pos.y)); int bz = (int)(Ball.R * Math.sin(Math.acos((double)(Ball.R - bw) / (double)Ball.R))); r = (int)(((prev.z - (pos.z - bz)) * 100) / (prev.z - move.z)); //実際にリングに当たる位置取得 pos = Utl.getPlotInLine(r, prev, move); //リング中央との距離取得 d = Utl.getDistancePtoP(Court.RING_CENTER, new Plot(pos.x, pos.y)); //取得した距離からリングに当たるかどうか判定 if (d > (Court.RING_R - Ball.R) && d <= Court.RING_R + Ball.R) { ret = new Plot(pos); } } } return ret; }こんな感じ
Plot hr = hitRing(prev, move); if (hr != null) { //法線ベクトル取得 float angle = Utl.getRadians(Court.RING_CENTER, hr); int dx = (int)(Court.RING_CENTER.x + Court.RING_R * (Math.cos(angle))); int dy = (int)(Court.RING_CENTER.y + Court.RING_R * (Math.sin(angle))); //衝突時の速度ベクトルと法線ベクトルの内積を計算 float ip = Utl.getInnerProduct(new Plot(xSpeed, ySpeed, zSpeed), new Plot(hr.x - dx, hr.y - dy, hr.z - Court.RING_H)); //内積が+のときは裏からの当たりなので処理しない if (ip < 0) { //速度ベクトルの跳ね返り後の速度を取得 Plot dv = getReflect(new Plot(xSpeed, ySpeed, zSpeed), new Plot(hr.x - dx, hr.y - dy, hr.z - Court.RING_H)); float dk = 0.6f; //反発係数dkを速度にかける xSpeed = (int)(dv.x * dk); ySpeed = (int)(dv.y * dk); zSpeed = (int)(dv.z * dk); //衝突後の経過時間を計算 int citv = (int)((interval * Utl.getDistancePtoP(hr, move)) / Utl.getDistancePtoP(prev, move)); //移動後の位置を変更速度から再計算 move.x = (int)(hr.x + ((xSpeed * citv) / 1000)); move.y = (int)(hr.y + ((ySpeed * citv) / 1000)); move.z = (int)(hr.z + ((zSpeed * citv) / 1000)); prev = new Plot(hr); } }こんな感じ、いろいろと処理がひどいですが見ないでやってください(良い子はまねしちゃダメ)