Closed omuomugin closed 7 years ago
@yukiyuki961 ここに質問なげていって!!
@omuomugin
`class MainActivity : AppCompatActivity() { private var listAdapter: ArticleAdapter by Delegates.notNull()
private Animation mAnimation;
↑java部分
private var mAnimation: Animation by Delegates.notNull()`
Delegatesの.の後ろ、選択肢どれ選んだらいいかわからないです
mAnimation = AnimationUtils.loadAnimation(context, R.anim.item_enter_anim);
↑java部分
mAnimation = AnimationUtils.loadAnimation(findViewById(R.anim.item_enter_anim))
どう変えたらいいかわからないです、必要なのがContextで探してるのがView?
@yukiyuki961
private var mAnimation: Animation by Delegates.notNull() Delegates.notNull()以外ほぼ使わない。 kotlinはnullがないから代わりに入れてる感じ。
1< 了解です
mAnimation = AnimationUtils.loadAnimation(this, R.anim.item_enter_anim)
これで大丈夫
これは、1個目の引数にcontext(画面の情報)を渡してして、2番目の引数にアニメーションを指定する感じ。
item_enter_anim.xmlの部分 `<set xmlns:android="http://schemas.android.com/apk/res/android" android:duration="750" android:fillAfter="true" android:fillEnabled="true" android:interpolator="@android:anim/accelerate_interpolator">
<scale
android:fromXScale="0%"
android:fromYScale="0%"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="100%"
android:toYScale="100%" />
<alpha
android:fromAlpha="0"
android:toAlpha="1" />
` とのことですが、これはxmlファイルにこれだけなのか、Layoutの中身に入れればいいか、どっちでしょうか
2< R.のRでエラー吐いてます Unresolved reference: R とのことです
これは、まずres/animっていうフォルダを作って、 item_enter_anim.xmlを新しいファイルとしてそこに入れる。
そのファイルの中身は、
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="750"
android:fillAfter="true"
android:fillEnabled="true"
android:interpolator="@android:anim/accelerate_interpolator">
<scale
android:fromXScale="0%"
android:fromYScale="0%"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="100%"
android:toYScale="100%" />
<alpha
android:fromAlpha="0"
android:toAlpha="1" />
</set>
にする。
Unresolved reference: Rはclean projectか再起動で直るはず。 kotlinの文法エラーじゃなくて、単純にandroid studioのエラー!
androidstudioのエラー、改善されないです
それはね、もう再起動とかして粘るしかないんだよねえ笑
` public class BeautifulListViewAdapter extends BaseAdapter {
private Context mContext;
private LayoutInflater mInflater;
private List<String> mList;
public BeautifulListViewAdapter(Context context, List<String> list) {
mContext = context;
mInflater = LayoutInflater.from(context);
mList = list;
}
@Override
public int getCount() {
return mList.size();
}
@Override
public Object getItem(int position) {
return mList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.listview_item_row, parent, false);
holder = new ViewHolder(convertView);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.textView.setText(getItem(position).toString());
convertView.startAnimation(AnimationUtils.loadAnimation(mContext, R.anim.item_enter_anim));
return convertView;
}
public static class ViewHolder {
TextView textView;
public ViewHolder(View view) {
textView = (TextView) view.findViewById(R.id.item_textview);
}
}
}` もし余裕できたらこれKotlinに変換してもらえないですか それ参考にして勉強したいんで
@yukiyuki961
class BeautifulListViewAdapter(private val mContext: Context, private val mList: List<String>) : BaseAdapter() {
private val mInflater: LayoutInflater
init {
mInflater = LayoutInflater.from(mContext)
}
override fun getCount(): Int {
return mList.size
}
override fun getItem(position: Int): Any {
return mList[position]
}
override fun getItemId(position: Int): Long {
return position.toLong()
}
override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
var convertView = convertView
val holder: ViewHolder
if (convertView == null) {
convertView = mInflater.inflate(R.layout.listview_item_row, parent, false)
holder = ViewHolder(convertView)
convertView!!.tag = holder
} else {
holder = convertView.tag as ViewHolder
}
holder.textView.text = getItem(position).toString()
convertView.startAnimation(AnimationUtils.loadAnimation(mContext, R.anim.item_enter_anim))
return convertView
}
class ViewHolder(view: View) {
internal var textView: TextView
init {
textView = view.findViewById(R.id.item_textview) as TextView
}
}
}
ひとまずはこんな感じかな
` class ViewHolder(view: View) { internal var textView: TextView
init {
textView = view.findViewById(R.id.item_textview) as TextView
}
}`
ここのinitの中身って何書けばいいですか? このアプリの場合ここの書き換えはどうすればいいかわかんないです
initっていうのは、コンストラクタで初期化するものと同じ! その例では、textViewがリストの中身にあるからそう書いてるのよ。
今回だとリストに何を入れるかによると思う。
Listの中にはcontent_article_viewで書いたstringが入る予定です
だったら、単純に同じようにで大丈夫!
public void startAnimation(Animation animation) {
animation.setStartTime(Animation.START_ON_FIRST_FRAME);
setAnimation(animation);
invalidateParentCaches();
invalidate(true);
}
`
` public void setAnimation(Animation animation) { mCurrentAnimation = animation;
if (animation != null) {
// If the screen is off assume the animation start time is now instead of
// the next frame we draw. Keeping the START_ON_FIRST_FRAME start time
// would cause the animation to start when the screen turns back on
if (mAttachInfo != null && mAttachInfo.mDisplayState == Display.STATE_OFF
&& animation.getStartTime() == Animation.START_ON_FIRST_FRAME) {
animation.setStartTime(AnimationUtils.currentAnimationTimeMillis());
}
animation.reset();
}
} `
ここもお願いします
ちなみに他の部分のエラーは一掃してきましたb
@yukiyuki961
これでどうかな?
public setAnimation(animation : Animation) {
mCurrentAnimation = animation;
// If the screen is off assume the animation start time is now instead of
// the next frame we draw. Keeping the START_ON_FIRST_FRAME start time
// would cause the animation to start when the screen turns back on
if (mAttachInfo.mDisplayState == Display.STATE_OFF && animation.getStartTime() == Animation.START_ON_FIRST_FRAME) {
animation.setStartTime(AnimationUtils.currentAnimationTimeMillis());
}
animation.reset();
}
}
public void startAnimation(Animation animation) { animation.setStartTime(Animation.START_ON_FIRST_FRAME); setAnimation(animation); invalidateParentCaches(); invalidate(true); }
上のとこCode扱いになってなかったんでこの部分もー
public startAnimation(animation : Animation) {
animation.setStartTime(Animation.START_ON_FIRST_FRAME);
setAnimation(animation);
invalidateParentCaches();
invalidate(true);
}
これでいいんじゃない?インデントできなかった笑
2016 1/22 日曜スクールでの質問相談issue