母親節檔期忙到不行.....腿和手默默發出無聲地顫抖抗議呀!!(餐飲業好可怕呀~~)...............遲來的更新m(_ _)m
面試題目:
試著做出 畫面有三個Button 亂數跑這三個Button
跑到的Button會有個 X , 當按下 X , X會消失 這時候會有個TextView紀錄案中多少次
這個做出來後
請延伸為9個按鈕 放入List裡面 將按鈕數據化 不可以使用switch去判斷
最開始三個不難做出來了,但延伸的問題讓我卡住,初學者的我來說 ,基本功沒很到位 ,稍稍做了功課後 實現了一下...
效果圖:
首先先分析 自己會需要什麼東東
1.TextView,GridLayout 用來放9個Button(這9個按鈕 我們會用動態產生出來),一個開始Button
2.不是IO或是費時的工作不要用Thread,用Handler給UI Thread執行
3.實現onClickListener
話不多說 直接實現看看
Layout:RelativeLayout
<ReliativeLayout
.......
.......省略......
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:text="次數"
android:id="@+id/count"
android:textSize="24dp"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:id="@+id/start"
android:text="start"
android:onClick="start"/>
<GridLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:columnCount="3"
android:rowCount="3"
android:id="@+id/gridlayout"/>
</RelativeLayout>
MainActivity:
public class MainActivity extends AppCompatActivity implements View.OnClickListener { private GridLayout gridLayout; private TextView textView; private Handler handler; private int counter = 0; private List<Button> list = new ArrayList<>(); @Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initButtons(); } /*初始化*/
public void initButtons() { textView = (TextView) findViewById(R.id.count); handler = new Handler(); gridLayout = (GridLayout) findViewById(R.id.gridlayout); /*動態加載Button*/
for (int i = 0; i < 9; i++) { Button button = new Button(this); button.setOnClickListener(this); /*將Button放入List裡*/
list.add(button); /*將List放入GridLayout*/
gridLayout.addView(button); } } /*啟動Runnable*/
public void Start(View view) { textView.setText("次數 :"); counter = 0; handler.post(x_random_runnable); handler.postDelayed(x_random_runnableStop, 10000); } private X_Random_Runnable x_random_runnable = new X_Random_Runnable(); private X_Random_RunnableStop x_random_runnableStop = new X_Random_RunnableStop(); /*實現onClickListener*/
@Override
public void onClick(View v) { /*判斷按下的Button是不是 X*/
if ("X".equals(((Button) v).getText().toString())) { ++counter; textView.setText("擊中" + counter + "次數"); initButtonSetText(); } } /*讓X消失*/
private void initButtonSetText() { for(int i=0;i<list.size();i++){ list.get(i).setText(""); } } /*實現Runnable 亂數跑 9個Button*/
private class X_Random_Runnable implements Runnable { @Override
public void run() { int index = (int) (Math.random() * list.size()); for (int i = 0; i < list.size(); i++) { if (i == index) { list.get(i).setText("X"); } else { list.get(i).setText(""); } } handler.postDelayed(this, 1500); } } /*停止Runnable*/
private class X_Random_RunnableStop implements Runnable { @Override
public void run() { handler.removeCallbacks(x_random_runnable); } } }
GitHub
https://github.com/Brian43/MyIntervewTest
No comments :
Post a Comment