我正在尝试构建一个函数,如果页面被长按,则颜色方案将在应用程序的每个页面上变为黑白。如果长时间单击页面或其他页面,则更改应还原。这是我的样本。如果您想查看更具体的代码,请告诉我们。
View sigView;
View rootView;
View tunerView;
public boolean pm;
public SharedPreferences sharedPreferences;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
sigView = inflater.inflate(R.layout.time_sig, container,false);
rootView=inflater.inflate(R.layout.activity_metronome,container);
tunerView=inflater.inflate(R.layout.activity_tuner,container);
final TextView tvTempo=(TextView) rootView.findViewById(R.id.metro_disp);
final TextView NumView = (TextView) sigView.findViewById(R.id.Sig_Num);
final TextView tv_note=(TextView) tunerView.findViewById(R.id.tv_note);
final ImageView time_sig_bar= ImageView)sigView.findViewById(R.id.time_sig_bar);
//**Lots more lines just like above for other elements
time_sig_bar.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
if (!pm) {
rootView.setBackgroundColor(Color.BLACK);
//**Code to run
pm=true;
sharedPreferences.edit().putBoolean("pm",pm).apply();
} else{
rootView.setBackgroundColor(Color.TRANSPARENT);
//**More code to run
pm=false;
sharedPreferences.edit().putBoolean("pm",pm).apply();
}
//**code is copied for other elements to respond to longclick
我将此代码复制并粘贴到其他页面(稍作修改)。在其他页面之一上,该页面上的元素会发生变化,但不会更改其他页面上的元素。此外,我不知道如何设置它,以便颜色将从另一页更改回来。我有什么想法我做错了吗?谢谢你的帮助。
答案 0 :(得分:0)
可能有一个新类,用于保存视图的状态数据。如果长时间点击则为真,否则为假。然后你可以将longlick上的状态设置为当前状态
的状态