Java super.onCreate(savedInstanceState); setContentView(R.layout.activity\u exposure\u calculator); //将变量连接到布局 shutterSpinner=(Spinner)findViewById(R.id.shutterSpinner); evSpinner=(Spinner)findviewbyd(R.id.evSpinner); shutterValues=getResources().getStringArray( R.阵列(u阵列); evValues=getResources().getStringArray(R.array.ev_数组); calcButton=(按钮)findViewById(R.id.calcBT); resultTextView=(TextView)findViewById(R.id.resultTV); addItemsOnSpinner(); addListenerOnButton(); } 私有void addListenerOnButton(){ setOnClickListener(新的OnClickListener(){ @凌驾 公共void onClick(视图v){ int resultID=calculateexposure(); //检查结果是否太大 if(resultID1min”); } } }); } 受保护的整数暴露(){ 长shutterID=shutterSpinner.getSelectedItemId(); long evID=evSpinner.getSelectedItemId(); 返回(int)(shutterID+evID); } 专用void addItemsOnSpinner(){ ArrayAdapter shutterAdapter=新的ArrayAdapter(此, android.R.layout.simple_微调器_项,ShutterValue); 百叶窗适配器 .setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项); shutterSpinner.setAdapter(shutterAdapter); ArrayAdapter evAdapter=新的ArrayAdapter(此, android.R.layout.simple_微调器_项,evValues); evAdapter.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项); evSpinner.setAdapter(evAdapter); } }
我还更改了布局中的一些内容(主要是ID),将其发布为完整的内容Java super.onCreate(savedInstanceState); setContentView(R.layout.activity\u exposure\u calculator); //将变量连接到布局 shutterSpinner=(Spinner)findViewById(R.id.shutterSpinner); evSpinner=(Spinner)findviewbyd(R.id.evSpinner); shutterValues=getResources().getStringArray( R.阵列(u阵列); evValues=getResources().getStringArray(R.array.ev_数组); calcButton=(按钮)findViewById(R.id.calcBT); resultTextView=(TextView)findViewById(R.id.resultTV); addItemsOnSpinner(); addListenerOnButton(); } 私有void addListenerOnButton(){ setOnClickListener(新的OnClickListener(){ @凌驾 公共void onClick(视图v){ int resultID=calculateexposure(); //检查结果是否太大 if(resultID1min”); } } }); } 受保护的整数暴露(){ 长shutterID=shutterSpinner.getSelectedItemId(); long evID=evSpinner.getSelectedItemId(); 返回(int)(shutterID+evID); } 专用void addItemsOnSpinner(){ ArrayAdapter shutterAdapter=新的ArrayAdapter(此, android.R.layout.simple_微调器_项,ShutterValue); 百叶窗适配器 .setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项); shutterSpinner.setAdapter(shutterAdapter); ArrayAdapter evAdapter=新的ArrayAdapter(此, android.R.layout.simple_微调器_项,evValues); evAdapter.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项); evSpinner.setAdapter(evAdapter); } },java,android,Java,Android,我还更改了布局中的一些内容(主要是ID),将其发布为完整的内容 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/LinearLayout1" android:layout_width="match_parent" android
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:background="@color/grey"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".ExpCalc" >
<LinearLayout
android:id="@+id/LinearLayout02"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:padding="5dp" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="Current Shutter Speed:"
android:textAppearance="?android:attr/textAppearanceMedium" />
<Spinner
android:id="@+id/shutterSpinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp" />
</LinearLayout>
<LinearLayout
android:id="@+id/LinearLayout04"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal"
android:padding="5dp" >
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="EV Adjustment:"
android:textAppearance="?android:attr/textAppearanceMedium" />
<Spinner
android:id="@+id/evSpinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:gravity="right"
android:padding="10dp" />
</LinearLayout>
<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="2dp"
android:text="(+6 = 6-stop ND Filter)"
android:textAppearance="?android:attr/textAppearanceSmall" />
<Button
android:id="@+id/calcBT"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:padding="5dp"
android:text="Calculate Equivelent Exposure" />
<TextView
android:id="@+id/resultTV"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:padding="40dp"
android:textSize="35sp"
/>
</LinearLayout>
我不想提供完整的代码来复制,因为如果你是为了学校的项目而这样做的,我宁愿在我们的帮助下帮助你找到答案 这里有一个非常简单的解决方案: 因为您只需要这些精确值,所以可以在字符串数组中递增计数器。此解决方案仅在存在明确的最大快门速度时有效
String[] shutterSpeedValues={"1/4000", "1/2000", etc. }
然后可以设置第一个微调器的微调器适配器以使用此数组
对于第二个微调器,只需执行相同的操作,但将[0]映射到0,[1]映射到+1,以此类推
因此,你最终会:
shutterSpeedValues[]
eVValues[]
当用户按下“计算”按钮时,获取微调器中选定值的项目ID。例如,你最终会得到
shutterSpeedItemId="3"
evValueItemId="4"
这将对应于选择“1/500”和“+4”的用户
现在你要做的是:
int eqExposureItemId = shutterSpeedItemId+evValueItemId;
String eqExposure = shutterSpeedValues[eqExposureItemId];
mySolutionTextView.setText(eqExposure);
4+3=7-->1/30
您仍然需要的是两个微调器中的高值解决方案(不要获得BoundsError阵列)。有一些修复方法,但是首先尝试让它像这样工作
编辑:下面是此解决方案的完整代码
活动
package com.yallatschikowski.exposurecalculator;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.TextView;
public class ExposureCalculatorActivity extends Activity {
Spinner shutterSpinner;
Spinner evSpinner;
String[] shutterValues;
String[] evValues;
Button calcButton;
TextView resultTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_exposure_calculator);
// connect the variables to the layout
shutterSpinner = (Spinner) findViewById(R.id.shutterSpinner);
evSpinner = (Spinner) findViewById(R.id.evSpinner);
shutterValues = getResources().getStringArray(
R.array.shutterspeeds_array);
evValues = getResources().getStringArray(R.array.ev_array);
calcButton = (Button) findViewById(R.id.calcBT);
resultTextView = (TextView) findViewById(R.id.resultTV);
addItemsOnSpinner();
addListenerOnButton();
}
private void addListenerOnButton() {
calcButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
int resultID = calculatExposure();
// check if the resultID is too big
if (resultID < shutterValues.length) {
resultTextView.setText(shutterValues[resultID]);
} else {
resultTextView.setText("Value > 1min");
}
}
});
}
protected int calculatExposure() {
long shutterID = shutterSpinner.getSelectedItemId();
long evID = evSpinner.getSelectedItemId();
return (int) (shutterID + evID);
}
private void addItemsOnSpinner() {
ArrayAdapter<String> shutterAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, shutterValues);
shutterAdapter
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
shutterSpinner.setAdapter(shutterAdapter);
ArrayAdapter<String> evAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, evValues);
evAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
evSpinner.setAdapter(evAdapter);
}
}
package com.yallatschikowski.exposurecalculator;
导入android.app.Activity;
导入android.os.Bundle;
导入android.view.view;
导入android.view.view.OnClickListener;
导入android.widget.ArrayAdapter;
导入android.widget.Button;
导入android.widget.Spinner;
导入android.widget.TextView;
公开类ExposureCalculatorActivity扩展活动{
旋转器;旋转器;
微调器;
字符串[]值;
字符串[]值;
按钮calcButton;
TextView结果TextView;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u exposure\u calculator);
//将变量连接到布局
shutterSpinner=(Spinner)findViewById(R.id.shutterSpinner);
evSpinner=(Spinner)findviewbyd(R.id.evSpinner);
shutterValues=getResources().getStringArray(
R.阵列(u阵列);
evValues=getResources().getStringArray(R.array.ev_数组);
calcButton=(按钮)findViewById(R.id.calcBT);
resultTextView=(TextView)findViewById(R.id.resultTV);
addItemsOnSpinner();
addListenerOnButton();
}
私有void addListenerOnButton(){
setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
int resultID=calculateexposure();
//检查结果是否太大
if(resultID1min”);
}
}
});
}
受保护的整数暴露(){
长shutterID=shutterSpinner.getSelectedItemId();
long evID=evSpinner.getSelectedItemId();
返回(int)(shutterID+evID);
}
专用void addItemsOnSpinner(){
ArrayAdapter shutterAdapter=新的ArrayAdapter(此,
android.R.layout.simple_微调器_项,ShutterValue);
百叶窗适配器
.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
shutterSpinner.setAdapter(shutterAdapter);
ArrayAdapter evAdapter=新的ArrayAdapter(此,
android.R.layout.simple_微调器_项,evValues);
evAdapter.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
evSpinner.setAdapter(evAdapter);
}
}
我还更改了布局中的一些内容(主要是ID),将其发布为完整的内容
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:background="@color/grey"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".ExpCalc" >
<LinearLayout
android:id="@+id/LinearLayout02"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:padding="5dp" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="Current Shutter Speed:"
android:textAppearance="?android:attr/textAppearanceMedium" />
<Spinner
android:id="@+id/shutterSpinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp" />
</LinearLayout>
<LinearLayout
android:id="@+id/LinearLayout04"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal"
android:padding="5dp" >
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="EV Adjustment:"
android:textAppearance="?android:attr/textAppearanceMedium" />
<Spinner
android:id="@+id/evSpinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:gravity="right"
android:padding="10dp" />
</LinearLayout>
<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="2dp"
android:text="(+6 = 6-stop ND Filter)"
android:textAppearance="?android:attr/textAppearanceSmall" />
<Button
android:id="@+id/calcBT"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:padding="5dp"
android:text="Calculate Equivelent Exposure" />
<TextView
android:id="@+id/resultTV"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:padding="40dp"
android:textSize="35sp"
/>
</LinearLayout>
shutterSpeedItemId="3"
evValueItemId="4"
int eqExposureItemId = shutterSpeedItemId+evValueItemId;
String eqExposure = shutterSpeedValues[eqExposureItemId];
mySolutionTextView.setText(eqExposure);
package com.yallatschikowski.exposurecalculator;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.TextView;
public class ExposureCalculatorActivity extends Activity {
Spinner shutterSpinner;
Spinner evSpinner;
String[] shutterValues;
String[] evValues;
Button calcButton;
TextView resultTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_exposure_calculator);
// connect the variables to the layout
shutterSpinner = (Spinner) findViewById(R.id.shutterSpinner);
evSpinner = (Spinner) findViewById(R.id.evSpinner);
shutterValues = getResources().getStringArray(
R.array.shutterspeeds_array);
evValues = getResources().getStringArray(R.array.ev_array);
calcButton = (Button) findViewById(R.id.calcBT);
resultTextView = (TextView) findViewById(R.id.resultTV);
addItemsOnSpinner();
addListenerOnButton();
}
private void addListenerOnButton() {
calcButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
int resultID = calculatExposure();
// check if the resultID is too big
if (resultID < shutterValues.length) {
resultTextView.setText(shutterValues[resultID]);
} else {
resultTextView.setText("Value > 1min");
}
}
});
}
protected int calculatExposure() {
long shutterID = shutterSpinner.getSelectedItemId();
long evID = evSpinner.getSelectedItemId();
return (int) (shutterID + evID);
}
private void addItemsOnSpinner() {
ArrayAdapter<String> shutterAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, shutterValues);
shutterAdapter
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
shutterSpinner.setAdapter(shutterAdapter);
ArrayAdapter<String> evAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, evValues);
evAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
evSpinner.setAdapter(evAdapter);
}
}
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:background="@color/grey"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".ExpCalc" >
<LinearLayout
android:id="@+id/LinearLayout02"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:padding="5dp" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="Current Shutter Speed:"
android:textAppearance="?android:attr/textAppearanceMedium" />
<Spinner
android:id="@+id/shutterSpinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp" />
</LinearLayout>
<LinearLayout
android:id="@+id/LinearLayout04"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal"
android:padding="5dp" >
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="EV Adjustment:"
android:textAppearance="?android:attr/textAppearanceMedium" />
<Spinner
android:id="@+id/evSpinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:gravity="right"
android:padding="10dp" />
</LinearLayout>
<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="2dp"
android:text="(+6 = 6-stop ND Filter)"
android:textAppearance="?android:attr/textAppearanceSmall" />
<Button
android:id="@+id/calcBT"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:padding="5dp"
android:text="Calculate Equivelent Exposure" />
<TextView
android:id="@+id/resultTV"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:padding="40dp"
android:textSize="35sp"
/>
</LinearLayout>