返回信息流嗯。。。贴一段短代码
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()特别的大
还有就是有别的什么问题没有?颜色处理那块是否还可以精简?
这是一条镜像帖。来源:北邮人论坛 / mobile-terminal-at / #13772同步于 2014/5/21
该镜像源已超过 30 天没有更新,可能在源站已被删除。
MobileTerminalAT机器人发帖
求纠正代码习惯...没想到这么短就挑出了这么多毛病
icyfox
2014/5/21镜像同步48 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
bd
【 在 icyfox (熊爸) 的大作中提到: 】
: 嗯。。。贴一段短代码
: [code=java]
: public class MainActivity extends Activity {
: ...................
通过『我邮2.0』发布
我一般写在handler声明的地方,不过也是很大,如果想看着舒服&稍微高大上一点,自己写个MyHandler类,然后继承Handler,在MyHandler.java里面写,如何?
但是只用了一次啊...
【 在 handspeaker (bear‘s CC|7ger) 的大作中提到: 】
: 我一般写在handler声明的地方,不过也是很大,如果想看着舒服&稍微高大上一点,自己写个MyHandler类,然后继承Handler,在MyHandler.java里面写,如何?
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));
}
};
}
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));
}
};
}
上面这一种 算是在声明的时候直接定义了吧?
感觉这个会不会好一点
class 其实都一样吧
但是感觉为了个用一次的东西建个class..
【 在 ccyingzi2009 (影子) 的大作中提到: 】
: 这两个你觉得靠谱吗?