BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / mobile-terminal-at / #13772同步于 2014/5/21
该镜像源已超过 30 天没有更新,可能在源站已被删除。
MobileTerminalAT机器人发帖

求纠正代码习惯...没想到这么短就挑出了这么多毛病

icyfox
2014/5/21镜像同步48 回复
嗯。。。贴一段短代码 public class MainActivity extends Activity { private TextView score; public int max = 100; private int now = 0; private Handler handler; private View bg; int[] red = {235, 235, 93}; int[] green = {70, 193, 216}; int[] blue = {70, 44, 99}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); bg = (View)findViewById(R.id.bg); score = (TextView)findViewById(R.id.textView1); handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); score.setText(now+""); int r,g,b; if (now < 60){ r = (int) ((red[1] - red[0]) * ((float)now/60f)) + red[0]; g = (int) ((green[1] - green[0]) * ((float)now/60f)) + green[0]; b = (int) ((blue[1] - blue[0]) * ((float)now/60f)) + blue[0]; } else{ r = (int) ((red[2] - red[1]) * ((float)(now - 60f) /100f)) + red[1]; g = (int) ((green[2] - green[1]) * ((float)(now - 60f)/100f)) + green[1]; b = (int) ((blue[2] - blue[1]) * ((float)(now - 60f)/100f)) + blue[1]; } Log.v("Color", r + " " + g + " " + b); bg.setBackgroundColor(Color.rgb(r, g, b)); } }; new Adding().start(); } class Adding extends Thread{ @Override public void run() { super.run(); while (now < max){ try { sleep(30); } catch (InterruptedException e) { e.printStackTrace(); } now = now + new Random().nextInt(2) + 1; handler.obtainMessage(now).sendToTarget(); } } } 这个实现了一个动态改变数字和背景颜色的功能。 话说new 这个handler一般是在什么位置做? 我这样的写法就是会导致onCreate()特别的大 还有就是有别的什么问题没有?颜色处理那块是否还可以精简?
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
wht机器人#1 · 2014/5/21
bd 【 在 icyfox (熊爸) 的大作中提到: 】 : 嗯。。。贴一段短代码 : [code=java] : public class MainActivity extends Activity { : ................... 通过『我邮2.0』发布
apocalypse机器人#2 · 2014/5/21
好腻嗨 = = 我也要学安卓 嗯 嗯
handspeaker机器人#3 · 2014/5/21
我一般写在handler声明的地方,不过也是很大,如果想看着舒服&稍微高大上一点,自己写个MyHandler类,然后继承Handler,在MyHandler.java里面写,如何?
icyfox机器人#4 · 2014/5/21
但是只用了一次啊... 【 在 handspeaker (bear‘s CC|7ger) 的大作中提到: 】 : 我一般写在handler声明的地方,不过也是很大,如果想看着舒服&稍微高大上一点,自己写个MyHandler类,然后继承Handler,在MyHandler.java里面写,如何?
ccyingzi2009机器人#5 · 2014/5/21
import java.util.Random; import android.app.Activity; import android.graphics.Color; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.Log; import android.view.View; import android.widget.TextView; public class MainActivity extends Activity { private TextView score; public int max = 100; private int now = 0; private View bg; int[] red = {235, 235, 93}; int[] green = {70, 193, 216}; int[] blue = {70, 44, 99}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); bg = (View)findViewById(R.id.bg); score = (TextView)findViewById(R.id.textView1); new Adding().start(); } class Adding extends Thread{ @Override public void run() { super.run(); while (now < max){ try { sleep(30); } catch (InterruptedException e) { e.printStackTrace(); } now = now + new Random().nextInt(2) + 1; handler.obtainMessage(now).sendToTarget(); } } } private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); score.setText(now+""); int r,g,b; if (now < 60){ r = (int) ((red[1] - red[0]) * ((float)now/60f)) + red[0]; g = (int) ((green[1] - green[0]) * ((float)now/60f)) + green[0]; b = (int) ((blue[1] - blue[0]) * ((float)now/60f)) + blue[0]; } else{ r = (int) ((red[2] - red[1]) * ((float)(now - 60f) /100f)) + red[1]; g = (int) ((green[2] - green[1]) * ((float)(now - 60f)/100f)) + green[1]; b = (int) ((blue[2] - blue[1]) * ((float)(now - 60f)/100f)) + blue[1]; } Log.v("Color", r + " " + g + " " + b); bg.setBackgroundColor(Color.rgb(r, g, b)); } }; }
ccyingzi2009机器人#6 · 2014/5/21
import java.util.Random; import android.app.Activity; import android.graphics.Color; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.Log; import android.view.View; import android.widget.TextView; public class MainActivity extends Activity { private TextView score; public int max = 100; private int now = 0; private mHandler handler; private View bg; int[] red = {235, 235, 93}; int[] green = {70, 193, 216}; int[] blue = {70, 44, 99}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); bg = (View)findViewById(R.id.bg); score = (TextView)findViewById(R.id.textView1); new Adding().start(); } class Adding extends Thread{ @Override public void run() { super.run(); while (now < max){ try { sleep(30); } catch (InterruptedException e) { e.printStackTrace(); } now = now + new Random().nextInt(2) + 1; handler.obtainMessage(now).sendToTarget(); } } } private class mHandler extends Handler{ @Override public void handleMessage(Message msg) { super.handleMessage(msg); score.setText(now+""); int r,g,b; if (now < 60){ r = (int) ((red[1] - red[0]) * ((float)now/60f)) + red[0]; g = (int) ((green[1] - green[0]) * ((float)now/60f)) + green[0]; b = (int) ((blue[1] - blue[0]) * ((float)now/60f)) + blue[0]; } else{ r = (int) ((red[2] - red[1]) * ((float)(now - 60f) /100f)) + red[1]; g = (int) ((green[2] - green[1]) * ((float)(now - 60f)/100f)) + green[1]; b = (int) ((blue[2] - blue[1]) * ((float)(now - 60f)/100f)) + blue[1]; } Log.v("Color", r + " " + g + " " + b); bg.setBackgroundColor(Color.rgb(r, g, b)); } }; }
ccyingzi2009机器人#7 · 2014/5/21
这两个你觉得靠谱吗?
icyfox机器人#8 · 2014/5/21
上面这一种 算是在声明的时候直接定义了吧? 感觉这个会不会好一点 class 其实都一样吧 但是感觉为了个用一次的东西建个class.. 【 在 ccyingzi2009 (影子) 的大作中提到: 】 : 这两个你觉得靠谱吗?
lq5机器人#9 · 2014/5/21
不能把所有的handler抽离出来放在单独的包里面吗?