valjapan / GitHubClient

0 stars 0 forks source link

質問issue #2

Closed omuomugin closed 7 years ago

omuomugin commented 7 years ago

2016 1/22 日曜スクールでの質問相談issue

omuomugin commented 7 years ago

@yukiyuki961 ここに質問なげていって!!

valjapan commented 7 years ago

@omuomugin

  1. `class MainActivity : AppCompatActivity() { private var listAdapter: ArticleAdapter by Delegates.notNull()

    private Animation mAnimation; ↑java部分 private var mAnimation: Animation by Delegates.notNull()` Delegatesの.の後ろ、選択肢どれ選んだらいいかわからないです

  2. mAnimation = AnimationUtils.loadAnimation(context, R.anim.item_enter_anim); ↑java部分 mAnimation = AnimationUtils.loadAnimation(findViewById(R.anim.item_enter_anim)) どう変えたらいいかわからないです、必要なのがContextで探してるのがView?

valjapan commented 7 years ago

参考サイト http://qiita.com/taisho/items/efdc04099ced5692dd1c

omuomugin commented 7 years ago

@yukiyuki961

1

private var mAnimation: Animation by Delegates.notNull() Delegates.notNull()以外ほぼ使わない。 kotlinはnullがないから代わりに入れてる感じ。

valjapan commented 7 years ago

1< 了解です

omuomugin commented 7 years ago

2

mAnimation = AnimationUtils.loadAnimation(this, R.anim.item_enter_anim)

これで大丈夫

これは、1個目の引数にcontext(画面の情報)を渡してして、2番目の引数にアニメーションを指定する感じ。

valjapan commented 7 years ago

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の中身に入れればいいか、どっちでしょうか

valjapan commented 7 years ago

2< R.のRでエラー吐いてます Unresolved reference: R とのことです

omuomugin commented 7 years ago

これは、まず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>

にする。

omuomugin commented 7 years ago

Unresolved reference: Rはclean projectか再起動で直るはず。 kotlinの文法エラーじゃなくて、単純にandroid studioのエラー!

valjapan commented 7 years ago

androidstudioのエラー、改善されないです

omuomugin commented 7 years ago

それはね、もう再起動とかして粘るしかないんだよねえ笑

valjapan commented 7 years ago

` 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に変換してもらえないですか それ参考にして勉強したいんで

omuomugin commented 7 years ago

@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
        }
    }
}

ひとまずはこんな感じかな

valjapan commented 7 years ago

` class ViewHolder(view: View) { internal var textView: TextView

    init {
        textView = view.findViewById(R.id.item_textview) as TextView
    }
}`

ここのinitの中身って何書けばいいですか? このアプリの場合ここの書き換えはどうすればいいかわかんないです

omuomugin commented 7 years ago

initっていうのは、コンストラクタで初期化するものと同じ! その例では、textViewがリストの中身にあるからそう書いてるのよ。

今回だとリストに何を入れるかによると思う。

valjapan commented 7 years ago

Listの中にはcontent_article_viewで書いたstringが入る予定です

omuomugin commented 7 years ago

だったら、単純に同じようにで大丈夫!

valjapan commented 7 years ago

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();
}

} `

ここもお願いします

valjapan commented 7 years ago

ちなみに他の部分のエラーは一掃してきましたb

omuomugin commented 7 years ago

@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();
}
}
valjapan commented 7 years ago

public void startAnimation(Animation animation) { animation.setStartTime(Animation.START_ON_FIRST_FRAME); setAnimation(animation); invalidateParentCaches(); invalidate(true); } 上のとこCode扱いになってなかったんでこの部分もー

omuomugin commented 7 years ago
public startAnimation(animation : Animation) {
animation.setStartTime(Animation.START_ON_FIRST_FRAME); 
setAnimation(animation); 
invalidateParentCaches(); 
invalidate(true); 
}
omuomugin commented 7 years ago

これでいいんじゃない?インデントできなかった笑